summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2012-10-22 11:09:32 -0400
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2012-10-22 11:09:32 -0400
commitc961b5f6571cc6147410f9e7620e5aa44c009f3f (patch)
treef510b3ad949eb35696fc4c0218bb61f5af1de7a7
parent2390e21a9d2fc6f5cabe132a2bbd807aec186cfa (diff)
handling for crossing from non-server-bake to server-bake regions
-rwxr-xr-xindra/llappearance/lldriverparam.cpp1
-rwxr-xr-xindra/newview/llagent.cpp10
-rwxr-xr-xindra/newview/llvoavatar.cpp10
3 files changed, 17 insertions, 4 deletions
diff --git a/indra/llappearance/lldriverparam.cpp b/indra/llappearance/lldriverparam.cpp
index 01184a9e23..1f7e8b8652 100755
--- a/indra/llappearance/lldriverparam.cpp
+++ b/indra/llappearance/lldriverparam.cpp
@@ -190,6 +190,7 @@ BOOL LLDriverParam::setInfo(LLDriverParamInfo *info)
// FIXME DRANO this clobbers mWearablep, which means any code
// currently using mWearablep is wrong, or at least untested.
*new_param = *this;
+ //new_param->mWearablep = wearable;
// new_param->mDriven.clear(); // clear driven list to avoid overwriting avatar driven params from wearables.
return new_param;
}
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 3e26eac59a..9eb2723dcf 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -904,6 +904,16 @@ void LLAgent::setRegion(LLViewerRegion *regionp)
{
LLEnvManagerNew::instance().onRegionCrossing();
}
+
+ // If the newly entered region is using server bakes, and our
+ // current appearance is non-baked, request appearance update from
+ // server.
+ if (isAgentAvatarValid() &&
+ !gAgentAvatarp->isUsingServerBakes() &&
+ (mRegionp->getCentralBakeVersion()>0))
+ {
+ LLAppearanceMgr::instance().requestServerAppearanceUpdate();
+ }
}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index a49ecc0127..b08226fe94 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6400,8 +6400,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
//mesgsys->getU32Fast(_PREHASH_AppearanceData, _PREHASH_Flags, appearance_flags, 0);
}
- mUseServerBakes = (appearance_version > 0);
-
// Only now that we have result of appearance_version can we decide whether to bail out.
if( isSelf() )
{
@@ -6409,7 +6407,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
{
llwarns << avString() << "Received AvatarAppearance message for self in non-server-bake region" << llendl;
}
- if( mFirstTEMessageReceived && !isUsingServerBakes())
+ if( mFirstTEMessageReceived && (appearance_version == 0))
{
return;
}
@@ -6417,7 +6415,8 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
// Check for stale update.
- if (isUsingServerBakes() && isSelf()
+ if (isSelf()
+ && isUsingServerBakes()
&& this_update_cof_version >= LLViewerInventoryCategory::VERSION_INITIAL
&& this_update_cof_version < last_update_request_cof_version)
{
@@ -6425,6 +6424,9 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
<< ", got " << this_update_cof_version << llendl;
return;
}
+
+ mUseServerBakes = (appearance_version > 0);
+
applyParsedTEMessage(tec);
// prevent the overwriting of valid baked textures with invalid baked textures