From c98e6a99f93082ae9cb5c79f72e78ece59582de3 Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Tue, 2 Nov 2010 16:32:29 -0500
Subject: [PATCH] Better locking of queues when displaying download queue
 status.

Reviewed by Nyx.
---
 indra/newview/llviewerwindow.cpp | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index d7291c3688d..bf712dea117 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -636,12 +636,15 @@ class LLDebugText
 			}
 		}
 
-		S32 pending = (S32) gMeshRepo.mPendingRequests.size();
-		S32 header = (S32) gMeshRepo.mThread->mHeaderReqQ.size();
-		S32 lod = (S32) gMeshRepo.mThread->mLODReqQ.size();
-
-		if (pending + header + lod + LLMeshRepoThread::sActiveHeaderRequests + LLMeshRepoThread::sActiveLODRequests != 0)
+		if (!gMeshRepo.mPendingRequests.empty() ||
+			!gMeshRepo.mThread->mHeaderReqQ.empty() ||
+			!gMeshRepo.mThread->mLODReqQ.empty())
 		{
+			LLMutexLock lock(gMeshRepo.mThread->mMutex);
+			S32 pending = (S32) gMeshRepo.mPendingRequests.size();
+			S32 header = (S32) gMeshRepo.mThread->mHeaderReqQ.size();
+			S32 lod = (S32) gMeshRepo.mThread->mLODReqQ.size();
+
 			addText(xpos, ypos, llformat ("Mesh Queue - %d pending (%d:%d header | %d:%d LOD)", 
 												pending,
 												LLMeshRepoThread::sActiveHeaderRequests, header,
-- 
GitLab