diff options
| author | Vaxry <vaxry@vaxry.net> | 2024-10-05 14:37:12 +0100 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2024-10-05 14:37:12 +0100 |
| commit | 46bf87c8d1f053284a266d5f0b470073a48a92f6 (patch) | |
| tree | 2a3b533b691b809317b1bf3a87b5efbcb8272f42 /src/helpers/Monitor.cpp | |
| parent | 595eb89f6e16df0e19916e3c02bf5ceac5a61c57 (diff) | |
monitor: use a scope guard for disconnect events
Diffstat (limited to 'src/helpers/Monitor.cpp')
| -rw-r--r-- | src/helpers/Monitor.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index 03a1d92b..f105ea66 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -229,6 +229,12 @@ void CMonitor::onConnect(bool noRule) { } void CMonitor::onDisconnect(bool destroy) { + CScopeGuard x = {[this]() { + if (g_pCompositor->m_bIsShuttingDown) + return; + g_pEventManager->postEvent(SHyprIPCEvent{"monitorremoved", szName}); + EMIT_HOOK_EVENT("monitorRemoved", this); + }}; if (renderTimer) { wl_event_source_remove(renderTimer); @@ -341,9 +347,6 @@ void CMonitor::onDisconnect(bool destroy) { g_pHyprRenderer->m_pMostHzMonitor = pMonitorMostHz; } std::erase_if(g_pCompositor->m_vMonitors, [&](SP<CMonitor>& el) { return el.get() == this; }); - - g_pEventManager->postEvent(SHyprIPCEvent{"monitorremoved", szName}); - EMIT_HOOK_EVENT("monitorRemoved", this); } void CMonitor::addDamage(const pixman_region32_t* rg) { |
