From 2e6e6c434615b46b754b8198c867f77b0a6b92de Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 20 Dec 2017 16:26:17 +0000
Subject: MAINT-8104 - make pausing of wireframe updates a little smarter -
 waits for a couple of frames to make sure state is current before starting to
 skip LLRiggedVolume::update()

---
 indra/llcharacter/llmotioncontroller.cpp | 3 ++-
 indra/llcharacter/llmotioncontroller.h   | 3 ++-
 indra/newview/llvovolume.cpp             | 8 +++++++-
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/indra/llcharacter/llmotioncontroller.cpp b/indra/llcharacter/llmotioncontroller.cpp
index 4c3a676382..3116403616 100644
--- a/indra/llcharacter/llmotioncontroller.cpp
+++ b/indra/llcharacter/llmotioncontroller.cpp
@@ -135,7 +135,7 @@ LLMotionController::LLMotionController()
 	  mLastTime(0.0f),
 	  mHasRunOnce(FALSE),
 	  mPaused(FALSE),
-	  mPauseTime(0.f),
+	  mPausedFrame(0),
 	  mTimeStep(0.f),
 	  mTimeStepCount(0),
 	  mLastInterp(0.f),
@@ -1129,6 +1129,7 @@ void LLMotionController::pauseAllMotions()
 	{
 		//LL_INFOS() << "Pausing animations..." << LL_ENDL;
 		mPaused = TRUE;
+        mPausedFrame = LLFrameTimer::getFrameCount();
 	}
 	
 }
diff --git a/indra/llcharacter/llmotioncontroller.h b/indra/llcharacter/llmotioncontroller.h
index bcd0bfc685..637ee4d2bb 100644
--- a/indra/llcharacter/llmotioncontroller.h
+++ b/indra/llcharacter/llmotioncontroller.h
@@ -148,6 +148,7 @@ public:
 	void pauseAllMotions();
 	void unpauseAllMotions();
 	BOOL isPaused() const { return mPaused; }
+    S32 getPausedFrame() const { return mPausedFrame; }
 
 	void setTimeStep(F32 step);
     F32 getTimeStep() const { return mTimeStep; }
@@ -221,7 +222,7 @@ protected:
 	F32					mLastTime;
 	BOOL				mHasRunOnce;
 	BOOL				mPaused;
-	F32					mPauseTime;
+	S32					mPausedFrame;
 	F32					mTimeStep;
 	S32					mTimeStepCount;
 	F32					mLastInterp;
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index d31cd1e33f..e291416f92 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -4409,11 +4409,17 @@ void LLRiggedVolume::update(const LLMeshSkinInfo* skin, LLVOAvatar* avatar, cons
 	}
     else
     {
+#if 1
         bool is_paused = avatar && avatar->areAnimationsPaused();
 		if (is_paused)
 		{
-			return;
+            S32 frames_paused = LLFrameTimer::getFrameCount() - avatar->getMotionController().getPausedFrame();
+            if (frames_paused > 2)
+            {
+                return;
+            }
 		}
+#endif
     }
 
 
-- 
cgit v1.2.3