correct key buffering

This commit is contained in:
Zeno Rogue 2020-09-11 11:14:32 +02:00
parent 45ff7a4e10
commit b90df0d37b
2 changed files with 17 additions and 1 deletions

View File

@ -697,6 +697,7 @@ EX void mainloopiter() {
frames++;
if(!outoffocus) {
drawscreen();
need_refresh = false;
}
lastframe = ticks;
}
@ -779,7 +780,9 @@ EX void mainloopiter() {
if(joydir.d != -1) checkjoy();
#endif
}
EX bool need_refresh;
EX void handle_event(SDL_Event& ev) {
bool normal = cmode & sm::NORMAL;
DEBB(DF_GRAPH, ("got event type #%d\n", ev.type));
@ -1011,6 +1014,15 @@ EX void handle_event(SDL_Event& ev) {
nofps = !nofps;
sym = 0;
}
if(sym || uni) {
if(need_refresh) {
just_refreshing = true;
screens.back()();
just_refreshing = false;
}
need_refresh = true;
}
handlekey(sym, uni);
}

View File

@ -4938,8 +4938,12 @@ EX void drawfullmap() {
extern bool wclick;
#endif
EX bool just_refreshing;
EX void gamescreen(int _darken) {
if(just_refreshing) return;
if(subscreens::split([=] () {
calcparam();
compute_graphical_distance();