Skip to content

Commit c1b3ce1

Browse files
committed
pooler optimization
1 parent e5f1993 commit c1b3ce1

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

ElvUI_Libraries/Core/oUF/simpy/pooler.lua

+14-4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ local object = CreateFrame('Frame')
1616
local pooler = { frame = object }
1717
oUF.Pooler = Profiler(pooler)
1818

19+
object.tracked = {}
1920
object.events = {}
2021
object.times = {}
2122

@@ -73,8 +74,13 @@ pooler.execute = function(event, pool, instant, arg1, ...)
7374
end
7475

7576
pooler.update = function()
76-
for event, pool in pairs(object.events) do
77-
pooler.execute(event, pool)
77+
for event in pairs(object.tracked) do
78+
local pool = object.events[event]
79+
if pool then
80+
pooler.execute(event, pool)
81+
end
82+
83+
object.tracked[event] = nil
7884
end
7985
end
8086

@@ -90,13 +96,17 @@ pooler.tracker = function(frame, event, arg1, ...)
9096
elseif arg1 ~= nil then -- require arg1, no unitless
9197
local pooled = pool[frame]
9298
if pooled then
99+
if not object.tracked[event] then
100+
object.tracked[event] = true
101+
end
102+
93103
local eventData = pooled.data[event]
94104
if not eventData then
95105
eventData = {}
96106
pooled.data[event] = eventData
97107
end
98108

99-
tinsert(eventData, {arg1, ...})
109+
tinsert(eventData, { arg1, ... })
100110
end
101111
end
102112

@@ -126,7 +136,7 @@ function oUF:RegisterEvent(frame, event, func)
126136

127137
local framePool = eventPool[frame]
128138
if not framePool then
129-
framePool = {functions = {}, data = {}}
139+
framePool = { functions = {}, data = {} }
130140
eventPool[frame] = framePool
131141
end
132142

0 commit comments

Comments
 (0)