From 47622f0af60b7577b803fa98549aaeb8d709b960 Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Wed, 5 Feb 2020 03:52:49 +0200
Subject: [PATCH] Revert SL-4354

---
 indra/newview/llvoavatar.cpp | 79 +++++++-----------------------------
 indra/newview/llvoavatar.h   |  4 +-
 2 files changed, 16 insertions(+), 67 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 090766e71c7..71ff441600f 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -197,8 +197,6 @@ const F32 NAMETAG_VERT_OFFSET_WEIGHT = 0.17f;
 const U32 LLVOAvatar::VISUAL_COMPLEXITY_UNKNOWN = 0;
 const F64 HUD_OVERSIZED_TEXTURE_DATA_SIZE = 1024 * 1024;
 
-const F32 MAX_TEXTURE_WAIT_TIME_SEC = 60;
-
 enum ERenderName
 {
 	RENDER_NAME_NEVER,
@@ -665,7 +663,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mFullyLoadedInitialized(FALSE),
 	mVisualComplexity(VISUAL_COMPLEXITY_UNKNOWN),
 	mLoadedCallbacksPaused(FALSE),
-	mLoadedCallbackTextures(0),
 	mRenderUnloadedAvatar(LLCachedControl<bool>(gSavedSettings, "RenderUnloadedAvatar", false)),
 	mLastRezzedStatus(-1),
 	mIsEditingAppearance(FALSE),
@@ -886,9 +883,8 @@ BOOL LLVOAvatar::hasGray() const
 S32 LLVOAvatar::getRezzedStatus() const
 {
 	if (getIsCloud()) return 0;
-	bool textured = isFullyTextured();
-	if (textured && allBakedTexturesCompletelyDownloaded()) return 3;
-	if (textured) return 2;
+	if (isFullyTextured() && allBakedTexturesCompletelyDownloaded()) return 3;
+	if (isFullyTextured()) return 2;
 	llassert(hasGray());
 	return 1; // gray
 }
@@ -5330,7 +5326,6 @@ void LLVOAvatar::checkTextureLoading()
 	if(mCallbackTextureList.empty()) //when is self or no callbacks. Note: this list for self is always empty.
 	{
 		mLoadedCallbacksPaused = pause ;
-		mLoadedCallbackTextures = 0;
 		return ; //nothing to check.
 	}
 	
@@ -5338,9 +5333,7 @@ void LLVOAvatar::checkTextureLoading()
 	{
 		return ; //have not been invisible for enough time.
 	}
-
-    mLoadedCallbackTextures = pause ? mCallbackTextureList.size() : 0;
-
+	
 	for(LLLoadedCallbackEntry::source_callback_list_t::iterator iter = mCallbackTextureList.begin();
 		iter != mCallbackTextureList.end(); ++iter)
 	{
@@ -5361,15 +5354,9 @@ void LLVOAvatar::checkTextureLoading()
 
 				tex->unpauseLoadedCallbacks(&mCallbackTextureList) ;
 				tex->addTextureStats(START_AREA); //jump start the fetching again
-
-				// technically shouldn't need to account for missing, but callback might not have happened yet
-				if (tex->getDiscardLevel() >= 0 || tex->isMissingAsset())
-				{
-					mLoadedCallbackTextures++; // consider it loaded (we have at least some data)
-				}
 			}
-		}
-	}
+		}		
+	}			
 	
 	if(!pause)
 	{
@@ -7633,13 +7620,14 @@ bool LLVOAvatar::getIsCloud() const
 			);
 }
 
