1
0
mirror of https://github.com/kepler155c/opus synced 2025-10-20 18:27:40 +00:00
This commit is contained in:
kepler155c@gmail.com
2016-12-27 16:01:06 -05:00
parent 5c12b20fae
commit c2500f0167
5 changed files with 29 additions and 38 deletions

View File

@@ -121,14 +121,9 @@ end
local exitPullEvents = false
local function _pullEvents()
--exitPullEvents = false
while true do
local e = { Process:pullEvent() }
local e = { os.pullEvent() }
Event.processEvent(e)
if exitPullEvents or e[1] == 'terminate' then
break
end
end
end
@@ -144,13 +139,19 @@ function Event.addThread(fn)
end
function Event.pullEvents(...)
Process:addThread(_pullEvents)
local routines = { ... }
if #routines > 0 then
for _, routine in ipairs(routines) do
Process:addThread(routine)
end
end
_pullEvents()
while true do
local e = Process:pullEvent()
if exitPullEvents or e == 'terminate' then
break
end
end
end
function Event.exitPullEvents()

View File

@@ -87,8 +87,11 @@ function Process:resume(event, ...)
return true, self.filter
end
function Process:pullEvent(filter)
-- confusing...
-- pull either one event if no filter or until event matches filter
-- or until terminated (regardless of filter)
function Process:pullEvent(filter)
while true do
local e = { os.pullEventRaw() }
self:threadEvent(unpack(e))
@@ -99,12 +102,12 @@ function Process:pullEvent(filter)
end
end
-- pull events until either the filter is matched or terminated
function Process:pullEvents(filter)
while true do
local e = { os.pullEventRaw(filter) }
local e = { os.pullEventRaw() }
self:threadEvent(unpack(e))
if e[1] == 'terminate' then
if (filter and e[1] == filter) or e[1] == 'terminate' then
return unpack(e)
end
end