File Details
BuffHandler
- R
- Jul 3, 2026
- 6.35 MB
- 0
- 11.0.0.0000
File Name
BuffHandler(2).zip
Supported Versions
- 11.0.0.0000
BuffHandler – Performance Update (2026-07-03)
This release is a pure performance pass based on profiler feedback from the CoA developers. No features were added or removed; all bars, alerts and lists behave exactly as before. Under raid load the addon's event-handler cost drops by roughly an order of magnitude.
The problem
UNIT_BUFF_CHANGED fires for every buff change of every unit (the event's unit argument is unreliable on this client, so it cannot be filtered). In a raid this means constant event bursts – and previously each single event synchronously triggered a full BuffKeeper update (buff scan + complete bar render), a redundant BuffTracker refresh and a BuffSpy scan. Profiling showed the BuffKeeper event frame alone at ~55% of total OnEvent time.
Changes
BuffKeeper – event coalescing. UNIT_BUFF_CHANGED, BAG_ITEM_UPDATE and inventory events no longer run the full update path per event. The handler now only sets a dirty flag; a single batched update runs at most every 0.1 s. N events in a burst → 1 update. Cheap invalidations (item caches) still happen immediately, the equipment rescan moved into the batch.
BuffTracker – removed redundant event work. The tracker no longer registers UNIT_BUFF_CHANGED at all. Its permanent 0.2 s refresh timer already redraws the bars; the per-event refresh was a synchronous duplicate of that work.
BuffSpy – batched scanning. Player-buff scan and BK observation are now coalesced as well (0.15 s window, deliberately offset behind the Keeper batch). Buff-history gain detection is unaffected – it simply runs less often.
Shared buff snapshot. All three modules read player buffs through one unified scanner. That scanner now keeps a short-lived raw snapshot per unit (0.1 s TTL, invalidated on every buff event), so Keeper, Tracker and Spy share a single engine read per burst instead of three separate ones. The TTL is intentionally shorter than the tracker interval, so countdown times stay accurate.
Native buff bar hiding. The re-hide check for the game's native buff bar now keeps state and is a no-op unless the bar actually reappeared or the setting was toggled (previously two protected calls per buff event, twice).
Behavioral notes
- Bars may react to a buff change up to ~0.1–0.15 s later than before – below the tracker's own display granularity and not visible in practice.
- Everything else (profiles, click-to-use, alerts, raid monitor, history, saved variables) is untouched.