Files
SingularityViewer/indra/llvfs
Aleric Inglewood 2830b35aa6 Avoid dead lock in LLQueuedThread::generateHandle / LLTextureFetchWorker::callbackDecoded
Thead 1:

indra/llcommon/llqueuedthread.cpp:456:

452                     if (complete)
453                     {
454                             lockData();             // This locks LLThread::mRunCondition
455                             req->setStatus(STATUS_COMPLETE);
456                             req->finishRequest(true);

LLImageDecodeThread::ImageRequest::finishRequest calls:
    mResponder->completed(success, mDecodedImageRaw, mDecodedImageAux);

LLTextureFetchWorker::DecodeResponder::completed calls:
    worker->callbackDecoded(success, raw, aux);

LLTextureFetchWorker::callbackDecoded calls:
    LLMutexLock lock(&mWorkMutex);                      // This locks LLTextureFetchWorker::mWorkMutex

Thread 2:

LLTextureFetchWorker::doWork calls:
    LLMutexLock lock(&mWorkMutex);                      // This locks LLTextureFetchWorker::mWorkMutex
    .
    .
    .
    mDecodeHandle = mFetcher->mImageDecodeThread->decodeImage(mFormattedImage, image_priority, discard, mNeedsAux, new DecodeResponder(mFetcher, mID, this));

LLImageDecodeThread::decodeImage calls:
    handle_t handle = generateHandle();

LLQueuedThread::generateHandle calls:
    lockData();                                         // This locks LLThread::mRunCondition
2012-07-22 04:13:23 +02:00
..
2011-06-06 21:38:58 +02:00
2011-06-06 21:38:58 +02:00
2011-06-06 21:38:58 +02:00
2011-06-06 21:38:58 +02:00
2011-06-06 21:38:58 +02:00
2011-06-06 21:38:58 +02:00
2011-06-06 21:38:58 +02:00
2011-06-06 21:38:58 +02:00
2011-06-06 21:38:58 +02:00
2011-06-06 21:38:58 +02:00
2011-06-06 21:38:58 +02:00
2011-09-20 21:39:27 -05:00
2012-04-29 00:25:40 -04:00
2012-01-25 23:45:18 +01:00
2011-09-20 21:39:27 -05:00
2011-06-06 21:38:58 +02:00
2010-04-02 02:48:44 -03:00
2010-04-02 02:48:44 -03:00