summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornat-goodspeed <nat@lindenlab.com>2024-03-26 10:22:15 -0400
committerGitHub <noreply@github.com>2024-03-26 10:22:15 -0400
commit31f1988fb592352cf4c4730d482c9f451cc51da2 (patch)
tree93a3f25ff650a50c594dd1c09c7fff267c1f9379
parent57d345a45c8cee611139c2177e635b1306be7339 (diff)
parent98e6356aed0c757f16267cc2ae921f9c90a249fe (diff)
Merge pull request #1048 from secondlife/lua-check-stop
Add LL.check_stop() entry point and call it in fiber scheduler().
-rw-r--r--indra/llcommon/lua_function.cpp9
-rw-r--r--indra/newview/scripts/lua/fiber.lua4
2 files changed, 10 insertions, 3 deletions
diff --git a/indra/llcommon/lua_function.cpp b/indra/llcommon/lua_function.cpp
index 962e9ee2fa..9f0abd5674 100644
--- a/indra/llcommon/lua_function.cpp
+++ b/indra/llcommon/lua_function.cpp
@@ -682,6 +682,15 @@ std::pair<LuaFunction::Registry&, LuaFunction::Lookup&> LuaFunction::getState()
}
/*****************************************************************************
+* check_stop()
+*****************************************************************************/
+lua_function(check_stop, "ensure that a Lua script responds to viewer shutdown")
+{
+ LLCoros::checkStop();
+ return 0;
+}
+
+/*****************************************************************************
* help()
*****************************************************************************/
lua_function(help,
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