summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp10
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();