diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index 685009fd..6e11e1e6 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -60,7 +60,8 @@ void CMonitor::onConnect(bool noRule) { Debug::log(LOG, "Removing monitor {} from realMonitors", szName); - std::erase_if(g_pCompositor->m_vRealMonitors, [&](SP& el) { return el.get() == this; }); + std::erase_if(g_pCompositor->m_vMonitors, [&](SP& el) { return el.get() == this || !el || !el->output; }); + std::erase_if(g_pCompositor->m_vRealMonitors, [&](SP& el) { return el.get() == this || !el || !el->output; }); }); listeners.state = output->events.state.registerListener([this](std::any d) { @@ -341,7 +342,7 @@ void CMonitor::onDisconnect(bool destroy) { g_pHyprRenderer->m_pMostHzMonitor = pMonitorMostHz; } - std::erase_if(g_pCompositor->m_vMonitors, [&](SP& el) { return el.get() == this; }); + std::erase_if(g_pCompositor->m_vMonitors, [&](SP& el) { return el.get() == this || !el || !el->output; }); } void CMonitor::addDamage(const pixman_region32_t* rg) {