diff options
author | nat-goodspeed <nat@lindenlab.com> | 2024-03-26 10:22:15 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-26 10:22:15 -0400 |
commit | 31f1988fb592352cf4c4730d482c9f451cc51da2 (patch) | |
tree | 93a3f25ff650a50c594dd1c09c7fff267c1f9379 | |
parent | 57d345a45c8cee611139c2177e635b1306be7339 (diff) | |
parent | 98e6356aed0c757f16267cc2ae921f9c90a249fe (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.cpp | 9 | ||||
-rw-r--r-- | indra/newview/scripts/lua/fiber.lua | 4 |
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 |