From ddef4d7ff74ecff49e76afca58d1d3c2486e8af3 Mon Sep 17 00:00:00 2001
From: Xiaohong Bao <bao@lindenlab.com>
Date: Tue, 6 Aug 2013 16:35:46 -0600
Subject: [PATCH] revert some LLUnit changes to temporarily fix SH-4399:
 Interesting: Texture console MB Bound 0/384 and texture queue bounces once
 per second

---
 indra/newview/llappviewer.cpp        | 4 ++--
 indra/newview/llappviewer.h          | 2 +-
 indra/newview/llstartup.cpp          | 5 +++--
 indra/newview/llviewerobjectlist.cpp | 5 +++--
 indra/newview/llviewerstats.cpp      | 2 +-
 5 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index d544b992efe..9d30830e71c 100755
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -294,7 +294,7 @@ U32 gForegroundFrameCount = 0; // number of frames that app window was in foregr
 LLPumpIO* gServicePump = NULL;
 
 LLUnitImplicit<U64, LLUnits::Microseconds> gFrameTime = 0;
-LLUnitImplicit<F32, LLUnits::Seconds> gFrameTimeSeconds = 0.f;
+F32 gFrameTimeSeconds = 0.f;
 LLUnitImplicit<F32, LLUnits::Seconds> gFrameIntervalSeconds = 0.f;
 F32 gFPSClamped = 10.f;						// Pretend we start at target rate.
 F32 gFrameDTClamped = 0.f;					// Time between adjacent checks to network for packets
@@ -1464,7 +1464,7 @@ bool LLAppViewer::mainLoop()
 					ms_sleep(500);
 				}
 
-				const F64 max_idle_time = llmin(.005*10.0*gFrameTimeSeconds, LLUnitImplicit<F32, LLUnits::Seconds>(0.005f)); // 5 ms a second
+				const F64 max_idle_time = llmin(.005f*10.0f*gFrameTimeSeconds, (0.005f)); // 5 ms a second
 				idleTimer.reset();
 				S32 total_work_pending = 0;
 				S32 total_io_pending = 0;	
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index 60a1045f58f..76724a96626 100755
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -336,7 +336,7 @@ extern LLPumpIO* gServicePump;
 
 extern LLUnitImplicit<U64, LLUnits::Microseconds>	gStartTime;
 extern LLUnitImplicit<U64, LLUnits::Microseconds>   gFrameTime;					// The timestamp of the most-recently-processed frame
-extern LLUnitImplicit<F32, LLUnits::Seconds>		gFrameTimeSeconds;			// Loses msec precision after ~4.5 hours...
+extern F32		gFrameTimeSeconds;			// Loses msec precision after ~4.5 hours...
 extern LLUnitImplicit<F32, LLUnits::Seconds>		gFrameIntervalSeconds;		// Elapsed time between current and previous gFrameTimeSeconds
 extern F32		gFPSClamped;				// Frames per second, smoothed, weighted toward last frame
 extern F32		gFrameDTClamped;
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 933cc740640..b1ff0472331 100755
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1429,8 +1429,9 @@ bool idle_startup()
 
 		LL_DEBUGS("AppInit") << "Initializing camera..." << LL_ENDL;
 		gFrameTime    = totalTime();
-		LLUnit<F32, LLUnits::Seconds> last_time = gFrameTimeSeconds;
-		gFrameTimeSeconds = (gFrameTime - gStartTime);
+		F32 last_time = gFrameTimeSeconds;
+		const F64 SEC_TO_MICROSEC = 1000000.f;
+		gFrameTimeSeconds = (F32)((gFrameTime - gStartTime) / SEC_TO_MICROSEC);
 
 		gFrameIntervalSeconds = gFrameTimeSeconds - last_time;
 		if (gFrameIntervalSeconds < 0.f)
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index 4072ab524e0..0b75d440966 100755
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -1000,9 +1000,10 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)
 	// Time _can_ go backwards, for example if the user changes the system clock.
 	// It doesn't cause any fatal problems (just some oddness with stats), so we shouldn't assert here.
 //	llassert(time > gFrameTime);
-	LLUnit<F64, LLUnits::Seconds> time_diff = time - gFrameTime;
+	const F64 SEC_TO_MICROSEC = 1000000.f;
+	F64 time_diff = U64_to_F64(time - gFrameTime)/SEC_TO_MICROSEC;
 	gFrameTime	= time;
-	LLUnit<F64, LLUnits::Seconds> time_since_start = gFrameTime - gStartTime;
+	F64 time_since_start = U64_to_F64(gFrameTime - gStartTime)/SEC_TO_MICROSEC;
 	gFrameTimeSeconds = time_since_start;
 
 	gFrameIntervalSeconds = gFrameTimeSeconds - last_time;
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 69198ed53df..94be8e2a833 100755
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -593,7 +593,7 @@ void send_stats()
 	S32 window_height = gViewerWindow->getWindowHeightRaw();
 	S32 window_size = (window_width * window_height) / 1024;
 	misc["string_1"] = llformat("%d", window_size);
-	misc["string_2"] = llformat("Texture Time: %.2f, Total Time: %.2f", gTextureTimer.getElapsedTimeF32(), gFrameTimeSeconds.value());
+	misc["string_2"] = llformat("Texture Time: %.2f, Total Time: %.2f", gTextureTimer.getElapsedTimeF32(), gFrameTimeSeconds);
 
 // 	misc["int_1"] = LLSD::Integer(gSavedSettings.getU32("RenderQualityPerformance")); // Steve: 1.21
 // 	misc["int_2"] = LLSD::Integer(gFrameStalls); // Steve: 1.21
-- 
GitLab