Browse code

emu: handle files dropped by loading it as a ROM

Sigrid Solveig Haflínudóttir authored on 16/12/2021 16:29:09
Showing 1 changed files
... ...
@@ -226,6 +226,7 @@ init(void)
226 226
 	SDL_CreateThread(stdin_handler, "stdin", NULL);
227 227
 	SDL_StartTextInput();
228 228
 	SDL_ShowCursor(SDL_DISABLE);
229
+	SDL_EventState(SDL_DROPFILE, SDL_ENABLE);
229 230
 	return 1;
230 231
 }
231 232
 
... ...
@@ -524,11 +525,16 @@ run(Uxn *u)
524 525
 	redraw(u);
525 526
 	while(!devsystem->dat[0xf]) {
526 527
 		SDL_Event event;
527
-		double elapsed, start = 0;
528
+		double elapsed, begin = 0;
528 529
 		if(!BENCH)
529
-			start = SDL_GetPerformanceCounter();
530
+			begin = SDL_GetPerformanceCounter();
530 531
 		while(SDL_PollEvent(&event) != 0) {
531 532
 			switch(event.type) {
533
+			case SDL_DROPFILE:
534
+				set_size(WIDTH, HEIGHT, 0);
535
+				start(u, event.drop.file);
536
+				SDL_free(event.drop.file);
537
+				break;
532 538
 			case SDL_QUIT:
533 539
 				return error("Run", "Quit.");
534 540
 			case SDL_TEXTINPUT:
... ...
@@ -561,7 +567,7 @@ run(Uxn *u)
561 567
 		if(ppu.reqdraw || devsystem->dat[0xe])
562 568
 			redraw(u);
563 569
 		if(!BENCH) {
564
-			elapsed = (SDL_GetPerformanceCounter() - start) / (double)SDL_GetPerformanceFrequency() * 1000.0f;
570
+			elapsed = (SDL_GetPerformanceCounter() - begin) / (double)SDL_GetPerformanceFrequency() * 1000.0f;
565 571
 			SDL_Delay(clamp(16.666f - elapsed, 0, 1000));
566 572
 		}
567 573
 	}