diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2023-05-08 12:07:31 -0400 | 
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2023-05-08 12:07:31 -0400 | 
| commit | 026ef1935dbdb21ab79159d38fb78e126dd6ac95 (patch) | |
| tree | 1c5ff4626cc50a0a57cc27df534f0ad5d196bc83 /indra/llimage | |
| parent | 6d0d9b8e549c2bc600e6bf416d4614edc55e35c0 (diff) | |
SL-19690: Follow up on Rye Mutt's fix for shutdown crashes.
Rather than continuing to propagate try/catch (Closed)
(aka LLThreadSafeQueueInterrupt) constructs through the code base, make
WorkQueueBase::post() return bool indicating success (i.e. ! isClosed()).
This obviates postIfOpen(), which no one was using anyway.
In effect, postIfOpen() is renamed post(), bypassing the exception when
isClosed().
Review existing try/catch blocks of that sort, changing to test for post()
returning false.
Diffstat (limited to 'indra/llimage')
| -rw-r--r-- | indra/llimage/llimageworker.cpp | 28 | 
1 files changed, 13 insertions, 15 deletions
| diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp index 9358a0ae2c..520c81a8ec 100644 --- a/indra/llimage/llimageworker.cpp +++ b/indra/llimage/llimageworker.cpp @@ -92,21 +92,19 @@ LLImageDecodeThread::handle_t LLImageDecodeThread::decodeImage(  {      LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE; -	try -	{ -		// Instantiate the ImageRequest right in the lambda, why not? -		mThreadPool->getQueue().post( -			[req = ImageRequest(image, discard, needs_aux, responder)] -			() mutable -			{ -				auto done = req.processRequest(); -				req.finishRequest(done); -			}); -	} -	catch (const LLThreadSafeQueueInterrupt&) -	{ -		LL_DEBUGS() << "Tried to start decoding on shutdown" << LL_ENDL; -	} +    // Instantiate the ImageRequest right in the lambda, why not? +    bool posted = mThreadPool->getQueue().post( +        [req = ImageRequest(image, discard, needs_aux, responder)] +        () mutable +        { +            auto done = req.processRequest(); +            req.finishRequest(done); +        }); +    if (! posted) +    { +        LL_DEBUGS() << "Tried to start decoding on shutdown" << LL_ENDL; +        // should this return 0? +    }      // It's important to our consumer (LLTextureFetchWorker) that we return a      // nonzero handle. It is NOT important that the nonzero handle be unique: | 
