diff options
Diffstat (limited to 'indra/llplugin')
| -rw-r--r-- | indra/llplugin/llpluginprocessparent.cpp | 12 | 
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) | 
