schedule filter
Added event filters for schedules, now they should work properly.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user