summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandreykproductengine <andreykproductengine@lindenlab.com>2020-01-30 15:20:00 +0200
committerandreykproductengine <andreykproductengine@lindenlab.com>2020-01-30 15:20:00 +0200
commit712164210cf57cfde3b17c3162dc4129d52e2780 (patch)
tree36c5d2861c85dd490b8eb5f7fd162095fb038703
parent66a831dcf94edb7e391c270ccb79a8f023219e09 (diff)
SL-4354 Mesh avatars look broken while loading.
-rw-r--r--indra/newview/llvoavatar.cpp33
1 files changed, 23 insertions, 10 deletions
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index f4f91a4009..780b6f81f1 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5339,7 +5339,7 @@ void LLVOAvatar::checkTextureLoading()
return ; //have not been invisible for enough time.
}
- mLoadedCallbackTextures = 0;
+ mLoadedCallbackTextures = pause ? mCallbackTextureList.size() : 0;
for(LLLoadedCallbackEntry::source_callback_list_t::iterator iter = mCallbackTextureList.begin();
iter != mCallbackTextureList.end(); ++iter)
@@ -5361,12 +5361,13 @@ void LLVOAvatar::checkTextureLoading()
tex->unpauseLoadedCallbacks(&mCallbackTextureList) ;
tex->addTextureStats(START_AREA); //jump start the fetching again
+
+ if (tex->isFullyLoaded())
+ {
+ mLoadedCallbackTextures++; // consider it loaded
+ }
}
}
- if (tex->isFullyLoaded())
- {
- mLoadedCallbackTextures++;
- }
}
if(!pause)
@@ -7812,13 +7813,11 @@ BOOL LLVOAvatar::updateIsFullyLoaded()
if (mFirstFullyVisible && !mIsControlAvatar)
{
loading = ((rez_status < 2)
- || mMeshTexturesDirty
- || mVisualComplexityStale //complexity just updated
// 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)
+ || (mLoadedCallbackTextures < mCallbackTextureList.size() && mLastTexCallbackAddedTime.getElapsedTimeF32() < MAX_TEXTURE_WAIT_TIME_SEC)
|| !mPendingAttachment.empty()
|| (rez_status < 3 && !isFullyBaked())
);
@@ -8205,7 +8204,14 @@ void LLVOAvatar::updateMeshTextures()
}
baked_img->setLoadedCallback(onBakedTextureLoaded, SWITCH_TO_BAKED_DISCARD, FALSE, FALSE, new LLUUID( mID ),
src_callback_list, paused );
- mLastTexCallbackAddedTime.reset();
+ if (!baked_img->isFullyLoaded() && !paused)
+ {
+ mLastTexCallbackAddedTime.reset();
+ }
+ else
+ {
+ mLoadedCallbackTextures++; // consider it loaded
+ }
// this could add paused texture callbacks
mLoadedCallbacksPaused |= paused;
@@ -8599,7 +8605,14 @@ 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 );
- mLastTexCallbackAddedTime.reset();
+ if (!image->isFullyLoaded() && !paused)
+ {
+ mLastTexCallbackAddedTime.reset();
+ }
+ else
+ {
+ mLoadedCallbackTextures++; // consider it loaded
+ }
// this could add paused texture callbacks
mLoadedCallbacksPaused |= paused;
}