diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp index e4ece78d534a0b4718d914990734c592d32d2601..f340105f576fae307bc6b0b640a14e2514425949 100644 --- a/indra/llcommon/llmemory.cpp +++ b/indra/llcommon/llmemory.cpp @@ -275,6 +275,7 @@ LLMemTracker::LLMemTracker() mCurIndex = 0 ; mCounter = 0 ; mDrawnIndex = 0 ; + mPaused = FALSE ; mMutexp = new LLMutex(NULL) ; mStringBuffer = new char*[128] ; @@ -315,19 +316,25 @@ void LLMemTracker::release() //static void LLMemTracker::track(const char* function, const int line) { - static const S32 MIN_ALLOCATION = 1024 ; //1KB + static const S32 MIN_ALLOCATION = 0 ; //1KB + + if(mPaused) + { + return ; + } U32 allocated_mem = LLMemory::getWorkingSetSize() ; LLMutexLock lock(mMutexp) ; - if(allocated_mem <= mLastAllocatedMem) + S32 delta_mem = allocated_mem - mLastAllocatedMem ; + mLastAllocatedMem = allocated_mem ; + + if(delta_mem <= 0) { return ; //occupied memory does not grow } - S32 delta_mem = allocated_mem - mLastAllocatedMem ; - mLastAllocatedMem = allocated_mem ; if(delta_mem < MIN_ALLOCATION) { return ; @@ -353,10 +360,11 @@ void LLMemTracker::track(const char* function, const int line) //static -void LLMemTracker::preDraw() +void LLMemTracker::preDraw(BOOL pause) { mMutexp->lock() ; + mPaused = pause ; mDrawnIndex = mCurIndex - 1; mNumOfDrawn = 0 ; } diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h index e6a6a8c3da2925667f7bce184c2e3b2ee836a9fb..11406f59b016eb656fd167e604f0230e0e4ddd2c 100644 --- a/indra/llcommon/llmemory.h +++ b/indra/llcommon/llmemory.h @@ -63,7 +63,7 @@ class LL_COMMON_API LLMemTracker static LLMemTracker* getInstance() ; void track(const char* function, const int line) ; - void preDraw() ; + void preDraw(BOOL pause) ; void postDraw() ; const char* getNextLine() ; @@ -77,6 +77,7 @@ class LL_COMMON_API LLMemTracker S32 mCounter; S32 mDrawnIndex; S32 mNumOfDrawn; + BOOL mPaused; LLMutex* mMutexp ; }; diff --git a/indra/newview/llmemoryview.cpp b/indra/newview/llmemoryview.cpp index 397a77c4e352967bf680ff102610784a6afe7201..7e9c3c84a742147582dbf636ecce9f7c821f9f8a 100644 --- a/indra/newview/llmemoryview.cpp +++ b/indra/newview/llmemoryview.cpp @@ -41,6 +41,7 @@ LLMemoryView::LLMemoryView(const LLMemoryView::Params& p) : LLView(p), + mPaused(FALSE), //mDelay(120), mAlloc(NULL) { @@ -60,6 +61,7 @@ BOOL LLMemoryView::handleMouseDown(S32 x, S32 y, MASK mask) } else { + mPaused = !mPaused; } return TRUE; } @@ -172,7 +174,7 @@ void LLMemoryView::draw() } #else - LLMemTracker::getInstance()->preDraw() ; + LLMemTracker::getInstance()->preDraw(mPaused) ; { F32 x_pos = MARGIN_AMT ; diff --git a/indra/newview/llmemoryview.h b/indra/newview/llmemoryview.h index 24ea05827967fb23757ad695b76274b76352b419..9bdc59ab100049d4f21c79acd7e231be4dce55e8 100644 --- a/indra/newview/llmemoryview.h +++ b/indra/newview/llmemoryview.h @@ -55,6 +55,7 @@ class LLMemoryView : public LLView private: std::vector<LLWString> mLines; LLAllocator* mAlloc; + BOOL mPaused ; };