| ... | ... |
@@ -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 |
} |