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