summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Compositor.cpp4
-rw-r--r--src/managers/animation/AnimationManager.cpp5
-rw-r--r--src/managers/animation/AnimationManager.hpp3
3 files changed, 12 insertions, 0 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 3299113c..1d80c65c 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -483,6 +483,10 @@ void CCompositor::initAllSignals() {
m_sessionActive = true;
+ // Reset animation tick state to avoid stale timer issues after suspend/wake
+ if (g_pAnimationManager)
+ g_pAnimationManager->resetTickState();
+
for (auto const& m : m_monitors) {
scheduleFrameForMonitor(m);
m->applyMonitorRule(&m->m_activeMonitorRule, true);
diff --git a/src/managers/animation/AnimationManager.cpp b/src/managers/animation/AnimationManager.cpp
index bbd220b2..f6b43e23 100644
--- a/src/managers/animation/AnimationManager.cpp
+++ b/src/managers/animation/AnimationManager.cpp
@@ -286,6 +286,11 @@ void CHyprAnimationManager::onTicked() {
m_tickScheduled = false;
}
+void CHyprAnimationManager::resetTickState() {
+ m_lastTickValid = false;
+ m_tickScheduled = false;
+}
+
std::string CHyprAnimationManager::styleValidInConfigVar(const std::string& config, const std::string& style) {
if (config.starts_with("window")) {
if (style.starts_with("slide") || style == "gnome" || style == "gnomed")
diff --git a/src/managers/animation/AnimationManager.hpp b/src/managers/animation/AnimationManager.hpp
index b8acc53e..35bb1e8a 100644
--- a/src/managers/animation/AnimationManager.hpp
+++ b/src/managers/animation/AnimationManager.hpp
@@ -18,6 +18,9 @@ class CHyprAnimationManager : public Hyprutils::Animation::CAnimationManager {
virtual void scheduleTick();
virtual void onTicked();
+ // Reset tick state after session changes (suspend/wake, lock/unlock)
+ void resetTickState();
+
using SAnimationPropertyConfig = Hyprutils::Animation::SAnimationPropertyConfig;
template <Animable VarType>
void createAnimation(const VarType& v, PHLANIMVAR<VarType>& pav, SP<SAnimationPropertyConfig> pConfig, eAVarDamagePolicy policy) {