summaryrefslogtreecommitdiff
path: root/src/helpers/Monitor.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-10-05 14:37:12 +0100
committerVaxry <vaxry@vaxry.net>2024-10-05 14:37:12 +0100
commit46bf87c8d1f053284a266d5f0b470073a48a92f6 (patch)
tree2a3b533b691b809317b1bf3a87b5efbcb8272f42 /src/helpers/Monitor.cpp
parent595eb89f6e16df0e19916e3c02bf5ceac5a61c57 (diff)
monitor: use a scope guard for disconnect events
Diffstat (limited to 'src/helpers/Monitor.cpp')
-rw-r--r--src/helpers/Monitor.cpp9
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) {