From c961b5f6571cc6147410f9e7620e5aa44c009f3f Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Mon, 22 Oct 2012 11:09:32 -0400
Subject: handling for crossing from non-server-bake to server-bake regions

---
 indra/newview/llagent.cpp    | 10 ++++++++++
 indra/newview/llvoavatar.cpp | 10 ++++++----
 2 files changed, 16 insertions(+), 4 deletions(-)

(limited to 'indra/newview')

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
-- 
cgit v1.2.3