From 75cc792628f5c94bb52ce08336a3a4c2728bc41f Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Wed, 25 Jun 2025 20:26:56 -0700 Subject: [PATCH] animation: use CSignalT --- .../hyprutils/animation/AnimationManager.hpp | 7 ++-- src/animation/AnimationManager.cpp | 33 ++++++------------- 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/include/hyprutils/animation/AnimationManager.hpp b/include/hyprutils/animation/AnimationManager.hpp index 1266e2d..1b512dc 100644 --- a/include/hyprutils/animation/AnimationManager.hpp +++ b/include/hyprutils/animation/AnimationManager.hpp @@ -35,8 +35,8 @@ namespace Hyprutils { const std::unordered_map>& getAllBeziers(); struct SAnimationManagerSignals { - Signal::CSignal connect; // WP - Signal::CSignal disconnect; // WP + Signal::CSignalT&> connect; + Signal::CSignalT&> disconnect; }; Memory::CWeakPointer getSignals() const; @@ -48,9 +48,6 @@ namespace Hyprutils { bool m_bTickScheduled = false; - void onConnect(std::any data); - void onDisconnect(std::any data); - struct SAnimVarListeners { Signal::CHyprSignalListener connect; Signal::CHyprSignalListener disconnect; diff --git a/src/animation/AnimationManager.cpp b/src/animation/AnimationManager.cpp index cc62616..446b2d9 100644 --- a/src/animation/AnimationManager.cpp +++ b/src/animation/AnimationManager.cpp @@ -20,31 +20,18 @@ CAnimationManager::CAnimationManager() { m_events = makeUnique(); m_listeners = makeUnique(); - m_listeners->connect = m_events->connect.registerListener([this](std::any data) { onConnect(data); }); - m_listeners->disconnect = m_events->disconnect.registerListener([this](std::any data) { onDisconnect(data); }); -} + m_listeners->connect = m_events->connect.listen([this](const WP& animVar) { + if (!m_bTickScheduled) + scheduleTick(); -void CAnimationManager::onConnect(std::any data) { - if (!m_bTickScheduled) - scheduleTick(); + if (animVar) + m_vActiveAnimatedVariables.emplace_back(animVar); + }); - try { - const auto PAV = std::any_cast>(data); - if (!PAV) - return; - - m_vActiveAnimatedVariables.emplace_back(PAV); - } catch (const std::bad_any_cast&) { return; } -} - -void CAnimationManager::onDisconnect(std::any data) { - try { - const auto PAV = std::any_cast>(data); - if (!PAV) - return; - - std::erase_if(m_vActiveAnimatedVariables, [&](const auto& other) { return !other || other == PAV; }); - } catch (const std::bad_any_cast&) { return; } + m_listeners->disconnect = m_events->disconnect.listen([this](const WP& animVar) { + if (animVar) + std::erase_if(m_vActiveAnimatedVariables, [&](const auto& other) { return !other || other == animVar; }); + }); } void CAnimationManager::removeAllBeziers() {