summaryrefslogtreecommitdiff
path: root/indra/newview/scripts
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2024-03-25 16:57:28 -0400
committerNat Goodspeed <nat@lindenlab.com>2024-03-25 16:57:28 -0400
commit98e6356aed0c757f16267cc2ae921f9c90a249fe (patch)
tree93a3f25ff650a50c594dd1c09c7fff267c1f9379 /indra/newview/scripts
parentac4fa418e3a7402f9d9122c726d2fbfc4b8767b2 (diff)
Add LL.check_stop() entry point and call it in fiber scheduler().
fiber.lua's scheduler() is greedy, in the sense that it wants to run every ready Lua fiber before retrieving the next incoming event from the viewer (and possibly blocking for some real time before it becomes available). But check for viewer shutdown before resuming any suspended-but-ready Lua fiber.
Diffstat (limited to 'indra/newview/scripts')
-rw-r--r--indra/newview/scripts/lua/fiber.lua4
1 files changed, 1 insertions, 3 deletions
diff --git a/indra/newview/scripts/lua/fiber.lua b/indra/newview/scripts/lua/fiber.lua
index 7dc67f510c..aebf27357f 100644
--- a/indra/newview/scripts/lua/fiber.lua
+++ b/indra/newview/scripts/lua/fiber.lua
@@ -222,8 +222,6 @@ local function scheduler()
-- processing to the main thread. If called from a coroutine, pass control
-- back to the main thread.
if coroutine.running() then
- -- seize the opportunity to make sure the viewer isn't shutting down
--- check_stop()
-- this is a real coroutine, yield normally to main thread
coroutine.yield()
-- main certainly still exists
@@ -240,7 +238,7 @@ local function scheduler()
repeat
for co in live_ready_iter do
-- seize the opportunity to make sure the viewer isn't shutting down
--- check_stop()
+ LL.check_stop()
-- before we re-append co, is it the only remaining entry?
others = next(ready)
-- co is live, re-append it to the ready list