diff --git a/Altoholic-Addon/DataStore_Currencies/DataStore_Currencies.lua b/Altoholic-Addon/DataStore_Currencies/DataStore_Currencies.lua index 8f7b6e2..99d4186 100644 --- a/Altoholic-Addon/DataStore_Currencies/DataStore_Currencies.lua +++ b/Altoholic-Addon/DataStore_Currencies/DataStore_Currencies.lua @@ -6,12 +6,15 @@ if not DataStore then return end local addonName = "DataStore_Currencies" -_G[addonName] = LibStub("AceAddon-3.0"):NewAddon(addonName, "AceConsole-3.0", "AceEvent-3.0") +_G[addonName] = LibStub("AceAddon-3.0"):NewAddon(addonName, "AceConsole-3.0", "AceEvent-3.0", "AceTimer-3.0") local addon = _G[addonName] local THIS_ACCOUNT = "Default" +-- Func Call Spam Protection +local FCSP_timer_OnCurrencyDisplayUpdate + local AddonDB_Defaults = { global = { Characters = { @@ -81,8 +84,15 @@ end -- *** Event Handlers *** local function OnCurrencyDisplayUpdate() + FCSP_timer_UNIT_INVENTORY_CHANGED = nil ScanCurrencies() end +local function FCSP_timer_OnCurrencyDisplayUpdate() + -- this function limits calls to "ScanCurrencies" to max 1 every second + + if FCSP_timer_UNIT_INVENTORY_CHANGED then return end + FCSP_timer_UNIT_INVENTORY_CHANGED = addon:ScheduleTimer(OnCurrencyDisplayUpdate, 1) +end -- ** Mixins ** local function _GetNumCurrencies(character) @@ -178,7 +188,8 @@ function addon:OnInitialize() end function addon:OnEnable() - addon:RegisterEvent("CURRENCY_DISPLAY_UPDATE", OnCurrencyDisplayUpdate) + -- addon:RegisterEvent("CURRENCY_DISPLAY_UPDATE", OnCurrencyDisplayUpdate) + addon:RegisterEvent("CURRENCY_DISPLAY_UPDATE", FCSP_timer_OnCurrencyDisplayUpdate) end function addon:OnDisable()