X-Git-Url: https://www.aleksib.fi/git/wowui.git/blobdiff_plain/0973648bffbf36772a40bbc76d6c7c786189a900..f89d735c824d0cd5bf5b247933e32c7ed803df26:/OmaAB/ActionBars.lua diff --git a/OmaAB/ActionBars.lua b/OmaAB/ActionBars.lua index 937d1d0..e6637e9 100644 --- a/OmaAB/ActionBars.lua +++ b/OmaAB/ActionBars.lua @@ -121,6 +121,7 @@ local chars = { ["Stormreaver"] = { ["Vildan"] = {1, 2, 3, 4,}, ["Gedren"] = {1, 2, 3, 4,}, + ["Gazden"] = {1, 2, 3, 4,}, }, }; @@ -170,6 +171,18 @@ local function updateCooldown(button, slot) local locstart, locduration = GetActionLossOfControlCooldown(slot); local start, duration, enable, modrate = GetActionCooldown(slot); local charges, maxcharges, chargestart, chargeduration, chargemodrate = GetActionCharges(slot); + -- avoid as many updates as possible by checking if there's changes first + if button.prev and + button.prev[1] == locstart and button.prev[2] == locduration and + button.prev[3] == start and button.prev[4] == duration and + button.prev[5] == enable and button.prev[6] == modrate and + button.prev[7] == charges and button.prev[8] == maxcharges and + button.prev[9] == chargestart and button.prev[10] == chargeduration and + button.prev[11] == chargemodrate then + return; + end + button.prev = { locstart, locduration, start, duration, enable, modrate, + charges, maxcharges, chargestart, chargeduration, chargemodrate }; if (locstart + locduration) > (start + duration) then if button.cd.currentCooldownType ~= COOLDOWN_TYPE_LOSS_OF_CONTROL then button.cd:SetEdgeTexture(locCDTexture); @@ -549,33 +562,11 @@ local function setupBindings() end local mounted = false; --- throttleCD 3-state, nil -> false -> true -> nil --- this way there's not double update each time the first --- update event comes, instead the extra throttled update comes --- if there are >2 ACTIONBAR_UPDATE_COOLDOWN events in one frame -local throttleCD = nil; -local function throttleCDDone() - -- update CD once more to confirm newest CD change is taken in even with some throttling - for _, button in pairs(activeButtons) do - updateCooldown(button, button.slot); - end -end -local function throttleCDReset() - throttleCD = nil; -end local events = { ["ACTIONBAR_UPDATE_COOLDOWN"] = function() - if not throttleCD then -- only update at most once/frame - throttleCD = throttleCD == false and true or false; - if throttleCD then - CTimerAfter(0.01, throttleCDDone); -- wait one frame - else - for _, button in pairs(activeButtons) do - updateCooldown(button, button.slot); - end - CTimerAfter(0.01, throttleCDReset); -- wait one frame - end + for _, button in pairs(activeButtons) do + updateCooldown(button, button.slot); end end, ["SPELL_UPDATE_CHARGES"] = function()