From 72e31d3335982382c289302a41f7144009c5c82f Mon Sep 17 00:00:00 2001 From: zakk4223 Date: Wed, 24 Apr 2024 19:05:19 -0400 Subject: [PATCH] idle-inhibit: Always recheck idle inhibitors on creation and deletion (#5738) Formatting --- src/managers/input/IdleInhibitor.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/managers/input/IdleInhibitor.cpp b/src/managers/input/IdleInhibitor.cpp index 21f1652f..b5e6feb2 100644 --- a/src/managers/input/IdleInhibitor.cpp +++ b/src/managers/input/IdleInhibitor.cpp @@ -8,22 +8,21 @@ void CInputManager::newIdleInhibitor(std::any inhibitor) { Debug::log(LOG, "New idle inhibitor registered for surface {:x}", (uintptr_t)PINHIBIT->inhibitor->surface); - PINHIBIT->inhibitor->listeners.destroy = PINHIBIT->inhibitor->resource.lock()->events.destroy.registerListener( - [this, PINHIBIT](std::any data) { std::erase_if(m_vIdleInhibitors, [PINHIBIT](const auto& other) { return other.get() == PINHIBIT; }); }); + PINHIBIT->inhibitor->listeners.destroy = PINHIBIT->inhibitor->resource.lock()->events.destroy.registerListener([this, PINHIBIT](std::any data) { + std::erase_if(m_vIdleInhibitors, [PINHIBIT](const auto& other) { return other.get() == PINHIBIT; }); + recheckIdleInhibitorStatus(); + }); const auto PWINDOW = g_pCompositor->getWindowFromSurface(PINHIBIT->inhibitor->surface); - if (!PWINDOW) { + if (PWINDOW) { + PINHIBIT->pWindow = PWINDOW; + PINHIBIT->windowDestroyListener = PWINDOW->events.destroy.registerListener([PINHIBIT](std::any data) { + Debug::log(WARN, "Inhibitor got its window destroyed before its inhibitor resource."); + PINHIBIT->pWindow = nullptr; + }); + } else Debug::log(WARN, "Inhibitor is for no window?"); - return; - } - - PINHIBIT->pWindow = PWINDOW; - PINHIBIT->windowDestroyListener = PWINDOW->events.destroy.registerListener([PINHIBIT](std::any data) { - Debug::log(WARN, "Inhibitor got its window destroyed before its inhibitor resource."); - PINHIBIT->pWindow = nullptr; - }); - recheckIdleInhibitorStatus(); } @@ -62,4 +61,4 @@ void CInputManager::recheckIdleInhibitorStatus() { g_pCompositor->setIdleActivityInhibit(true); return; -} \ No newline at end of file +}