schedule filter

Added event filters for schedules, now they should work properly.
This commit is contained in:
Robert Jelic
2022-12-31 01:42:12 +01:00
committed by GitHub
parent 61e38d89e8
commit 1b8f62ce41

View File

@@ -68,7 +68,7 @@ return function(...)
local co = coroutine.create(f) local co = coroutine.create(f)
local ok, result = coroutine.resume(co, ...) local ok, result = coroutine.resume(co, ...)
if(ok)then if(ok)then
table.insert(schedules, co) table.insert(schedules, {co, result})
else else
basaltError(result) basaltError(result)
end end
@@ -154,15 +154,26 @@ local bInstance = {
end end
} }
local function handleSchedules(event, p1, p2, p3, p4) local function handleSchedules(event, ...)
if(#schedules>0)then if(#schedules>0)then
local finished = {} local finished = {}
for n=1,#schedules do for n=1,#schedules do
if(schedules[n]~=nil)then if(schedules[n]~=nil)then
if (coroutine.status(schedules[n]) == "suspended")then if (coroutine.status(schedules[n][1]) == "suspended")then
local ok, result = coroutine.resume(schedules[n], event, p1, p2, p3, p4) if(schedules[n][2]~=nil)then
if not(ok)then if(schedules[n][2]==event)then
basaltError(result) local ok, result = coroutine.resume(schedules[n][1], event, ...)
schedules[n][2] = result
if not(ok)then
basaltError(result)
end
end
else
local ok, result = coroutine.resume(schedules[n][1], event, ...)
schedules[n][2] = result
if not(ok)then
basaltError(result)
end
end end
else else
table.insert(finished, n) table.insert(finished, n)
@@ -240,6 +251,7 @@ local function basaltUpdateEvent(event, ...)
local mouseEvent = mouseEvents[event] local mouseEvent = mouseEvents[event]
if(mouseEvent~=nil)then if(mouseEvent~=nil)then
mouseEvent(mainFrame, ...) mouseEvent(mainFrame, ...)
handleSchedules(event, ...)
drawFrames() drawFrames()
return return
end end
@@ -255,6 +267,7 @@ local function basaltUpdateEvent(event, ...)
v[1]:mouseHandler(1, a[2], a[3], true, a[1]) v[1]:mouseHandler(1, a[2], a[3], true, a[1])
end end
end end
handleSchedules(event, ...)
drawFrames() drawFrames()
return return
end end
@@ -273,6 +286,7 @@ local function basaltUpdateEvent(event, ...)
activeKey[a[1]] = false activeKey[a[1]] = false
end end
keyEvent(activeFrame, ...) keyEvent(activeFrame, ...)
handleSchedules(event, ...)
drawFrames() drawFrames()
return return
end end