MAINT-4018 FIXED Mini profile pictures tend to fail to load fully, and sometimes not at all.

Profile icons are no longer discarded uless they are too big. Icons will refresh correctly if needed.
andreykproductengine 2014-05-23 19:05:49 +03:00
parent 3723934045
commit ca79d23893
2 changed files with 14 additions and 2 deletions

View File

@ -247,7 +247,7 @@ void LLAvatarIconCtrl::setValue(const LLSD& value)
{
LLAvatarPropertiesProcessor* app =
LLAvatarPropertiesProcessor::getInstance();
if (mAvatarId.notNull())
if (mAvatarId.notNull() && mAvatarId != value.asUUID())
{
app->removeObserver(mAvatarId, this);
}
@ -255,6 +255,7 @@ void LLAvatarIconCtrl::setValue(const LLSD& value)
if (mAvatarId != value.asUUID())
{
mAvatarId = value.asUUID();
app->addObserver(mAvatarId, this);
// *BUG: This will return stale icons if a user changes their
// profile picture. However, otherwise we send too many upstream
@ -270,7 +271,7 @@ void LLAvatarIconCtrl::setValue(const LLSD& value)
// People API, rather than sending AvatarPropertyRequest
// messages. People API already hits the user table.
LLIconCtrl::setValue(mDefaultIconName);
app->addObserver(mAvatarId, this);
// duplicated requests are filtered later if there are any
app->sendAvatarPropertiesRequest(mAvatarId);
}
}

View File

@ -1458,6 +1458,17 @@ void LLViewerFetchedTexture::processTextureStats()
{
mDesiredDiscardLevel = 0;
}
else if (mDontDiscard && (mBoostLevel == LLGLTexture::BOOST_UI || mBoostLevel == LLGLTexture::BOOST_ICON))
{
if (mFullWidth > MAX_IMAGE_SIZE_DEFAULT || mFullHeight > MAX_IMAGE_SIZE_DEFAULT)
{
mDesiredDiscardLevel = 1; // MAX_IMAGE_SIZE_DEFAULT = 1024 and max size ever is 2048
}
else
{
mDesiredDiscardLevel = 0;
}
}
else if(!mFullWidth || !mFullHeight)
{
mDesiredDiscardLevel = llmin(getMaxDiscardLevel(), (S32)mLoadedCallbackDesiredDiscardLevel);