overlay: move init/free to the context of the render thread

This is done to allow overlays to make use of the renderer during
init/free.
This commit is contained in:
Geoffrey McRae
2022-05-26 00:40:13 +10:00
parent c737b12a3b
commit 8aa36144dc
6 changed files with 29 additions and 18 deletions

View File

@@ -201,6 +201,8 @@ static int renderThread(void * unused)
LG_LOCK_INIT(g_state.lgrLock);
app_initOverlays();
/* signal to other threads that the renderer is ready */
lgSignalEvent(e_startup);
@@ -322,6 +324,13 @@ static int renderThread(void * unused)
g_state.state = APP_STATE_SHUTDOWN;
if (g_state.overlays)
{
app_freeOverlays();
ll_free(g_state.overlays);
g_state.overlays = NULL;
}
lgTimerDestroy(tickTimer);
lgTimerDestroy(fpsTimer);
@@ -1125,8 +1134,6 @@ static int lg_run(void)
ImFontGlyphRangesBuilder_BuildRanges(rangeBuilder, &g_state.fontRange);
ImFontGlyphRangesBuilder_destroy(rangeBuilder);
app_initOverlays();
// initialize metrics ringbuffers
g_state.renderTimings = ringbuffer_new(256, sizeof(float));
g_state.uploadTimings = ringbuffer_new(256, sizeof(float));
@@ -1666,13 +1673,6 @@ static void lg_shutdown(void)
if (g_state.dsInitialized)
g_state.ds->free();
if (g_state.overlays)
{
app_freeOverlays();
ll_free(g_state.overlays);
g_state.overlays = NULL;
}
ivshmemClose(&g_state.shm);
renderQueue_free();