1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-04-27 21:23:19 +00:00

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++; frames++;
if(!outoffocus) { if(!outoffocus) {
drawscreen(); drawscreen();
need_refresh = false;
} }
lastframe = ticks; lastframe = ticks;
} }
@ -780,6 +781,8 @@ EX void mainloopiter() {
#endif #endif
} }
EX bool need_refresh;
EX void handle_event(SDL_Event& ev) { EX void handle_event(SDL_Event& ev) {
bool normal = cmode & sm::NORMAL; bool normal = cmode & sm::NORMAL;
DEBB(DF_GRAPH, ("got event type #%d\n", ev.type)); DEBB(DF_GRAPH, ("got event type #%d\n", ev.type));
@ -1012,6 +1015,15 @@ EX void handle_event(SDL_Event& ev) {
sym = 0; sym = 0;
} }
if(sym || uni) {
if(need_refresh) {
just_refreshing = true;
screens.back()();
just_refreshing = false;
}
need_refresh = true;
}
handlekey(sym, uni); handlekey(sym, uni);
} }
#endif #endif

View File

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