summaryrefslogtreecommitdiff
path: root/indra/newview/llcompilequeue.cpp
diff options
context:
space:
mode:
authorDave Houlton <euclid@lindenlab.com>2020-09-22 22:22:21 +0000
committerDave Houlton <euclid@lindenlab.com>2020-09-22 22:22:21 +0000
commit364ba9978b42ca03c39ee63c23fc1378e410ca96 (patch)
treea5ebd2bd8a4d6e87f55d1be6f278b1807b53de0f /indra/newview/llcompilequeue.cpp
parentb62d7c2f06fdaa91312fd6857d03748defe8b60f (diff)
parent86e7cc3d35e41a88b25175bafb5687e1864423d9 (diff)
Merged in DV497-merge-6.4.9 (pull request #312)
Merge 6.4.9 into DRTVWR-497
Diffstat (limited to 'indra/newview/llcompilequeue.cpp')
-rw-r--r--indra/newview/llcompilequeue.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index 76e16f5a1f..3aaaaf52f5 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -347,6 +347,13 @@ void LLFloaterCompileQueue::processExperienceIdResults(LLSD result, LLUUID paren
bool LLFloaterCompileQueue::processScript(LLHandle<LLFloaterCompileQueue> hfloater,
const LLPointer<LLViewerObject> &object, LLInventoryObject* inventory, LLEventPump &pump)
{
+ if (LLApp::isQuitting())
+ {
+ // Reply from coroutine came on shutdown
+ // We are quiting, don't start any more coroutines!
+ return true;
+ }
+
LLSD result;
LLCheckedHandle<LLFloaterCompileQueue> floater(hfloater);
// Dereferencing floater may fail. If they do they throw LLExeceptionStaleHandle.
@@ -381,6 +388,8 @@ bool LLFloaterCompileQueue::processScript(LLHandle<LLFloaterCompileQueue> hfloat
result = llcoro::suspendUntilEventOnWithTimeout(pump, fetch_timeout,
LLSDMap("timeout", LLSD::Boolean(true)));
+ floater.check();
+
if (result.has("timeout"))
{ // A timeout filed in the result will always be true if present.
LLStringUtil::format_map_t args;
@@ -404,6 +413,12 @@ bool LLFloaterCompileQueue::processScript(LLHandle<LLFloaterCompileQueue> hfloat
}
+ if (!gAssetStorage)
+ {
+ // viewer likely is shutting down
+ return true;
+ }
+
{
HandleScriptUserData userData(pump.getName());
@@ -468,6 +483,8 @@ bool LLFloaterCompileQueue::processScript(LLHandle<LLFloaterCompileQueue> hfloat
result = llcoro::suspendUntilEventOnWithTimeout(pump, fetch_timeout, LLSDMap("timeout", LLSD::Boolean(true)));
+ floater.check();
+
if (result.has("timeout"))
{ // A timeout filed in the result will always be true if present.
LLStringUtil::format_map_t args;
@@ -797,6 +814,7 @@ void LLFloaterScriptQueue::objectScriptProcessingQueueCoro(std::string action, L
// but offers no guarantee of doing so.
llcoro::suspend();
}
+ floater.check();
}
floater->addStringMessage("Done");