mirror of
https://github.com/kepler155c/opus
synced 2025-10-20 18:27:40 +00:00
threads
This commit is contained in:
@@ -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()
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user