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