diff options
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 44ad52b4..15a0ebf9 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -216,7 +216,7 @@ void CCompositor::initAllSignals() { } void CCompositor::cleanup() { - if (!m_sWLDisplay) + if (!m_sWLDisplay || m_bIsShuttingDown) return; m_pLastFocus = nullptr; @@ -225,9 +225,13 @@ void CCompositor::cleanup() { m_vWorkspaces.clear(); m_vWindows.clear(); - for (auto& m : m_vMonitors) + for (auto& m : m_vMonitors) { g_pHyprOpenGL->destroyMonitorResources(m.get()); + wlr_output_enable(m->output, false); + wlr_output_commit(m->output); + } + if (g_pXWaylandManager->m_sWLRXWayland) { wlr_xwayland_destroy(g_pXWaylandManager->m_sWLRXWayland); g_pXWaylandManager->m_sWLRXWayland = nullptr; @@ -235,7 +239,7 @@ void CCompositor::cleanup() { wl_display_terminate(m_sWLDisplay); - m_sWLDisplay = nullptr; + m_bIsShuttingDown = true; // kill the PID with a sigkill after 2 seconds const auto PID = getpid(); |
