[client] display: stop callbacks before state teardown
Some checks failed
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled

This commit is contained in:
Geoffrey McRae
2026-08-12 03:00:25 +10:00
parent ebc9d076ec
commit f1615aa333
3 changed files with 15 additions and 10 deletions

View File

@@ -3483,6 +3483,11 @@ static void lg_shutdown(void)
lgJoinThread(t_render, NULL);
}
// Stop external input callbacks before tearing down shared client state
evdev_stop();
if (g_state.ds && g_state.dsInitialized)
g_state.ds->shutdown();
fallbackStop();
if (t_cursorRepaint)
@@ -3498,9 +3503,6 @@ static void lg_shutdown(void)
}
LG_LOCK_FREE(l_cursorRepaint.lock);
// An evdev batch may call input handlers; join before input teardown
evdev_stop();
if (g_state.transport.ops)
{
lgInput_dropTransport();
@@ -3534,9 +3536,6 @@ static void lg_shutdown(void)
e_startup = NULL;
}
if (g_state.ds)
g_state.ds->shutdown();
lgClipboard_free();
app_releaseAllKeybinds();