... | ... |
@@ -193,7 +193,6 @@ quit(void) |
193 | 193 |
gRenderer = NULL; |
194 | 194 |
SDL_DestroyWindow(gWindow); |
195 | 195 |
SDL_Quit(); |
196 |
- exit(0); |
|
197 | 196 |
} |
198 | 197 |
|
199 | 198 |
static int |
... | ... |
@@ -227,6 +226,7 @@ init(void) |
227 | 226 |
SDL_CreateThread(stdin_handler, "stdin", NULL); |
228 | 227 |
SDL_StartTextInput(); |
229 | 228 |
SDL_ShowCursor(SDL_DISABLE); |
229 |
+ SDL_EventState(SDL_DROPFILE, SDL_ENABLE); |
|
230 | 230 |
return 1; |
231 | 231 |
} |
232 | 232 |
|
... | ... |
@@ -489,7 +489,8 @@ doctrl(Uxn *u, SDL_Event *event, int z) |
489 | 489 |
case SDLK_F1: if(z) set_zoom(zoom > 2 ? 1 : zoom + 1); break; |
490 | 490 |
case SDLK_F2: if(z) devsystem->dat[0xe] = !devsystem->dat[0xe]; break; |
491 | 491 |
case SDLK_F3: if(z) capture_screen(); break; |
492 |
- case SDLK_F4: if(z) restart(u); break; |
|
492 |
+ case SDLK_AC_BACK: |
|
493 |
+ case SDLK_F4: if(z) restart(u); break; |
|
493 | 494 |
} |
494 | 495 |
/* clang-format on */ |
495 | 496 |
if(z) { |
... | ... |
@@ -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 |
} |