diff --git a/daemon/powerdevilcore.h b/daemon/powerdevilcore.h --- a/daemon/powerdevilcore.h +++ b/daemon/powerdevilcore.h @@ -134,6 +134,7 @@ QHash< Action*, QList< int > > m_registeredActionTimeouts; QSet m_pendingResumeFromIdleActions; bool m_pendingWakeupEvent; + bool m_isHandlingWakeup = false; // Activity inhibition management QHash< QString, int > m_sessionActivityInhibit; diff --git a/daemon/powerdevilcore.cpp b/daemon/powerdevilcore.cpp --- a/daemon/powerdevilcore.cpp +++ b/daemon/powerdevilcore.cpp @@ -833,11 +833,18 @@ void Core::onResumingFromIdle() { + if (m_isHandlingWakeup) { + return; + } + m_isHandlingWakeup = true; + // Wake up the actions in which an idle action was triggered std::for_each(m_pendingResumeFromIdleActions.cbegin(), m_pendingResumeFromIdleActions.cend(), std::mem_fn(&PowerDevil::Action::onWakeupFromIdle)); m_pendingResumeFromIdleActions.clear(); + + m_isHandlingWakeup = false; } void Core::onNotificationTimeout()