emu: when both key down and key up are generated on the same frame, skip the up until the next one
This commit is contained in:
parent
972d2a494b
commit
1e224079ed
|
@ -526,6 +526,7 @@ run(Uxn *u)
|
||||||
while(!devsystem->dat[0xf]) {
|
while(!devsystem->dat[0xf]) {
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
double elapsed, begin = 0;
|
double elapsed, begin = 0;
|
||||||
|
int ksym;
|
||||||
if(!BENCH)
|
if(!BENCH)
|
||||||
begin = SDL_GetPerformanceCounter();
|
begin = SDL_GetPerformanceCounter();
|
||||||
while(SDL_PollEvent(&event) != 0) {
|
while(SDL_PollEvent(&event) != 0) {
|
||||||
|
@ -544,6 +545,10 @@ run(Uxn *u)
|
||||||
doctrl(u, &event, event.type == SDL_KEYDOWN);
|
doctrl(u, &event, event.type == SDL_KEYDOWN);
|
||||||
uxn_eval(u, devctrl->vector);
|
uxn_eval(u, devctrl->vector);
|
||||||
devctrl->dat[3] = 0;
|
devctrl->dat[3] = 0;
|
||||||
|
|
||||||
|
ksym = event.key.keysym.sym;
|
||||||
|
if(SDL_PeepEvents(&event, 1, SDL_PEEKEVENT, SDL_KEYUP, SDL_KEYUP) == 1 && ksym == event.key.keysym.sym)
|
||||||
|
goto breakout;
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEWHEEL:
|
case SDL_MOUSEWHEEL:
|
||||||
case SDL_MOUSEBUTTONUP:
|
case SDL_MOUSEBUTTONUP:
|
||||||
|
@ -563,6 +568,7 @@ run(Uxn *u)
|
||||||
uxn_eval(u, peek16((devaudio0 + (event.type - audio0_event))->dat, 0));
|
uxn_eval(u, peek16((devaudio0 + (event.type - audio0_event))->dat, 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
breakout:
|
||||||
uxn_eval(u, devscreen->vector);
|
uxn_eval(u, devscreen->vector);
|
||||||
if(ppu.reqdraw || devsystem->dat[0xe])
|
if(ppu.reqdraw || devsystem->dat[0xe])
|
||||||
redraw(u);
|
redraw(u);
|
||||||
|
|
Loading…
Reference in New Issue