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