-void LLVOAvatar::updateRezzedStatusTimers(S32 rez_status)
+void LLVOAvatar::updateRezzedStatusTimers()
 {
 	// State machine for rezzed status. Statuses are -1 on startup, 0
 	// = cloud, 1 = gray, 2 = downloading, 3 = full.
 	// Purpose is to collect time data for each it takes avatar to reach
 	// various loading landmarks: gray, textured (partial), textured fully.
 
+	S32 rez_status = getRezzedStatus();
 	if (rez_status != mLastRezzedStatus)
 	{
 		LL_DEBUGS("Avatar") << avString() << "rez state change: " << mLastRezzedStatus << " -> " << rez_status << LL_ENDL;
@@ -7809,21 +7797,8 @@ void LLVOAvatar::logMetricsTimerRecord(const std::string& phase_name, F32 elapse
 // returns true if the value has changed.
 BOOL LLVOAvatar::updateIsFullyLoaded()
 {
-	S32 rez_status = getRezzedStatus();
-	bool loading = getIsCloud();
-	if (mFirstFullyVisible && !mIsControlAvatar)
-	{
-        loading = ((rez_status < 2)
-                   // Wait at least 60s for unfinished textures to finish on first load,
-                   // don't wait forever, it might fail. Even if it will eventually load by
-                   // itself and update mLoadedCallbackTextures (or fail and clean the list),
-                   // avatars are more time-sensitive than textures and can't wait that long.
-                   || (mLoadedCallbackTextures < mCallbackTextureList.size() && mLastTexCallbackAddedTime.getElapsedTimeF32() < MAX_TEXTURE_WAIT_TIME_SEC)
-                   || !mPendingAttachment.empty()
-                   || (rez_status < 3 && !isFullyBaked())
-                  );
-	}
-	updateRezzedStatusTimers(rez_status);
+	const bool loading = getIsCloud();
+	updateRezzedStatusTimers();
 	updateRuthTimer(loading);
 	return processFullyLoadedChange(loading);
 }
@@ -7859,22 +7834,13 @@ void LLVOAvatar::updateRuthTimer(bool loading)
 
 BOOL LLVOAvatar::processFullyLoadedChange(bool loading)
 {
-	// We wait a little bit before giving the 'all clear', to let things to
-	// settle down (models to snap into place, textures to get first packets)
-	const F32 LOADED_DELAY = 1.f;
-	const F32 FIRST_USE_DELAY = 3.f;
-
+	// we wait a little bit before giving the all clear,
+	// to let textures settle down
+	const F32 PAUSE = 1.f;
 	if (loading)
 		mFullyLoadedTimer.reset();
-
-	if (mFirstFullyVisible)
-	{
-		mFullyLoaded = (mFullyLoadedTimer.getElapsedTimeF32() > FIRST_USE_DELAY);
-	}
-	else
-	{
-		mFullyLoaded = (mFullyLoadedTimer.getElapsedTimeF32() > LOADED_DELAY);
-	}
+	
+	mFullyLoaded = (mFullyLoadedTimer.getElapsedTimeF32() > PAUSE);
 
 	if (!mPreviousFullyLoaded && !loading && mFullyLoaded)
 	{
@@ -8205,14 +8171,6 @@ void LLVOAvatar::updateMeshTextures()
 				}
 				baked_img->setLoadedCallback(onBakedTextureLoaded, SWITCH_TO_BAKED_DISCARD, FALSE, FALSE, new LLUUID( mID ), 
 					src_callback_list, paused );
-				if (baked_img->getDiscardLevel() < 0 && !paused)
-				{
-					mLastTexCallbackAddedTime.reset();
-				}
-				else
-				{
-					mLoadedCallbackTextures++; // consider it loaded
-				}
 
 				// this could add paused texture callbacks
 				mLoadedCallbacksPaused |= paused; 
@@ -8606,14 +8564,7 @@ void LLVOAvatar::onFirstTEMessageReceived()
 				LL_DEBUGS("Avatar") << avString() << "layer_baked, setting onInitialBakedTextureLoaded as callback" << LL_ENDL;
 				image->setLoadedCallback( onInitialBakedTextureLoaded, MAX_DISCARD_LEVEL, FALSE, FALSE, new LLUUID( mID ), 
 					src_callback_list, paused );
-				if (image->getDiscardLevel() < 0 && !paused)
-				{
-					mLastTexCallbackAddedTime.reset();
-				}
-				else
-				{
-					mLoadedCallbackTextures++; // consider it loaded
-				}
+
                                // this could add paused texture callbacks
                                mLoadedCallbacksPaused |= paused; 
 			}
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 55d8886dafb..00dccc5d121 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -348,7 +348,7 @@ class LLVOAvatar :
 	BOOL			isFullyTextured() const;
 	BOOL			hasGray() const; 
 	S32				getRezzedStatus() const; // 0 = cloud, 1 = gray, 2 = textured, 3 = textured and fully downloaded.
-	void			updateRezzedStatusTimers(S32 status);
+	void			updateRezzedStatusTimers();
 
 	S32				mLastRezzedStatus;
 
@@ -629,8 +629,6 @@ class LLVOAvatar :
 
 	LLLoadedCallbackEntry::source_callback_list_t mCallbackTextureList ; 
 	BOOL mLoadedCallbacksPaused;
-	S32 mLoadedCallbackTextures; // count of 'loaded' textures filled from mCallbackTextureList
-	LLFrameTimer mLastTexCallbackAddedTime;
 	std::set<LLUUID>	mTextureIDs;
 	//--------------------------------------------------------------------
 	// Local Textures
-- 
GitLab