From cef09fbfe6624d2133d81be863bd48bcfc5939d3 Mon Sep 17 00:00:00 2001 From: vaxerski Date: Fri, 10 Jan 2025 21:55:19 +0100 Subject: [PATCH] animation: avoid crashes in ::tick() on mutations mutating the active variables is valid during a tick, we can't let it crash --- src/managers/AnimationManager.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/managers/AnimationManager.cpp b/src/managers/AnimationManager.cpp index f0f6a980..ea74ffd2 100644 --- a/src/managers/AnimationManager.cpp +++ b/src/managers/AnimationManager.cpp @@ -215,7 +215,11 @@ void CHyprAnimationManager::tick() { lastTick = std::chrono::high_resolution_clock::now(); static auto PANIMENABLED = CConfigValue("animations:enabled"); - for (auto const& pav : m_vActiveAnimatedVariables) { + + // We need to do this because it's perfectly valid to add/change a var during this (via callbacks) + // FIXME: instead of doing this, make a fn to defer adding until tick is done and not in progress anymore. + const auto PAVS = m_vActiveAnimatedVariables; + for (auto const& pav : PAVS) { const auto PAV = pav.lock(); if (!PAV) continue;