summaryrefslogtreecommitdiff
path: root/indra/llplugin/llpluginprocessparent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llplugin/llpluginprocessparent.cpp')
-rw-r--r--indra/llplugin/llpluginprocessparent.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp
index 7d18bae947..f4bd944387 100644
--- a/indra/llplugin/llpluginprocessparent.cpp
+++ b/indra/llplugin/llpluginprocessparent.cpp
@@ -320,8 +320,9 @@ void LLPluginProcessParent::idle(void)
do
{
// process queued messages
- mIncomingQueueMutex.lock();
- while(!mIncomingQueue.empty())
+ // Inside main thread, it is preferable not to block it on mutex.
+ bool locked = mIncomingQueueMutex.trylock();
+ while(locked && !mIncomingQueue.empty())
{
LLPluginMessage message = mIncomingQueue.front();
mIncomingQueue.pop();
@@ -329,10 +330,13 @@ void LLPluginProcessParent::idle(void)
receiveMessage(message);
- mIncomingQueueMutex.lock();
+ locked = mIncomingQueueMutex.trylock();
}
- mIncomingQueueMutex.unlock();
+ if (locked)
+ {
+ mIncomingQueueMutex.unlock();
+ }
// Give time to network processing
if(mMessagePipe)