From e03a57f85db2319e883958dedef6a644b8d921f3 Mon Sep 17 00:00:00 2001 From: Dusk-92 Date: Sat, 5 Sep 2026 17:41:13 +0200 Subject: [PATCH] Use ClassicAPI ticker for snowfall handler guard --- mods/classic-snowfall.lua | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/mods/classic-snowfall.lua b/mods/classic-snowfall.lua index 9a5caca..2b96377 100644 --- a/mods/classic-snowfall.lua +++ b/mods/classic-snowfall.lua @@ -266,30 +266,34 @@ module.enable = function(self) frame:RegisterEvent("PLAYER_LOGIN") frame:RegisterEvent("PLAYER_ENTERING_WORLD") frame:RegisterEvent("UPDATE_BINDINGS") - frame.elapsed = 0 frame.guardUntil = 0 + frame.guardTicker = nil - local function GuardOnUpdate() + local function GuardTick() if not frame.guardUntil or frame.guardUntil <= GetTime() then - frame:SetScript("OnUpdate", nil) + if frame.guardTicker then + frame.guardTicker:Cancel() + frame.guardTicker = nil + end return end - frame.elapsed = frame.elapsed + (arg1 or 0) - if frame.elapsed < 0.25 then return end - frame.elapsed = 0 - if not HandlersAreInstalled() then Install() end end + local function StartGuard() + frame.guardUntil = GetTime() + 8 + if not frame.guardTicker then + frame.guardTicker = C_Timer.NewTicker(0.25, GuardTick) + end + end + frame:SetScript("OnEvent", function() Install() RefreshModifiedBindings() if event == "PLAYER_LOGIN" or event == "PLAYER_ENTERING_WORLD" then - frame.guardUntil = GetTime() + 8 - frame.elapsed = 0 - frame:SetScript("OnUpdate", GuardOnUpdate) + StartGuard() end end) end