... | ... |
@@ -526,6 +526,7 @@ run(Uxn *u) |
526 | 526 |
while(!devsystem->dat[0xf]) { |
527 | 527 |
SDL_Event event; |
528 | 528 |
double elapsed, begin = 0; |
529 |
+ int ksym; |
|
529 | 530 |
if(!BENCH) |
530 | 531 |
begin = SDL_GetPerformanceCounter(); |
531 | 532 |
while(SDL_PollEvent(&event) != 0) { |
... | ... |
@@ -544,6 +545,10 @@ run(Uxn *u) |
544 | 545 |
doctrl(u, &event, event.type == SDL_KEYDOWN); |
545 | 546 |
uxn_eval(u, devctrl->vector); |
546 | 547 |
devctrl->dat[3] = 0; |
548 |
+ |
|
549 |
+ ksym = event.key.keysym.sym; |
|
550 |
+ if(SDL_PeepEvents(&event, 1, SDL_PEEKEVENT, SDL_KEYUP, SDL_KEYUP) == 1 && ksym == event.key.keysym.sym) |
|
551 |
+ goto breakout; |
|
547 | 552 |
break; |
548 | 553 |
case SDL_MOUSEWHEEL: |
549 | 554 |
case SDL_MOUSEBUTTONUP: |
... | ... |
@@ -563,6 +568,7 @@ run(Uxn *u) |
563 | 568 |
uxn_eval(u, peek16((devaudio0 + (event.type - audio0_event))->dat, 0)); |
564 | 569 |
} |
565 | 570 |
} |
571 |
+breakout: |
|
566 | 572 |
uxn_eval(u, devscreen->vector); |
567 | 573 |
if(ppu.reqdraw || devsystem->dat[0xe]) |
568 | 574 |
redraw(u); |