[client] main: alerts and overlay toggles should invalidate the window

This commit is contained in:
Geoffrey McRae 2021-08-01 18:04:43 +10:00
parent 17687fdea3
commit 2d74c93232
4 changed files with 19 additions and 10 deletions

View File

@ -509,11 +509,13 @@ void app_handleCloseEvent(void)
void app_handleRenderEvent(const uint64_t timeUs)
{
bool invalidate = false;
if (!g_state.escapeActive)
{
if (g_state.escapeHelp)
{
g_state.escapeHelp = false;
invalidate = true;
}
}
else
@ -521,8 +523,21 @@ void app_handleRenderEvent(const uint64_t timeUs)
if (!g_state.escapeHelp && timeUs - g_state.escapeTime > g_params.helpMenuDelayUs)
{
g_state.escapeHelp = true;
invalidate = true;
}
}
if (g_state.alertShow)
if (g_state.alertTimeout < timeUs)
{
g_state.alertShow = false;
free(g_state.alertMessage);
g_state.alertMessage = NULL;
invalidate = true;
}
if (invalidate)
app_invalidateWindow();
}
void app_setFullscreen(bool fs)
@ -601,6 +616,7 @@ void app_alert(LG_MsgAlert type, const char * fmt, ...)
g_state.alertTimeout = microtime() + ALERT_TIMEOUT;
g_state.alertType = type;
g_state.alertShow = true;
app_invalidateWindow();
}
KeybindHandle app_registerKeybind(int sc, KeybindFn callback, void * opaque, const char * description)

View File

@ -51,11 +51,13 @@ static void bind_video(int sc, void * opaque)
static void bind_showFPS(int sc, void * opaque)
{
g_state.showFPS = !g_state.showFPS;
app_invalidateWindow();
}
static void bind_showTiming(int sc, void * opaque)
{
g_state.showTiming = !g_state.showTiming;
app_invalidateWindow();
}
static void bind_rotate(int sc, void * opaque)

View File

@ -167,6 +167,7 @@ static int renderThread(void * unused)
while(g_state.state != APP_STATE_SHUTDOWN)
{
app_handleRenderEvent(microtime());
if (g_state.jitRender)
{
g_state.ds->waitFrame();
@ -255,8 +256,6 @@ static int renderThread(void * unused)
}
g_state.resizeDone = true;
}
app_handleRenderEvent(now);
}
g_state.state = APP_STATE_SHUTDOWN;

View File

@ -47,14 +47,6 @@ static int alert_render(void * udata, bool interactive, struct Rect * windowRect
if (!g_state.alertShow)
return 0;
if (g_state.alertTimeout < microtime())
{
g_state.alertShow = false;
free(g_state.alertMessage);
g_state.alertMessage = NULL;
return 0;
}
ImVec2 * screen = overlayGetScreenSize();
igSetNextWindowBgAlpha(0.8f);
igSetNextWindowPos((ImVec2) { screen->x / 2.0f, screen->y / 2.0f }, 0,