From 57eee35f2930f2ef07f2376214896c83b0c5d13e Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Thu, 20 Jan 2022 08:55:26 +0000 Subject: [PATCH] wlserver: Wait for steamcompmgr to shutdown before cleaning up xwayland Makes shutdown cleaner --- src/steamcompmgr.cpp | 4 ++++ src/wlserver.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp index 23544cf..9de8e14 100644 --- a/src/steamcompmgr.cpp +++ b/src/steamcompmgr.cpp @@ -213,6 +213,8 @@ extern bool g_bIntegerScale; bool synchronize; +std::mutex g_SteamCompMgrXWaylandServerMutex; + enum HeldCommitTypes_t { HELD_COMMIT_BASE, @@ -4286,6 +4288,8 @@ steamcompmgr_main(int argc, char **argv) int vblankFD = vblank_init(); assert( vblankFD >= 0 ); + std::unique_lock xwayland_server_guard(g_SteamCompMgrXWaylandServerMutex); + // Initialize any xwayland ctxs we have { gamescope_xwayland_server_t *server = NULL; diff --git a/src/wlserver.cpp b/src/wlserver.cpp index 31c4dcf..a041d5a 100644 --- a/src/wlserver.cpp +++ b/src/wlserver.cpp @@ -817,6 +817,8 @@ void wlserver_unlock(void) pthread_mutex_unlock(&waylock); } +extern std::mutex g_SteamCompMgrXWaylandServerMutex; + void wlserver_run(void) { struct pollfd pollfd = { @@ -851,6 +853,8 @@ void wlserver_run(void) } } + // Released when steamcompmgr closes. + std::unique_lock xwayland_server_guard(g_SteamCompMgrXWaylandServerMutex); // We need to shutdown Xwayland before disconnecting all clients, otherwise // wlroots will restart it automatically. wlserver.wlr.xwayland_servers.clear();