diff options
Diffstat (limited to 'indra')
51 files changed, 292 insertions, 2427 deletions
| diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index e3497c107d..f10ae813fd 100644..100755 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp @@ -491,7 +491,6 @@ void LLAvatarAppearance::computeBodySize()  	if (new_body_size != mBodySize || old_offset != mAvatarOffset.mV[VZ])  	{  		mBodySize = new_body_size; -		bodySizeChanged();  	}  } @@ -1361,14 +1360,14 @@ BOOL LLAvatarAppearance::teToColorParams( ETextureIndex te, U32 *param_name )  	return TRUE;  } -void LLAvatarAppearance::setClothesColor( ETextureIndex te, const LLColor4& new_color, BOOL upload_bake ) +void LLAvatarAppearance::setClothesColor( ETextureIndex te, const LLColor4& new_color)  {  	U32 param_name[3];  	if( teToColorParams( te, param_name ) )  	{ -		setVisualParamWeight( param_name[0], new_color.mV[VX], upload_bake ); -		setVisualParamWeight( param_name[1], new_color.mV[VY], upload_bake ); -		setVisualParamWeight( param_name[2], new_color.mV[VZ], upload_bake ); +		setVisualParamWeight( param_name[0], new_color.mV[VX]); +		setVisualParamWeight( param_name[1], new_color.mV[VY]); +		setVisualParamWeight( param_name[2], new_color.mV[VZ]);  	}  } diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h index bf13680496..1e898026c0 100644..100755 --- a/indra/llappearance/llavatarappearance.h +++ b/indra/llappearance/llavatarappearance.h @@ -107,7 +107,6 @@ public:  public:  	virtual bool 	isSelf() const { return false; } // True if this avatar is for this viewer's agent  	virtual BOOL	isValid() const; -	virtual BOOL	isUsingServerBakes() const = 0;  	virtual BOOL	isUsingLocalAppearance() const = 0;  	virtual BOOL	isEditingAppearance() const = 0; @@ -144,7 +143,6 @@ protected:  	static BOOL			parseSkeletonFile(const std::string& filename);  	virtual void		buildCharacter();  	virtual BOOL		loadAvatar(); -	virtual void		bodySizeChanged() = 0;  	BOOL				setupBone(const LLAvatarBoneInfo* info, LLJoint* parent, S32 ¤t_volume_num, S32 ¤t_joint_num);  	BOOL				allocateCharacterJoints(U32 num); @@ -225,7 +223,7 @@ public:  	// Composites  	//--------------------------------------------------------------------  public: -	virtual void	invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result) = 0; +	virtual void	invalidateComposite(LLTexLayerSet* layerset) = 0;  /********************************************************************************   **                                                                            ** @@ -256,7 +254,7 @@ protected:  	// Clothing colors (convenience functions to access visual parameters)  	//--------------------------------------------------------------------  public: -	void			setClothesColor(LLAvatarAppearanceDefines::ETextureIndex te, const LLColor4& new_color, BOOL upload_bake); +	void			setClothesColor(LLAvatarAppearanceDefines::ETextureIndex te, const LLColor4& new_color);  	LLColor4		getClothesColor(LLAvatarAppearanceDefines::ETextureIndex te);  	static BOOL		teToColorParams(LLAvatarAppearanceDefines::ETextureIndex te, U32 *param_name); @@ -265,7 +263,7 @@ public:  	//--------------------------------------------------------------------  public:  	LLColor4		getGlobalColor(const std::string& color_name ) const; -	virtual void	onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake) = 0; +	virtual void	onGlobalColorChanged(const LLTexGlobalColor* global_color) = 0;  protected:  	LLTexGlobalColor* mTexSkinColor;  	LLTexGlobalColor* mTexHairColor; diff --git a/indra/llappearance/lldriverparam.cpp b/indra/llappearance/lldriverparam.cpp index 1f7e8b8652..83dbcfd6bf 100644..100755 --- a/indra/llappearance/lldriverparam.cpp +++ b/indra/llappearance/lldriverparam.cpp @@ -178,7 +178,7 @@ BOOL LLDriverParam::setInfo(LLDriverParamInfo *info)  	mID = info->mID;  	info->mDriverParam = this; -	setWeight(getDefaultWeight(), FALSE ); +	setWeight(getDefaultWeight());  	return TRUE;  } @@ -195,7 +195,7 @@ BOOL LLDriverParam::setInfo(LLDriverParamInfo *info)  	return new_param;  } -void LLDriverParam::setWeight(F32 weight, BOOL upload_bake) +void LLDriverParam::setWeight(F32 weight)  {  	F32 min_weight = getMinWeight();  	F32 max_weight = getMaxWeight(); @@ -254,7 +254,7 @@ void LLDriverParam::setWeight(F32 weight, BOOL upload_bake)  					driven_weight = driven_min;  				} -				setDrivenWeight(driven,driven_weight,upload_bake); +				setDrivenWeight(driven,driven_weight);  				continue;  			}  			else  @@ -278,13 +278,13 @@ void LLDriverParam::setWeight(F32 weight, BOOL upload_bake)  					driven_weight = driven_min;  				} -				setDrivenWeight(driven,driven_weight,upload_bake); +				setDrivenWeight(driven,driven_weight);  				continue;  			}  		}  		driven_weight = getDrivenWeight(driven, mCurWeight); -		setDrivenWeight(driven,driven_weight,upload_bake); +		setDrivenWeight(driven,driven_weight);  	}  } @@ -430,9 +430,9 @@ const LLViewerVisualParam* LLDriverParam::getDrivenParam(S32 index) const  //-----------------------------------------------------------------------------  // setAnimationTarget()  //----------------------------------------------------------------------------- -void LLDriverParam::setAnimationTarget( F32 target_value, BOOL upload_bake ) +void LLDriverParam::setAnimationTarget( F32 target_value)  { -	LLVisualParam::setAnimationTarget(target_value, upload_bake); +	LLVisualParam::setAnimationTarget(target_value);  	for( entry_list_t::iterator iter = mDriven.begin(); iter != mDriven.end(); iter++ )  	{ @@ -441,16 +441,16 @@ void LLDriverParam::setAnimationTarget( F32 target_value, BOOL upload_bake )  		// this isn't normally necessary, as driver params handle interpolation of their driven params  		// but texture params need to know to assume their final value at beginning of interpolation -		driven->mParam->setAnimationTarget(driven_weight, upload_bake); +		driven->mParam->setAnimationTarget(driven_weight);  	}  }  //-----------------------------------------------------------------------------  // stopAnimating()  //----------------------------------------------------------------------------- -void LLDriverParam::stopAnimating(BOOL upload_bake) +void LLDriverParam::stopAnimating()  { -	LLVisualParam::stopAnimating(upload_bake); +	LLVisualParam::stopAnimating();  	for( entry_list_t::iterator iter = mDriven.begin(); iter != mDriven.end(); iter++ )  	{ @@ -530,7 +530,7 @@ void LLDriverParam::updateCrossDrivenParams(LLWearableType::EType driven_type)  		LLWearable *wearable = mAvatarAppearance->getWearableData()->getTopWearable(driver_type);  		if (wearable)  		{ -			wearable->setVisualParamWeight(mID, wearable->getVisualParamWeight(mID), false); +			wearable->setVisualParamWeight(mID, wearable->getVisualParamWeight(mID));  		}  	}  } @@ -593,7 +593,7 @@ F32 LLDriverParam::getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight  	return driven_weight;  } -void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake) +void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight)  {  	bool use_self = false;  	if(mWearablep && @@ -610,10 +610,10 @@ void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bo  	if (use_self)  	{  		// call setWeight through LLVOAvatarSelf so other wearables can be updated with the correct values -		mAvatarAppearance->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight, upload_bake ); +		mAvatarAppearance->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight);  	}  	else  	{ -		driven->mParam->setWeight( driven_weight, upload_bake ); +		driven->mParam->setWeight( driven_weight);  	}  } diff --git a/indra/llappearance/lldriverparam.h b/indra/llappearance/lldriverparam.h index 040c9cf5be..5a45c8f30d 100644..100755 --- a/indra/llappearance/lldriverparam.h +++ b/indra/llappearance/lldriverparam.h @@ -110,9 +110,9 @@ public:  	// LLVisualParam Virtual functions  	/*virtual*/ void				apply( ESex sex ) {} // apply is called separately for each driven param. -	/*virtual*/ void				setWeight(F32 weight, BOOL upload_bake); -	/*virtual*/ void				setAnimationTarget( F32 target_value, BOOL upload_bake ); -	/*virtual*/ void				stopAnimating(BOOL upload_bake); +	/*virtual*/ void				setWeight(F32 weight); +	/*virtual*/ void				setAnimationTarget( F32 target_value); +	/*virtual*/ void				stopAnimating();  	/*virtual*/ BOOL				linkDrivenParams(visual_param_mapper mapper, BOOL only_cross_params);  	/*virtual*/ void				resetDrivenParams(); @@ -129,7 +129,7 @@ public:  protected:  	F32 getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight); -	void setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake); +	void setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight);  	LL_ALIGN_16(LLVector4a	mDefaultVec); // temp holder diff --git a/indra/llappearance/llpolymorph.cpp b/indra/llappearance/llpolymorph.cpp index 93c2f15a53..84df3f1830 100644 --- a/indra/llappearance/llpolymorph.cpp +++ b/indra/llappearance/llpolymorph.cpp @@ -342,7 +342,7 @@ BOOL LLPolyMorphTarget::setInfo(LLPolyMorphTargetInfo* info)  		return FALSE;  	mInfo = info;  	mID = info->mID; -	setWeight(getDefaultWeight(), FALSE ); +	setWeight(getDefaultWeight());  	LLAvatarAppearance* avatarp = mMesh->getAvatar();  	LLPolyMorphTargetInfo::volume_info_list_t::iterator iter; diff --git a/indra/llappearance/llpolyskeletaldistortion.cpp b/indra/llappearance/llpolyskeletaldistortion.cpp index eb86f77d97..2a5866afe4 100644 --- a/indra/llappearance/llpolyskeletaldistortion.cpp +++ b/indra/llappearance/llpolyskeletaldistortion.cpp @@ -130,7 +130,7 @@ BOOL LLPolySkeletalDistortion::setInfo(LLPolySkeletalDistortionInfo *info)                  return FALSE;          mInfo = info;          mID = info->mID; -        setWeight(getDefaultWeight(), FALSE ); +        setWeight(getDefaultWeight());          LLPolySkeletalDistortionInfo::bone_info_list_t::iterator iter;          for (iter = getInfo()->mBoneInfoList.begin(); iter != getInfo()->mBoneInfoList.end(); iter++) diff --git a/indra/llappearance/lltexglobalcolor.cpp b/indra/llappearance/lltexglobalcolor.cpp index f38b982104..432e2e9f49 100644..100755 --- a/indra/llappearance/lltexglobalcolor.cpp +++ b/indra/llappearance/lltexglobalcolor.cpp @@ -103,9 +103,9 @@ LLTexParamGlobalColor::LLTexParamGlobalColor(LLTexGlobalColor* tex_global_color)  	return new_param;  } -void LLTexParamGlobalColor::onGlobalColorChanged(bool upload_bake) +void LLTexParamGlobalColor::onGlobalColorChanged()  { -	mAvatarAppearance->onGlobalColorChanged(mTexGlobalColor, upload_bake); +	mAvatarAppearance->onGlobalColorChanged(mTexGlobalColor);  }  //----------------------------------------------------------------------------- diff --git a/indra/llappearance/lltexglobalcolor.h b/indra/llappearance/lltexglobalcolor.h index 2867479876..1b0c91b5ca 100644..100755 --- a/indra/llappearance/lltexglobalcolor.h +++ b/indra/llappearance/lltexglobalcolor.h @@ -75,7 +75,7 @@ public:  	LLTexParamGlobalColor(LLTexGlobalColor *tex_color);  	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable) const;  protected: -	/*virtual*/ void onGlobalColorChanged(bool upload_bake); +	/*virtual*/ void onGlobalColorChanged();  private:  	LLTexGlobalColor*		mTexGlobalColor;  }; diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp index 6aae9a8cc1..80aded450d 100644..100755 --- a/indra/llappearance/lltexlayerparams.cpp +++ b/indra/llappearance/lltexlayerparams.cpp @@ -160,7 +160,7 @@ BOOL LLTexLayerParamAlpha::getMultiplyBlend() const  	return ((LLTexLayerParamAlphaInfo *)getInfo())->mMultiplyBlend; 	  } -void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL upload_bake) +void LLTexLayerParamAlpha::setWeight(F32 weight)  {  	if (mIsAnimating || mTexLayer == NULL)  	{ @@ -178,35 +178,35 @@ void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL upload_bake)  		if ((mAvatarAppearance->getSex() & getSex()) &&  			(mAvatarAppearance->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.  		{ -			mAvatarAppearance->invalidateComposite(mTexLayer->getTexLayerSet(), upload_bake); +			mAvatarAppearance->invalidateComposite(mTexLayer->getTexLayerSet());  			mTexLayer->invalidateMorphMasks();  		}  	}  } -void LLTexLayerParamAlpha::setAnimationTarget(F32 target_value, BOOL upload_bake) +void LLTexLayerParamAlpha::setAnimationTarget(F32 target_value)  {   	// do not animate dummy parameters  	if (mIsDummy)  	{ -		setWeight(target_value, upload_bake); +		setWeight(target_value);  		return;  	}  	mTargetWeight = target_value;  -	setWeight(target_value, upload_bake);  +	setWeight(target_value);   	mIsAnimating = TRUE;  	if (mNext)  	{ -		mNext->setAnimationTarget(target_value, upload_bake); +		mNext->setAnimationTarget(target_value);  	}  } -void LLTexLayerParamAlpha::animate(F32 delta, BOOL upload_bake) +void LLTexLayerParamAlpha::animate(F32 delta)  {  	if (mNext)  	{ -		mNext->animate(delta, upload_bake); +		mNext->animate(delta);  	}  } @@ -449,7 +449,8 @@ LLColor4 LLTexLayerParamColor::getNetColor() const  	}  } -void LLTexLayerParamColor::setWeight(F32 weight, BOOL upload_bake) + +void LLTexLayerParamColor::setWeight(F32 weight)  {  	if (mIsAnimating)  	{ @@ -474,10 +475,10 @@ void LLTexLayerParamColor::setWeight(F32 weight, BOOL upload_bake)  		if ((mAvatarAppearance->getSex() & getSex()) && (mAvatarAppearance->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.  		{ -			onGlobalColorChanged(upload_bake); +			onGlobalColorChanged();  			if (mTexLayer)  			{ -				mAvatarAppearance->invalidateComposite(mTexLayer->getTexLayerSet(), upload_bake); +				mAvatarAppearance->invalidateComposite(mTexLayer->getTexLayerSet());  			}  		} @@ -485,23 +486,23 @@ void LLTexLayerParamColor::setWeight(F32 weight, BOOL upload_bake)  	}  } -void LLTexLayerParamColor::setAnimationTarget(F32 target_value, BOOL upload_bake) +void LLTexLayerParamColor::setAnimationTarget(F32 target_value)  {   	// set value first then set interpolating flag to ignore further updates  	mTargetWeight = target_value;  -	setWeight(target_value, upload_bake); +	setWeight(target_value);  	mIsAnimating = TRUE;  	if (mNext)  	{ -		mNext->setAnimationTarget(target_value, upload_bake); +		mNext->setAnimationTarget(target_value);  	}  } -void LLTexLayerParamColor::animate(F32 delta, BOOL upload_bake) +void LLTexLayerParamColor::animate(F32 delta)  {  	if (mNext)  	{ -		mNext->animate(delta, upload_bake); +		mNext->animate(delta);  	}  } diff --git a/indra/llappearance/lltexlayerparams.h b/indra/llappearance/lltexlayerparams.h index b38d28d3eb..e1a8c28265 100644..100755 --- a/indra/llappearance/lltexlayerparams.h +++ b/indra/llappearance/lltexlayerparams.h @@ -83,9 +83,9 @@ public:  	// LLVisualParam Virtual functions  	///*virtual*/ BOOL		parseData(LLXmlTreeNode* node);  	/*virtual*/ void		apply( ESex avatar_sex ) {} -	/*virtual*/ void		setWeight(F32 weight, BOOL upload_bake); -	/*virtual*/ void		setAnimationTarget(F32 target_value, BOOL upload_bake);  -	/*virtual*/ void		animate(F32 delta, BOOL upload_bake); +	/*virtual*/ void		setWeight(F32 weight); +	/*virtual*/ void		setAnimationTarget(F32 target_value);  +	/*virtual*/ void		animate(F32 delta);  	// LLViewerVisualParam Virtual functions  	/*virtual*/ F32					getTotalDistortion()									{ return 1.f; } @@ -174,9 +174,9 @@ public:  	// LLVisualParam Virtual functions  	///*virtual*/ BOOL			parseData(LLXmlTreeNode* node);  	/*virtual*/ void			apply( ESex avatar_sex ) {} -	/*virtual*/ void			setWeight(F32 weight, BOOL upload_bake); -	/*virtual*/ void			setAnimationTarget(F32 target_value, BOOL upload_bake); -	/*virtual*/ void			animate(F32 delta, BOOL upload_bake); +	/*virtual*/ void			setWeight(F32 weight); +	/*virtual*/ void			setAnimationTarget(F32 target_value); +	/*virtual*/ void			animate(F32 delta);  	// LLViewerVisualParam Virtual functions @@ -190,7 +190,7 @@ public:  	// New functions  	LLColor4				getNetColor() const;  protected: -	virtual void onGlobalColorChanged(bool upload_bake) {} +	virtual void onGlobalColorChanged() {}  private:  	LL_ALIGN_16(LLVector4a				mAvgDistortionVec);  } LL_ALIGN_POSTFIX(16); diff --git a/indra/llappearance/llviewervisualparam.cpp b/indra/llappearance/llviewervisualparam.cpp index cc81bcf118..0d8d1dbeca 100644 --- a/indra/llappearance/llviewervisualparam.cpp +++ b/indra/llappearance/llviewervisualparam.cpp @@ -137,7 +137,7 @@ BOOL LLViewerVisualParam::setInfo(LLViewerVisualParamInfo *info)  		return FALSE;  	mInfo = info;  	mID = info->mID; -	setWeight(getDefaultWeight(), FALSE ); +	setWeight(getDefaultWeight());  	return TRUE;  } diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp index d86a460511..525a782ba0 100644..100755 --- a/indra/llappearance/llwearable.cpp +++ b/indra/llappearance/llwearable.cpp @@ -524,7 +524,7 @@ void LLWearable::revertValues()  		LLVisualParam *param = getVisualParam(id);  		if(param &&  !dynamic_cast<LLDriverParam*>(param) )  		{ -			setVisualParamWeight(id, value, TRUE); +			setVisualParamWeight(id, value);  		}  	} @@ -536,7 +536,7 @@ void LLWearable::revertValues()  		LLVisualParam *param = getVisualParam(id);  		if(param &&  dynamic_cast<LLDriverParam*>(param) )  		{ -			setVisualParamWeight(id, value, TRUE); +			setVisualParamWeight(id, value);  		}  	} @@ -646,12 +646,12 @@ void LLWearable::addVisualParam(LLVisualParam *param)  } -void LLWearable::setVisualParamWeight(S32 param_index, F32 value, BOOL upload_bake) +void LLWearable::setVisualParamWeight(S32 param_index, F32 value)  {  	if( is_in_map(mVisualParamIndexMap, param_index ) )  	{  		LLVisualParam *wearable_param = mVisualParamIndexMap[param_index]; -		wearable_param->setWeight(value, upload_bake); +		wearable_param->setWeight(value);  	}  	else  	{ @@ -692,14 +692,14 @@ void LLWearable::getVisualParams(visual_param_vec_t &list)  	}  } -void LLWearable::animateParams(F32 delta, BOOL upload_bake) +void LLWearable::animateParams(F32 delta)  {  	for(visual_param_index_map_t::iterator iter = mVisualParamIndexMap.begin();  		 iter != mVisualParamIndexMap.end();  		 ++iter)  	{  		LLVisualParam *param = (LLVisualParam*) iter->second; -		param->animate(delta, upload_bake); +		param->animate(delta);  	}  } @@ -717,14 +717,14 @@ LLColor4 LLWearable::getClothesColor(S32 te) const  	return color;  } -void LLWearable::setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake ) +void LLWearable::setClothesColor( S32 te, const LLColor4& new_color)  {  	U32 param_name[3];  	if( LLAvatarAppearance::teToColorParams( (LLAvatarAppearanceDefines::ETextureIndex)te, param_name ) )  	{  		for( U8 index = 0; index < 3; index++ )  		{ -			setVisualParamWeight(param_name[index], new_color.mV[index], upload_bake); +			setVisualParamWeight(param_name[index], new_color.mV[index]);  		}  	}  } @@ -743,7 +743,7 @@ void LLWearable::writeToAvatar(LLAvatarAppearance* avatarp)  			S32 param_id = param->getID();  			F32 weight = getVisualParamWeight(param_id); -			avatarp->setVisualParamWeight( param_id, weight, FALSE ); +			avatarp->setVisualParamWeight( param_id, weight);  		}  	}  } diff --git a/indra/llappearance/llwearable.h b/indra/llappearance/llwearable.h index 6f5a1e14e8..84509a60fd 100644..100755 --- a/indra/llappearance/llwearable.h +++ b/indra/llappearance/llwearable.h @@ -95,14 +95,14 @@ public:  	void				setLocalTextureObject(S32 index, LLLocalTextureObject <o);  	void				addVisualParam(LLVisualParam *param); -	void 				setVisualParamWeight(S32 index, F32 value, BOOL upload_bake); +	void 				setVisualParamWeight(S32 index, F32 value);  	F32					getVisualParamWeight(S32 index) const;  	LLVisualParam*		getVisualParam(S32 index) const;  	void				getVisualParams(visual_param_vec_t &list); -	void				animateParams(F32 delta, BOOL upload_bake); +	void				animateParams(F32 delta);  	LLColor4			getClothesColor(S32 te) const; -	void 				setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake ); +	void 				setClothesColor( S32 te, const LLColor4& new_color);  	virtual void		revertValues();  	virtual void		saveValues(); diff --git a/indra/llappearance/llwearabledata.cpp b/indra/llappearance/llwearabledata.cpp index 68fdcca782..d70bbf286a 100644..100755 --- a/indra/llappearance/llwearabledata.cpp +++ b/indra/llappearance/llwearabledata.cpp @@ -119,13 +119,6 @@ U32 LLWearableData::pushWearable(const LLWearableType::EType type,  void LLWearableData::wearableUpdated(LLWearable *wearable, BOOL removed)  {  	wearable->setUpdated(); -	// FIXME DRANO avoid updating params via wearables when rendering server-baked appearance. -#if 0 -	if (mAvatarAppearance->isUsingServerBakes() && !mAvatarAppearance->isUsingLocalAppearance()) -	{ -		return; -	} -#endif  	if (!removed)  	{  		pullCrossWearableValues(wearable->getType()); diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp index 85cf1cd3f5..2aebbc9274 100755 --- a/indra/llcharacter/llcharacter.cpp +++ b/indra/llcharacter/llcharacter.cpp @@ -286,13 +286,13 @@ void LLCharacter::removeAnimationData(std::string name)  //-----------------------------------------------------------------------------  // setVisualParamWeight()  //----------------------------------------------------------------------------- -BOOL LLCharacter::setVisualParamWeight(const LLVisualParam* which_param, F32 weight, BOOL upload_bake) +BOOL LLCharacter::setVisualParamWeight(const LLVisualParam* which_param, F32 weight)  {  	S32 index = which_param->getID();  	visual_param_index_map_t::iterator index_iter = mVisualParamIndexMap.find(index);  	if (index_iter != mVisualParamIndexMap.end())  	{ -		index_iter->second->setWeight(weight, upload_bake); +		index_iter->second->setWeight(weight);  		return TRUE;  	}  	return FALSE; @@ -301,7 +301,7 @@ BOOL LLCharacter::setVisualParamWeight(const LLVisualParam* which_param, F32 wei  //-----------------------------------------------------------------------------  // setVisualParamWeight()  //----------------------------------------------------------------------------- -BOOL LLCharacter::setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake) +BOOL LLCharacter::setVisualParamWeight(const char* param_name, F32 weight)  {  	std::string tname(param_name);  	LLStringUtil::toLower(tname); @@ -309,7 +309,7 @@ BOOL LLCharacter::setVisualParamWeight(const char* param_name, F32 weight, BOOL  	visual_param_name_map_t::iterator name_iter = mVisualParamNameMap.find(tableptr);  	if (name_iter != mVisualParamNameMap.end())  	{ -		name_iter->second->setWeight(weight, upload_bake); +		name_iter->second->setWeight(weight);  		return TRUE;  	}  	llwarns << "LLCharacter::setVisualParamWeight() Invalid visual parameter: " << param_name << llendl; @@ -319,12 +319,12 @@ BOOL LLCharacter::setVisualParamWeight(const char* param_name, F32 weight, BOOL  //-----------------------------------------------------------------------------  // setVisualParamWeight()  //----------------------------------------------------------------------------- -BOOL LLCharacter::setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake) +BOOL LLCharacter::setVisualParamWeight(S32 index, F32 weight)  {  	visual_param_index_map_t::iterator index_iter = mVisualParamIndexMap.find(index);  	if (index_iter != mVisualParamIndexMap.end())  	{ -		index_iter->second->setWeight(weight, upload_bake); +		index_iter->second->setWeight(weight);  		return TRUE;  	}  	llwarns << "LLCharacter::setVisualParamWeight() Invalid visual parameter index: " << index << llendl; @@ -394,7 +394,7 @@ void LLCharacter::clearVisualParamWeights()  	{  		if (param->isTweakable())  		{ -			param->setWeight( param->getDefaultWeight(), FALSE ); +			param->setWeight( param->getDefaultWeight());  		}  	}  } diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h index 5740dbce77..ebc5d80a1f 100755 --- a/indra/llcharacter/llcharacter.h +++ b/indra/llcharacter/llcharacter.h @@ -190,9 +190,9 @@ public:  	void addVisualParam(LLVisualParam *param);  	void addSharedVisualParam(LLVisualParam *param); -	virtual BOOL setVisualParamWeight(const LLVisualParam *which_param, F32 weight, BOOL upload_bake = FALSE ); -	virtual BOOL setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake = FALSE ); -	virtual BOOL setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake = FALSE ); +	virtual BOOL setVisualParamWeight(const LLVisualParam *which_param, F32 weight); +	virtual BOOL setVisualParamWeight(const char* param_name, F32 weight); +	virtual BOOL setVisualParamWeight(S32 index, F32 weight);  	// get visual param weight by param or name  	F32 getVisualParamWeight(LLVisualParam *distortion); diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp index f7cb0f76b7..624e16e2ca 100755 --- a/indra/llcharacter/llvisualparam.cpp +++ b/indra/llcharacter/llvisualparam.cpp @@ -220,7 +220,7 @@ BOOL LLVisualParam::parseData(LLXmlTreeNode *node)  //-----------------------------------------------------------------------------  // setWeight()  //----------------------------------------------------------------------------- -void LLVisualParam::setWeight(F32 weight, BOOL upload_bake) +void LLVisualParam::setWeight(F32 weight)  {  	if (mIsAnimating)  	{ @@ -238,19 +238,19 @@ void LLVisualParam::setWeight(F32 weight, BOOL upload_bake)  	if (mNext)  	{ -		mNext->setWeight(weight, upload_bake); +		mNext->setWeight(weight);  	}  }  //-----------------------------------------------------------------------------  // setAnimationTarget()  //----------------------------------------------------------------------------- -void LLVisualParam::setAnimationTarget(F32 target_value, BOOL upload_bake) +void LLVisualParam::setAnimationTarget(F32 target_value)  {  	// don't animate dummy parameters  	if (mIsDummy)  	{ -		setWeight(target_value, upload_bake); +		setWeight(target_value);  		mTargetWeight = mCurWeight;  		return;  	} @@ -270,7 +270,7 @@ void LLVisualParam::setAnimationTarget(F32 target_value, BOOL upload_bake)  	if (mNext)  	{ -		mNext->setAnimationTarget(target_value, upload_bake); +		mNext->setAnimationTarget(target_value);  	}  } @@ -287,24 +287,24 @@ void LLVisualParam::setNextParam( LLVisualParam *next )  //-----------------------------------------------------------------------------  // animate()  //----------------------------------------------------------------------------- -void LLVisualParam::animate( F32 delta, BOOL upload_bake ) +void LLVisualParam::animate( F32 delta)  {  	if (mIsAnimating)  	{  		F32 new_weight = ((mTargetWeight - mCurWeight) * delta) + mCurWeight; -		setWeight(new_weight, upload_bake); +		setWeight(new_weight);  	}  }  //-----------------------------------------------------------------------------  // stopAnimating()  //----------------------------------------------------------------------------- -void LLVisualParam::stopAnimating(BOOL upload_bake) +void LLVisualParam::stopAnimating()  {   	if (mIsAnimating && isTweakable())  	{  		mIsAnimating = FALSE;  -		setWeight(mTargetWeight, upload_bake); +		setWeight(mTargetWeight);  	}  } diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h index a4d9f93e56..6c3bf2901a 100755 --- a/indra/llcharacter/llvisualparam.h +++ b/indra/llcharacter/llvisualparam.h @@ -120,10 +120,10 @@ public:  	//virtual BOOL			parseData( LLXmlTreeNode *node ) = 0;  	virtual void			apply( ESex avatar_sex ) = 0;  	//  Default functions -	virtual void			setWeight(F32 weight, BOOL upload_bake); -	virtual void			setAnimationTarget( F32 target_value, BOOL upload_bake ); -	virtual void			animate(F32 delta, BOOL upload_bake); -	virtual void			stopAnimating(BOOL upload_bake); +	virtual void			setWeight(F32 weight); +	virtual void			setAnimationTarget( F32 target_value); +	virtual void			animate(F32 delta); +	virtual void			stopAnimating();  	virtual BOOL			linkDrivenParams(visual_param_mapper mapper, BOOL only_cross_params);  	virtual void			resetDrivenParams(); diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 7e50e761ae..9f9b9c68a3 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -110,7 +110,6 @@ set(viewer_SOURCE_FILES      llagentpilot.cpp      llagentui.cpp      llagentwearables.cpp -    llagentwearablesfetch.cpp      llanimstatelabels.cpp      llappcorehttp.cpp      llappearancemgr.cpp @@ -695,7 +694,6 @@ set(viewer_HEADER_FILES      llagentpilot.h      llagentui.h      llagentwearables.h -    llagentwearablesfetch.h      llanimstatelabels.h      llappcorehttp.h      llappearance.h diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 5f87d73c40..072e5a82b4 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -407,7 +407,7 @@ LLAgent::LLAgent() :  	mNextFidgetTime(0.f),  	mCurrentFidget(0),  	mFirstLogin(FALSE), -	mGenderChosen(FALSE), +	mOutfitChosen(FALSE),  	mVoiceConnected(false), @@ -811,29 +811,6 @@ void LLAgent::standUp()  } -void LLAgent::handleServerBakeRegionTransition(const LLUUID& region_id) -{ -	llinfos << "called" << llendl; - - -	// Old-style appearance entering a server-bake region. -	if (isAgentAvatarValid() && -		!gAgentAvatarp->isUsingServerBakes() && -		(mRegionp->getCentralBakeVersion()>0)) -	{ -		llinfos << "update requested due to region transition" << llendl; -		LLAppearanceMgr::instance().requestServerAppearanceUpdate(); -	} -	// new-style appearance entering a non-bake region, -	// need to check for existence of the baking service. -	else if (isAgentAvatarValid() && -			 gAgentAvatarp->isUsingServerBakes() && -			 mRegionp->getCentralBakeVersion()==0) -	{ -		gAgentAvatarp->checkForUnsupportedServerBakeAppearance(); -	} -} -  //-----------------------------------------------------------------------------  // setRegion()  //----------------------------------------------------------------------------- @@ -929,19 +906,6 @@ 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 (mRegionp->capabilitiesReceived()) -	{ -		handleServerBakeRegionTransition(mRegionp->getRegionID()); -	} -	else -	{ -		// Need to handle via callback after caps arrive. -		mRegionp->setCapabilitiesReceivedCallback(boost::bind(&LLAgent::handleServerBakeRegionTransition,this,_1)); -	}  } @@ -1889,7 +1853,7 @@ BOOL LLAgent::needsRenderAvatar()  		return FALSE;  	} -	return mShowAvatar && mGenderChosen; +	return mShowAvatar && mOutfitChosen;  }  // TRUE if we need to render your own avatar's head. @@ -3612,82 +3576,6 @@ void LLAgent::processControlRelease(LLMessageSystem *msg, void **)  }  */ -//static -void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void **user_data) -{ -	gAgentQueryManager.mNumPendingQueries--; -	if (gAgentQueryManager.mNumPendingQueries == 0) -	{ -		selfStopPhase("fetch_texture_cache_entries"); -	} - -	if (!isAgentAvatarValid() || gAgentAvatarp->isDead()) -	{ -		llwarns << "No avatar for user in cached texture update!" << llendl; -		return; -	} - -	if (isAgentAvatarValid() && gAgentAvatarp->isEditingAppearance()) -	{ -		// ignore baked textures when in customize mode -		return; -	} - -	S32 query_id; -	mesgsys->getS32Fast(_PREHASH_AgentData, _PREHASH_SerialNum, query_id); - -	S32 num_texture_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_WearableData); - - -	S32 num_results = 0; -	for (S32 texture_block = 0; texture_block < num_texture_blocks; texture_block++) -	{ -		LLUUID texture_id; -		U8 texture_index; - -		mesgsys->getUUIDFast(_PREHASH_WearableData, _PREHASH_TextureID, texture_id, texture_block); -		mesgsys->getU8Fast(_PREHASH_WearableData, _PREHASH_TextureIndex, texture_index, texture_block); - - -		if ((S32)texture_index < TEX_NUM_INDICES ) -		{	 -			const LLAvatarAppearanceDictionary::TextureEntry *texture_entry = LLAvatarAppearanceDictionary::instance().getTexture((ETextureIndex)texture_index); -			if (texture_entry) -			{ -				EBakedTextureIndex baked_index = texture_entry->mBakedTextureIndex; - -				if (gAgentQueryManager.mActiveCacheQueries[baked_index] == query_id) -				{ -					if (texture_id.notNull()) -					{ -						//llinfos << "Received cached texture " << (U32)texture_index << ": " << texture_id << llendl; -						gAgentAvatarp->setCachedBakedTexture((ETextureIndex)texture_index, texture_id); -						//gAgentAvatarp->setTETexture( LLVOAvatar::sBakedTextureIndices[texture_index], texture_id ); -						gAgentQueryManager.mActiveCacheQueries[baked_index] = 0; -						num_results++; -					} -					else -					{ -						// no cache of this bake. request upload. -						gAgentAvatarp->invalidateComposite(gAgentAvatarp->getLayerSet(baked_index),TRUE); -					} -				} -			} -		} -	} -	llinfos << "Received cached texture response for " << num_results << " textures." << llendl; -	gAgentAvatarp->outputRezTiming("Fetched agent wearables textures from cache. Will now load them"); - -	gAgentAvatarp->updateMeshTextures(); - -	if (gAgentQueryManager.mNumPendingQueries == 0) -	{ -		// RN: not sure why composites are disabled at this point -		gAgentAvatarp->setCompositeUpdatesEnabled(TRUE); -		gAgent.sendAgentSetAppearance(); -	} -} -  BOOL LLAgent::anyControlGrabbed() const  {  	for (U32 i = 0; i < TOTAL_CONTROLS; i++) @@ -4258,195 +4146,6 @@ void LLAgent::requestLeaveGodMode()  	sendReliableMessage();  } -// For debugging, trace agent state at times appearance message are sent out. -void LLAgent::dumpSentAppearance(const std::string& dump_prefix) -{ -	std::string outfilename = get_sequential_numbered_file_name(dump_prefix,".xml"); - -	LLAPRFile outfile; -	std::string fullpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,outfilename); -	outfile.open(fullpath, LL_APR_WB ); -	apr_file_t* file = outfile.getFileHandle(); -	if (!file) -	{ -		return; -	} -	else -	{ -		LL_DEBUGS("Avatar") << "dumping sent appearance message to " << fullpath << llendl; -	} - -	LLVisualParam* appearance_version_param = gAgentAvatarp->getVisualParam(11000); -	if (appearance_version_param) -	{ -		F32 value = appearance_version_param->getWeight(); -		dump_visual_param(file, appearance_version_param, value); -	} -	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin(); -		 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end(); -		 ++iter) -	{ -		const ETextureIndex index = iter->first; -		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second; -		if (texture_dict->mIsBakedTexture) -		{ -			LLTextureEntry* entry = gAgentAvatarp->getTE((U8) index); -			const LLUUID& uuid = entry->getID(); -			apr_file_printf( file, "\t\t<texture te=\"%i\" uuid=\"%s\"/>\n", index, uuid.asString().c_str()); -		} -	} -} - -//----------------------------------------------------------------------------- -// sendAgentSetAppearance() -//----------------------------------------------------------------------------- -void LLAgent::sendAgentSetAppearance() -{ -	if (gAgentQueryManager.mNumPendingQueries > 0)  -	{ -		return; -	} - -	if (!isAgentAvatarValid() || gAgentAvatarp->isEditingAppearance() || (getRegion() && getRegion()->getCentralBakeVersion())) return; - -	// At this point we have a complete appearance to send and are in a non-baking region. -	// DRANO FIXME -	//gAgentAvatarp->setIsUsingServerBakes(FALSE); -	S32 sb_count, host_count, both_count, neither_count; -	gAgentAvatarp->bakedTextureOriginCounts(sb_count, host_count, both_count, neither_count); -	if (both_count != 0 || neither_count != 0) -	{ -		llwarns << "bad bake texture state " << sb_count << "," << host_count << "," << both_count << "," << neither_count << llendl; -	} -	if (sb_count != 0 && host_count == 0) -	{ -		gAgentAvatarp->setIsUsingServerBakes(true); -	} -	else if (sb_count == 0 && host_count != 0) -	{ -		gAgentAvatarp->setIsUsingServerBakes(false); -	} -	else if (sb_count + host_count > 0) -	{ -		llwarns << "unclear baked texture state, not sending appearance" << llendl; -		return; -	} -	 -	 -	LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << LL_ENDL; -	//dumpAvatarTEs( "sendAgentSetAppearance()" ); - -	LLMessageSystem* msg = gMessageSystem; -	msg->newMessageFast(_PREHASH_AgentSetAppearance); -	msg->nextBlockFast(_PREHASH_AgentData); -	msg->addUUIDFast(_PREHASH_AgentID, getID()); -	msg->addUUIDFast(_PREHASH_SessionID, getSessionID()); - -	// correct for the collision tolerance (to make it look like the  -	// agent is actually walking on the ground/object) -	// NOTE -- when we start correcting all of the other Havok geometry  -	// to compensate for the COLLISION_TOLERANCE ugliness we will have  -	// to tweak this number again -	const LLVector3 body_size = gAgentAvatarp->mBodySize + gAgentAvatarp->mAvatarOffset; -	msg->addVector3Fast(_PREHASH_Size, body_size); -	 -	LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "Sent AgentSetAppearance with height: " << body_size.mV[VZ] << " base: " << gAgentAvatarp->mBodySize.mV[VZ] << " hover: " << gAgentAvatarp->mAvatarOffset.mV[VZ] << LL_ENDL;	 - -	// To guard against out of order packets -	// Note: always start by sending 1.  This resets the server's count. 0 on the server means "uninitialized" -	mAppearanceSerialNum++; -	msg->addU32Fast(_PREHASH_SerialNum, mAppearanceSerialNum ); - -	// is texture data current relative to wearables? -	// KLW - TAT this will probably need to check the local queue. -	BOOL textures_current = gAgentAvatarp->areTexturesCurrent(); - -	for(U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++ ) -	{ -		const ETextureIndex texture_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index); - -		// if we're not wearing a skirt, we don't need the texture to be baked -		if (texture_index == TEX_SKIRT_BAKED && !gAgentAvatarp->isWearingWearableType(LLWearableType::WT_SKIRT)) -		{ -			continue; -		} - -		// IMG_DEFAULT_AVATAR means not baked. 0 index should be ignored for baked textures -		if (!gAgentAvatarp->isTextureDefined(texture_index, 0)) -		{ -			LL_DEBUGS("Avatar") << "texture not current for baked " << (S32)baked_index << " local " << (S32)texture_index << llendl; -			textures_current = FALSE; -			break; -		} -	} - -	// only update cache entries if we have all our baked textures - -	// FIXME DRANO need additional check for not in appearance editing -	// mode, if still using local composites need to set using local -	// composites to false, and update mesh textures. -	if (textures_current) -	{ -		bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage"); -		std::string dump_prefix = gAgentAvatarp->getFullname() + "_sent_appearance"; -		if (enable_verbose_dumps) -		{ -			dumpSentAppearance(dump_prefix); -		} -		LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "TAT: Sending cached texture data" << LL_ENDL; -		for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++) -		{ -			BOOL generate_valid_hash = TRUE; -			if (isAgentAvatarValid() && !gAgentAvatarp->isBakedTextureFinal((LLAvatarAppearanceDefines::EBakedTextureIndex)baked_index)) -			{ -				generate_valid_hash = FALSE; -				LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "Not caching baked texture upload for " << (U32)baked_index << " due to being uploaded at low resolution." << LL_ENDL; -			} - -			const LLUUID hash = gAgentWearables.computeBakedTextureHash((EBakedTextureIndex) baked_index, generate_valid_hash); -			if (hash.notNull()) -			{ -				ETextureIndex texture_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex) baked_index); -				msg->nextBlockFast(_PREHASH_WearableData); -				msg->addUUIDFast(_PREHASH_CacheID, hash); -				msg->addU8Fast(_PREHASH_TextureIndex, (U8)texture_index); -			} -		} -		msg->nextBlockFast(_PREHASH_ObjectData); -		gAgentAvatarp->sendAppearanceMessage( gMessageSystem ); -	} -	else -	{ -		// If the textures aren't baked, send NULL for texture IDs -		// This means the baked texture IDs on the server will be untouched. -		// Once all textures are baked, another AvatarAppearance message will be sent to update the TEs -		msg->nextBlockFast(_PREHASH_ObjectData); -		gMessageSystem->addBinaryDataFast(_PREHASH_TextureEntry, NULL, 0); -	} - - -	S32 transmitted_params = 0; -	for (LLViewerVisualParam* param = (LLViewerVisualParam*)gAgentAvatarp->getFirstVisualParam(); -		 param; -		 param = (LLViewerVisualParam*)gAgentAvatarp->getNextVisualParam()) -	{ -		if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE || -			param->getGroup() == VISUAL_PARAM_GROUP_TRANSMIT_NOT_TWEAKABLE) // do not transmit params of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT -		{ -			msg->nextBlockFast(_PREHASH_VisualParam ); -			 -			// We don't send the param ids.  Instead, we assume that the receiver has the same params in the same sequence. -			const F32 param_value = param->getWeight(); -			const U8 new_weight = F32_to_U8(param_value, param->getMinWeight(), param->getMaxWeight()); -			msg->addU8Fast(_PREHASH_ParamValue, new_weight ); -			transmitted_params++; -		} -	} - -//	llinfos << "Avatar XML num VisualParams transmitted = " << transmitted_params << llendl; -	sendReliableMessage(); -} -  void LLAgent::sendAgentDataUpdateRequest()  {  	gMessageSystem->newMessageFast(_PREHASH_AgentDataUpdateRequest); @@ -4589,23 +4288,6 @@ void LLAgent::renderAutoPilotTarget()  /********************************************************************************/ -LLAgentQueryManager gAgentQueryManager; - -LLAgentQueryManager::LLAgentQueryManager() : -	mWearablesCacheQueryID(0), -	mNumPendingQueries(0), -	mUpdateSerialNum(0) -{ -	for (U32 i = 0; i < BAKED_NUM_INDICES; i++) -	{ -		mActiveCacheQueries[i] = 0; -	} -} - -LLAgentQueryManager::~LLAgentQueryManager() -{ -} -  //-----------------------------------------------------------------------------  // LLTeleportRequest  //----------------------------------------------------------------------------- diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index f5f26f69d8..f2a42347b7 100755 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -161,12 +161,13 @@ public:  	// Gender  	//--------------------------------------------------------------------  public: -	// On the very first login, gender isn't chosen until the user clicks -	// in a dialog.  We don't render the avatar until they choose. -	BOOL 			isGenderChosen() const 	{ return mGenderChosen; } -	void			setGenderChosen(BOOL b)	{ mGenderChosen = b; } +	// On the very first login, outfit needs to be chosen by some +	// mechanism, usually by loading the requested initial outfit.  We +	// don't render the avatar until the choice is made. +	BOOL 			isOutfitChosen() const 	{ return mOutfitChosen; } +	void			setOutfitChosen(BOOL b)	{ mOutfitChosen = b; }  private: -	BOOL			mGenderChosen; +	BOOL			mOutfitChosen;  /**                    Identity   **                                                                            ** @@ -609,7 +610,6 @@ private:  	void            handleTeleportFinished();  	void            handleTeleportFailed(); -	void			handleServerBakeRegionTransition(const LLUUID& region_id);  	//--------------------------------------------------------------------  	// Teleport State @@ -844,8 +844,6 @@ private:  public:  	void			sendMessage(); // Send message to this agent's region  	void			sendReliableMessage(); -	void 			dumpSentAppearance(const std::string& dump_prefix); -	void			sendAgentSetAppearance();  	void 			sendAgentDataUpdateRequest();  	void 			sendAgentUserInfoRequest();  	// IM to Email and Online visibility @@ -859,7 +857,6 @@ public:  	static void		processAgentGroupDataUpdate(LLMessageSystem *msg, void **);  	static void		processAgentDropGroup(LLMessageSystem *msg, void **);  	static void		processScriptControlChange(LLMessageSystem *msg, void **); -	static void		processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void **user_data);  /**                    Messaging   **                                                                            ** @@ -888,24 +885,4 @@ inline bool operator==(const LLGroupData &a, const LLGroupData &b)  	return (a.mID == b.mID);  } -class LLAgentQueryManager -{ -	friend class LLAgent; -	friend class LLAgentWearables; -	 -public: -	LLAgentQueryManager(); -	virtual ~LLAgentQueryManager(); -	 -	BOOL 			hasNoPendingQueries() const 	{ return getNumPendingQueries() == 0; } -	S32 			getNumPendingQueries() const 	{ return mNumPendingQueries; } -private: -	S32				mNumPendingQueries; -	S32				mWearablesCacheQueryID; -	U32				mUpdateSerialNum; -	S32		    	mActiveCacheQueries[LLAvatarAppearanceDefines::BAKED_NUM_INDICES]; -}; - -extern LLAgentQueryManager gAgentQueryManager; -  #endif diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 8501436b5b..96ce8d1f6d 100755 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -30,7 +30,6 @@  #include "llaccordionctrltab.h"  #include "llagent.h"  #include "llagentcamera.h" -#include "llagentwearablesfetch.h"  #include "llappearancemgr.h"  #include "llcallbacklist.h"  #include "llfloatersidepanelcontainer.h" @@ -126,13 +125,6 @@ void LLAgentWearables::dump()  		}  	} -	llinfos << "Total items awaiting wearable update " << mItemsAwaitingWearableUpdate.size() << llendl; -	for (std::set<LLUUID>::iterator it = mItemsAwaitingWearableUpdate.begin(); -		 it != mItemsAwaitingWearableUpdate.end(); -		 ++it) -	{ -		llinfos << (*it).asString() << llendl; -	}  }  struct LLAgentDumper @@ -182,22 +174,9 @@ void LLAgentWearables::initClass()  void LLAgentWearables::setAvatarObject(LLVOAvatarSelf *avatar)  {  	llassert(avatar); -	avatar->outputRezTiming("Sending wearables request"); -	sendAgentWearablesRequest();  	setAvatarAppearance(avatar);  } -// wearables -LLAgentWearables::createStandardWearablesAllDoneCallback::~createStandardWearablesAllDoneCallback() -{ -	llinfos << "destructor - all done?" << llendl; -	gAgentWearables.createStandardWearablesAllDone(); -} - -LLAgentWearables::sendAgentWearablesUpdateCallback::~sendAgentWearablesUpdateCallback() -{ -	gAgentWearables.sendAgentWearablesUpdate(); -}  /**   * @brief Construct a callback for dealing with the wearables. @@ -223,33 +202,14 @@ LLAgentWearables::AddWearableToAgentInventoryCallback::AddWearableToAgentInvento  void LLAgentWearables::AddWearableToAgentInventoryCallback::fire(const LLUUID& inv_item)  { -	if (mTodo & CALL_CREATESTANDARDDONE) -	{ -		llinfos << "callback fired, inv_item " << inv_item.asString() << llendl; -	} -  	if (inv_item.isNull())  		return;  	gAgentWearables.addWearabletoAgentInventoryDone(mType, mIndex, inv_item, mWearable); -	if (mTodo & CALL_UPDATE) -	{ -		gAgentWearables.sendAgentWearablesUpdate(); -	} -	if (mTodo & CALL_RECOVERDONE) -	{ -		LLAppearanceMgr::instance().addCOFItemLink(inv_item); -		gAgentWearables.recoverMissingWearableDone(); -	}  	/*  	 * Do this for every one in the loop  	 */ -	if (mTodo & CALL_CREATESTANDARDDONE) -	{ -		LLAppearanceMgr::instance().addCOFItemLink(inv_item); -		gAgentWearables.createStandardWearablesDone(mType, mIndex); -	}  	if (mTodo & CALL_MAKENEWOUTFITDONE)  	{  		gAgentWearables.makeNewOutfitDone(mType, mIndex); @@ -304,81 +264,7 @@ void LLAgentWearables::addWearabletoAgentInventoryDone(const LLWearableType::ETy  	gInventory.notifyObservers();  } -void LLAgentWearables::sendAgentWearablesUpdate() -{ -	// First make sure that we have inventory items for each wearable -	for (S32 type=0; type < LLWearableType::WT_COUNT; ++type) -	{ -		for (U32 index=0; index < getWearableCount((LLWearableType::EType)type); ++index) -		{ -			LLViewerWearable* wearable = getViewerWearable((LLWearableType::EType)type,index); -			if (wearable) -			{ -				if (wearable->getItemID().isNull()) -				{ -					LLPointer<LLInventoryCallback> cb = -						new AddWearableToAgentInventoryCallback( -							LLPointer<LLRefCount>(NULL), -							(LLWearableType::EType)type, -							index, -							wearable, -							AddWearableToAgentInventoryCallback::CALL_NONE); -					addWearableToAgentInventory(cb, wearable); -				} -				else -				{ -					gInventory.addChangedMask(LLInventoryObserver::LABEL, -											  wearable->getItemID()); -				} -			} -		} -	} - -	// Then make sure the inventory is in sync with the avatar. -	gInventory.notifyObservers(); - -	// Send the AgentIsNowWearing  -	gMessageSystem->newMessageFast(_PREHASH_AgentIsNowWearing); - -	gMessageSystem->nextBlockFast(_PREHASH_AgentData); -	gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); -	gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - -	lldebugs << "sendAgentWearablesUpdate()" << llendl; -	// MULTI-WEARABLE: DEPRECATED: HACK: index to 0- server database tables don't support concept of multiwearables. -	for (S32 type=0; type < LLWearableType::WT_COUNT; ++type) -	{ -		gMessageSystem->nextBlockFast(_PREHASH_WearableData); - -		U8 type_u8 = (U8)type; -		gMessageSystem->addU8Fast(_PREHASH_WearableType, type_u8); - -		LLViewerWearable* wearable = getViewerWearable((LLWearableType::EType)type, 0); -		if (wearable) -		{ -			//llinfos << "Sending wearable " << wearable->getName() << llendl; -			LLUUID item_id = wearable->getItemID(); -			const LLViewerInventoryItem *item = gInventory.getItem(item_id); -			if (item && item->getIsLinkType()) -			{ -				// Get the itemID that this item points to.  i.e. make sure -				// we are storing baseitems, not their links, in the database. -				item_id = item->getLinkedUUID(); -			} -			gMessageSystem->addUUIDFast(_PREHASH_ItemID, item_id);			 -		} -		else -		{ -			//llinfos << "Not wearing wearable type " << LLWearableType::getTypeName((LLWearableType::EType)i) << llendl; -			gMessageSystem->addUUIDFast(_PREHASH_ItemID, LLUUID::null); -		} - -		lldebugs << "       " << LLWearableType::getTypeLabel((LLWearableType::EType)type) << ": " << (wearable ? wearable->getAssetID() : LLUUID::null) << llendl; -	} -	gAgent.sendReliableMessage(); -} - -void LLAgentWearables::saveWearable(const LLWearableType::EType type, const U32 index, BOOL send_update, +void LLAgentWearables::saveWearable(const LLWearableType::EType type, const U32 index,  									const std::string new_name)  {  	LLViewerWearable* old_wearable = getViewerWearable(type, index); @@ -425,10 +311,6 @@ void LLAgentWearables::saveWearable(const LLWearableType::EType type, const U32  		{  			// Add a new inventory item (shouldn't ever happen here)  			U32 todo = AddWearableToAgentInventoryCallback::CALL_NONE; -			if (send_update) -			{ -				todo |= AddWearableToAgentInventoryCallback::CALL_UPDATE; -			}  			LLPointer<LLInventoryCallback> cb =  				new AddWearableToAgentInventoryCallback(  					LLPointer<LLRefCount>(NULL), @@ -440,12 +322,7 @@ void LLAgentWearables::saveWearable(const LLWearableType::EType type, const U32  			return;  		} -		gAgentAvatarp->wearableUpdated( type, TRUE ); - -		if (send_update) -		{ -			sendAgentWearablesUpdate(); -		} +		gAgentAvatarp->wearableUpdated(type);  	}  } @@ -521,8 +398,6 @@ void LLAgentWearables::revertWearable(const LLWearableType::EType type, const U3  	{  		wearable->revertValues();  	} - -	gAgent.sendAgentSetAppearance();  }  void LLAgentWearables::saveAllWearables() @@ -535,9 +410,8 @@ void LLAgentWearables::saveAllWearables()  	for (S32 i=0; i < LLWearableType::WT_COUNT; i++)  	{  		for (U32 j=0; j < getWearableCount((LLWearableType::EType)i); j++) -			saveWearable((LLWearableType::EType)i, j, FALSE); +			saveWearable((LLWearableType::EType)i, j);  	} -	sendAgentWearablesUpdate();  }  // Called when the user changes the name of a wearable inventory item that is currently being worn. @@ -566,7 +440,6 @@ void LLAgentWearables::setWearableName(const LLUUID& item_id, const std::string&  				old_wearable->setName(old_name);  				setWearable((LLWearableType::EType)i,j,new_wearable); -				sendAgentWearablesUpdate();  				break;  			}  		} @@ -687,15 +560,6 @@ LLViewerWearable*	LLAgentWearables::getWearableFromAssetID(const LLUUID& asset_i  	return NULL;  } -void LLAgentWearables::sendAgentWearablesRequest() -{ -	gMessageSystem->newMessageFast(_PREHASH_AgentWearablesRequest); -	gMessageSystem->nextBlockFast(_PREHASH_AgentData); -	gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); -	gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); -	gAgent.sendReliableMessage(); -} -  LLViewerWearable* LLAgentWearables::getViewerWearable(const LLWearableType::EType type, U32 index /*= 0*/)  {  	return dynamic_cast<LLViewerWearable*> (getWearable(type, index)); @@ -717,8 +581,7 @@ void LLAgentWearables::wearableUpdated(LLWearable *wearable, BOOL removed)  {  	if (isAgentAvatarValid())  	{ -		const BOOL upload_result = removed; -		gAgentAvatarp->wearableUpdated(wearable->getType(), upload_result); +		gAgentAvatarp->wearableUpdated(wearable->getType());  	}  	LLWearableData::wearableUpdated(wearable, removed); @@ -738,23 +601,13 @@ void LLAgentWearables::wearableUpdated(LLWearable *wearable, BOOL removed)  			wearable->setDefinitionVersion(22);  			U32 index = getWearableIndex(wearable);  			llinfos << "forcing wearable type " << wearable->getType() << " to version 22 from 24" << llendl; -			saveWearable(wearable->getType(),index,TRUE); +			saveWearable(wearable->getType(),index);  		}  		checkWearableAgainstInventory(viewer_wearable);  	}  } -BOOL LLAgentWearables::itemUpdatePending(const LLUUID& item_id) const -{ -	return mItemsAwaitingWearableUpdate.find(item_id) != mItemsAwaitingWearableUpdate.end(); -} - -U32 LLAgentWearables::itemUpdatePendingCount() const -{ -	return mItemsAwaitingWearableUpdate.size(); -} -  const LLUUID LLAgentWearables::getWearableItemID(LLWearableType::EType type, U32 index) const  {  	const LLViewerWearable *wearable = getViewerWearable(type,index); @@ -778,157 +631,6 @@ BOOL LLAgentWearables::isWearingItem(const LLUUID& item_id) const  	return getWearableFromItemID(item_id) != NULL;  } -// MULTI-WEARABLE: DEPRECATED (see backwards compatibility) -// static -// ! BACKWARDS COMPATIBILITY ! When we stop supporting viewer1.23, we can assume -// that viewers have a Current Outfit Folder and won't need this message, and thus -// we can remove/ignore this whole function. EXCEPT gAgentWearables.notifyLoadingStarted -void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgsys, void** user_data) -{ -	// We should only receive this message a single time.  Ignore subsequent AgentWearablesUpdates -	// that may result from AgentWearablesRequest having been sent more than once. -	if (mInitialWearablesUpdateReceived) -		return; - -	if (isAgentAvatarValid()) -	{ -		gAgentAvatarp->startPhase("process_initial_wearables_update"); -		gAgentAvatarp->outputRezTiming("Received initial wearables update"); -	} - -	// notify subscribers that wearables started loading. See EXT-7777 -	// *TODO: find more proper place to not be called from deprecated method. -	// Seems such place is found: LLInitialWearablesFetch::processContents() -	gAgentWearables.notifyLoadingStarted(); - -	mInitialWearablesUpdateReceived = true; - -	LLUUID agent_id; -	gMessageSystem->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id); - -	if (isAgentAvatarValid() && (agent_id == gAgentAvatarp->getID())) -	{ -		gMessageSystem->getU32Fast(_PREHASH_AgentData, _PREHASH_SerialNum, gAgentQueryManager.mUpdateSerialNum); -		 -		const S32 NUM_BODY_PARTS = 4; -		S32 num_wearables = gMessageSystem->getNumberOfBlocksFast(_PREHASH_WearableData); -		if (num_wearables < NUM_BODY_PARTS) -		{ -			// Transitional state.  Avatars should always have at least their body parts (hair, eyes, shape and skin). -			// The fact that they don't have any here (only a dummy is sent) implies that either: -			// 1. This account existed before we had wearables -			// 2. The database has gotten messed up -			// 3. This is the account's first login (i.e. the wearables haven't been generated yet). -			return; -		} - -		// Get the UUID of the current outfit folder (will be created if it doesn't exist) -		const LLUUID current_outfit_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); -		LLInitialWearablesFetch* outfit = new LLInitialWearablesFetch(current_outfit_id); -		 -		//lldebugs << "processAgentInitialWearablesUpdate()" << llendl; -		// Add wearables -		// MULTI-WEARABLE: DEPRECATED: Message only supports one wearable per type, will be ignored in future. -		gAgentWearables.mItemsAwaitingWearableUpdate.clear(); -		for (S32 i=0; i < num_wearables; i++) -		{ -			// Parse initial wearables data from message system -			U8 type_u8 = 0; -			gMessageSystem->getU8Fast(_PREHASH_WearableData, _PREHASH_WearableType, type_u8, i); -			if (type_u8 >= LLWearableType::WT_COUNT) -			{ -				continue; -			} -			const LLWearableType::EType type = (LLWearableType::EType) type_u8; -			 -			LLUUID item_id; -			gMessageSystem->getUUIDFast(_PREHASH_WearableData, _PREHASH_ItemID, item_id, i); -			 -			LLUUID asset_id; -			gMessageSystem->getUUIDFast(_PREHASH_WearableData, _PREHASH_AssetID, asset_id, i); -			if (asset_id.isNull()) -			{ -				LLViewerWearable::removeFromAvatar(type, FALSE); -			} -			else -			{ -				LLAssetType::EType asset_type = LLWearableType::getAssetType(type); -				if (asset_type == LLAssetType::AT_NONE) -				{ -					continue; -				} -				 -				// MULTI-WEARABLE: DEPRECATED: this message only supports one wearable per type. Should be ignored in future versions -				 -				// Store initial wearables data until we know whether we have the current outfit folder or need to use the data. -				LLInitialWearablesFetch::InitialWearableData wearable_data(type, item_id, asset_id); -				outfit->add(wearable_data); -			} -			 -			lldebugs << "       " << LLWearableType::getTypeLabel(type) << llendl; -		} -		 -		// Get the complete information on the items in the inventory and set up an observer -		// that will trigger when the complete information is fetched. -		outfit->startFetch(); -		if(outfit->isFinished()) -		{ -			// everything is already here - call done. -			outfit->done(); -		} -		else -		{ -			// it's all on it's way - add an observer, and the inventory -			// will call done for us when everything is here. -			gInventory.addObserver(outfit); -		} -		 -	} -} - -// Normally, all wearables referred to "AgentWearablesUpdate" will correspond to actual assets in the -// database.  If for some reason, we can't load one of those assets, we can try to reconstruct it so that -// the user isn't left without a shape, for example.  (We can do that only after the inventory has loaded.) -void LLAgentWearables::recoverMissingWearable(const LLWearableType::EType type, U32 index) -{ -	// Try to recover by replacing missing wearable with a new one. -	LLNotificationsUtil::add("ReplacedMissingWearable"); -	lldebugs << "Wearable " << LLWearableType::getTypeLabel(type) << " could not be downloaded.  Replaced inventory item with default wearable." << llendl; -	LLViewerWearable* new_wearable = LLWearableList::instance().createNewWearable(type, gAgentAvatarp); - -	setWearable(type,index,new_wearable); -	//new_wearable->writeToAvatar(TRUE); - -	// Add a new one in the lost and found folder. -	// (We used to overwrite the "not found" one, but that could potentially -	// destory content.) JC -	const LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); -	LLPointer<LLInventoryCallback> cb = -		new AddWearableToAgentInventoryCallback( -			LLPointer<LLRefCount>(NULL), -			type, -			index, -			new_wearable, -			AddWearableToAgentInventoryCallback::CALL_RECOVERDONE); -	addWearableToAgentInventory(cb, new_wearable, lost_and_found_id, TRUE); -} - -void LLAgentWearables::recoverMissingWearableDone() -{ -	// Have all the wearables that the avatar was wearing at log-in arrived or been fabricated? -	updateWearablesLoaded(); -	if (areWearablesLoaded()) -	{ -		// Make sure that the server's idea of the avatar's wearables actually match the wearables. -		gAgent.sendAgentSetAppearance(); -	} -	else -	{ -		gInventory.addChangedMask(LLInventoryObserver::LABEL, LLUUID::null); -		gInventory.notifyObservers(); -	} -} -  void LLAgentWearables::addLocalTextureObject(const LLWearableType::EType wearable_type, const LLAvatarAppearanceDefines::ETextureIndex texture_type, U32 wearable_index)  {  	LLViewerWearable* wearable = getViewerWearable((LLWearableType::EType)wearable_type, wearable_index); @@ -1063,30 +765,6 @@ void LLAgentWearables::createStandardWearables()  	}  } -void LLAgentWearables::createStandardWearablesDone(S32 type, U32 index) -{ -	llinfos << "type " << type << " index " << index << llendl; - -	if (!isAgentAvatarValid()) return; -	gAgentAvatarp->updateVisualParams(); -} - -void LLAgentWearables::createStandardWearablesAllDone() -{ -	// ... because sendAgentWearablesUpdate will notify inventory -	// observers. -	llinfos << "all done?" << llendl; - -	mWearablesLoaded = TRUE;  -	checkWearablesLoaded(); -	notifyLoadingFinished(); -	 -	updateServer(); - -	// Treat this as the first texture entry message, if none received yet -	gAgentAvatarp->onFirstTEMessageReceived(); -} -  void LLAgentWearables::makeNewOutfitDone(S32 type, U32 index)  {  	LLUUID first_item_id = getWearableItemID((LLWearableType::EType)type, index); @@ -1200,11 +878,10 @@ void LLAgentWearables::removeWearableFinal(const LLWearableType::EType type, boo  		for (S32 i=max_entry; i>=0; i--)  		{  			LLViewerWearable* old_wearable = getViewerWearable(type,i); -			//queryWearableCache(); // moved below  			if (old_wearable)  			{  				popWearable(old_wearable); -				old_wearable->removeFromAvatar(TRUE); +				old_wearable->removeFromAvatar();  			}  		}  		clearWearableType(type); @@ -1212,19 +889,14 @@ void LLAgentWearables::removeWearableFinal(const LLWearableType::EType type, boo  	else  	{  		LLViewerWearable* old_wearable = getViewerWearable(type, index); -		//queryWearableCache(); // moved below  		if (old_wearable)  		{  			popWearable(old_wearable); -			old_wearable->removeFromAvatar(TRUE); +			old_wearable->removeFromAvatar();  		}  	} -	queryWearableCache(); - -	// Update the server -	updateServer();  	gInventory.notifyObservers();  } @@ -1356,10 +1028,8 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it  	// Start rendering & update the server  	mWearablesLoaded = TRUE;  -	checkWearablesLoaded(); +  	notifyLoadingFinished(); -	queryWearableCache(); -	updateServer();  	gAgentAvatarp->dumpAvatarTEs("setWearableOutfit"); @@ -1480,80 +1150,6 @@ void LLAgentWearables::setWearableFinal(LLInventoryItem* new_item, LLViewerWeara  		llinfos << "Replaced current element 0 for type " << type  				<< " size is now " << getWearableCount(type) << llendl;  	} - -	//llinfos << "LLVOAvatar::setWearableItem()" << llendl; -	queryWearableCache(); -	//new_wearable->writeToAvatar(TRUE); - -	updateServer(); -} - -void LLAgentWearables::queryWearableCache() -{ -	if (!areWearablesLoaded() || (gAgent.getRegion() && gAgent.getRegion()->getCentralBakeVersion())) -	{ -		return; -	} -	gAgentAvatarp->setIsUsingServerBakes(false); - -	// Look up affected baked textures. -	// If they exist: -	//		disallow updates for affected layersets (until dataserver responds with cache request.) -	//		If cache miss, turn updates back on and invalidate composite. -	//		If cache hit, modify baked texture entries. -	// -	// Cache requests contain list of hashes for each baked texture entry. -	// Response is list of valid baked texture assets. (same message) - -	gMessageSystem->newMessageFast(_PREHASH_AgentCachedTexture); -	gMessageSystem->nextBlockFast(_PREHASH_AgentData); -	gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); -	gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); -	gMessageSystem->addS32Fast(_PREHASH_SerialNum, gAgentQueryManager.mWearablesCacheQueryID); - -	S32 num_queries = 0; -	for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++) -	{ -		LLUUID hash_id = computeBakedTextureHash((EBakedTextureIndex) baked_index); -		if (hash_id.notNull()) -		{ -			num_queries++; -			// *NOTE: make sure at least one request gets packed - -			ETextureIndex te_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index); - -			//llinfos << "Requesting texture for hash " << hash << " in baked texture slot " << baked_index << llendl; -			gMessageSystem->nextBlockFast(_PREHASH_WearableData); -			gMessageSystem->addUUIDFast(_PREHASH_ID, hash_id); -			gMessageSystem->addU8Fast(_PREHASH_TextureIndex, (U8)te_index); -		} - -		gAgentQueryManager.mActiveCacheQueries[baked_index] = gAgentQueryManager.mWearablesCacheQueryID; -	} -	//VWR-22113: gAgent.getRegion() can return null if invalid, seen here on logout -	if(gAgent.getRegion()) -	{ -		if (isAgentAvatarValid()) -		{ -			selfStartPhase("fetch_texture_cache_entries"); -			gAgentAvatarp->outputRezTiming("Fetching textures from cache"); -		} - -		LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "Requesting texture cache entry for " << num_queries << " baked textures" << LL_ENDL; -		gMessageSystem->sendReliable(gAgent.getRegion()->getHost()); -		gAgentQueryManager.mNumPendingQueries++; -		gAgentQueryManager.mWearablesCacheQueryID++; -	} -} - -// virtual -void LLAgentWearables::invalidateBakedTextureHash(LLMD5& hash) const -{ -	// Add some garbage into the hash so that it becomes invalid. -	if (isAgentAvatarValid()) -	{ -		hash.update((const unsigned char*)gAgentAvatarp->getID().mData, UUID_BYTES); -	}  }  // User has picked "remove from avatar" from a menu. @@ -1724,17 +1320,6 @@ void LLAgentWearables::userAttachMultipleAttachments(LLInventoryModel::item_arra  	}  } -void LLAgentWearables::checkWearablesLoaded() const -{ -#ifdef SHOW_ASSERT -	U32 item_pend_count = itemUpdatePendingCount(); -	if (mWearablesLoaded) -	{ -		llassert(item_pend_count==0); -	} -#endif -} -  // Returns false if the given wearable is already topmost/bottommost  // (depending on closer_to_body parameter).  bool LLAgentWearables::canMoveWearable(const LLUUID& item_id, bool closer_to_body) const @@ -1751,20 +1336,9 @@ bool LLAgentWearables::canMoveWearable(const LLUUID& item_id, bool closer_to_bod  BOOL LLAgentWearables::areWearablesLoaded() const  { -	checkWearablesLoaded();  	return mWearablesLoaded;  } -// MULTI-WEARABLE: DEPRECATED: item pending count relies on old messages that don't support multi-wearables. do not trust to be accurate -void LLAgentWearables::updateWearablesLoaded() -{ -	mWearablesLoaded = (itemUpdatePendingCount()==0); -	if (mWearablesLoaded) -	{ -		notifyLoadingFinished(); -	} -} -  bool LLAgentWearables::canWearableBeRemoved(const LLViewerWearable* wearable) const  {  	if (!wearable) return false; @@ -1774,7 +1348,7 @@ bool LLAgentWearables::canWearableBeRemoved(const LLViewerWearable* wearable) co  	return !(((type == LLWearableType::WT_SHAPE) || (type == LLWearableType::WT_SKIN) || (type == LLWearableType::WT_HAIR) || (type == LLWearableType::WT_EYES))  			 && (getWearableCount(type) <= 1) );		    } -void LLAgentWearables::animateAllWearableParams(F32 delta, BOOL upload_bake) +void LLAgentWearables::animateAllWearableParams(F32 delta)  {  	for( S32 type = 0; type < LLWearableType::WT_COUNT; ++type )  	{ @@ -1784,7 +1358,7 @@ void LLAgentWearables::animateAllWearableParams(F32 delta, BOOL upload_bake)  			llassert(wearable);  			if (wearable)  			{ -				wearable->animateParams(delta, upload_bake); +				wearable->animateParams(delta);  			}  		}  	} @@ -1907,12 +1481,6 @@ void LLAgentWearables::editWearableIfRequested(const LLUUID& item_id)  	}  } -void LLAgentWearables::updateServer() -{ -	sendAgentWearablesUpdate(); -	gAgent.sendAgentSetAppearance(); -} -  boost::signals2::connection LLAgentWearables::addLoadingStartedCallback(loading_started_callback_t cb)  {  	return mLoadingStartedSignal.connect(cb); diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h index 96fe4b80c0..8fb2783fff 100755 --- a/indra/newview/llagentwearables.h +++ b/indra/newview/llagentwearables.h @@ -42,7 +42,6 @@  class LLInventoryItem;  class LLVOAvatarSelf;  class LLViewerWearable; -class LLInitialWearablesFetch;  class LLViewerObject;  class LLAgentWearables : public LLInitClass<LLAgentWearables>, public LLWearableData @@ -51,7 +50,6 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>, public LLWearable  	// Constructors / destructors / Initializers  	//--------------------------------------------------------------------  public: -	friend class LLInitialWearablesFetch;  	LLAgentWearables();  	virtual ~LLAgentWearables(); @@ -62,9 +60,6 @@ public:  	// LLInitClass interface  	static void initClass(); -protected: -	void			createStandardWearablesDone(S32 type, U32 index/* = 0*/); -	void			createStandardWearablesAllDone();  	//--------------------------------------------------------------------  	// Queries @@ -85,7 +80,7 @@ public:  	// Note: False for shape, skin, eyes, and hair, unless you have MORE than 1.  	bool			canWearableBeRemoved(const LLViewerWearable* wearable) const; -	void			animateAllWearableParams(F32 delta, BOOL upload_bake); +	void			animateAllWearableParams(F32 delta);  	//--------------------------------------------------------------------  	// Accessors @@ -152,21 +147,6 @@ private:  	void			removeWearableFinal(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/);  protected:  	static bool		onRemoveWearableDialog(const LLSD& notification, const LLSD& response); -	 -	//-------------------------------------------------------------------- -	// Server Communication -	//-------------------------------------------------------------------- -public: -	// Processes the initial wearables update message (if necessary, since the outfit folder makes it redundant) -	static void		processAgentInitialWearablesUpdate(LLMessageSystem* mesgsys, void** user_data); - -protected: -	/*virtual*/ void	invalidateBakedTextureHash(LLMD5& hash) const; -	void			sendAgentWearablesUpdate(); -	void			sendAgentWearablesRequest(); -	void			queryWearableCache(); -	void 			updateServer(); -	static void		onInitialWearableAssetArrived(LLViewerWearable* wearable, void* userdata);  	//--------------------------------------------------------------------  	// Outfits @@ -179,7 +159,7 @@ private:  	//--------------------------------------------------------------------  public:	  	void			saveWearableAs(const LLWearableType::EType type, const U32 index, const std::string& new_name, const std::string& description, BOOL save_in_lost_and_found); -	void			saveWearable(const LLWearableType::EType type, const U32 index, BOOL send_update = TRUE, +	void			saveWearable(const LLWearableType::EType type, const U32 index,  								 const std::string new_name = "");  	void			saveAllWearables();  	void			revertWearable(const LLWearableType::EType type, const U32 index); @@ -197,9 +177,6 @@ public:  	static void		userRemoveMultipleAttachments(llvo_vec_t& llvo_array);  	static void		userAttachMultipleAttachments(LLInventoryModel::item_array_t& obj_item_array); -	BOOL			itemUpdatePending(const LLUUID& item_id) const; -	U32				itemUpdatePendingCount() const; -  	//--------------------------------------------------------------------  	// Signals  	//-------------------------------------------------------------------- @@ -226,7 +203,6 @@ private:  private:  	static BOOL		mInitialWearablesUpdateReceived;  	BOOL			mWearablesLoaded; -	std::set<LLUUID>	mItemsAwaitingWearableUpdate;  	/**  	 * True if agent's outfit is being changed now. @@ -238,17 +214,6 @@ private:  	// Support classes  	//--------------------------------------------------------------------------------  private: -	class createStandardWearablesAllDoneCallback : public LLRefCount -	{ -	protected: -		~createStandardWearablesAllDoneCallback(); -	}; -	class sendAgentWearablesUpdateCallback : public LLRefCount -	{ -	protected: -		~sendAgentWearablesUpdateCallback(); -	}; -  	class AddWearableToAgentInventoryCallback : public LLInventoryCallback  	{  	public: diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp deleted file mode 100755 index a2a667e660..0000000000 --- a/indra/newview/llagentwearablesfetch.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/**  - * @file llagentwearablesfetch.cpp - * @brief LLAgentWearblesFetch class implementation - * - * $LicenseInfo:firstyear=2001&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" -#include "llagentwearablesfetch.h" - -#include "llagent.h" -#include "llagentwearables.h" -#include "llappearancemgr.h" -#include "llinventoryfunctions.h" -#include "llstartup.h" -#include "llvoavatarself.h" - - -LLInitialWearablesFetch::LLInitialWearablesFetch(const LLUUID& cof_id) : -	LLInventoryFetchDescendentsObserver(cof_id) -{ -	if (isAgentAvatarValid()) -	{ -		gAgentAvatarp->startPhase("initial_wearables_fetch"); -		gAgentAvatarp->outputRezTiming("Initial wearables fetch started"); -	} -} - -LLInitialWearablesFetch::~LLInitialWearablesFetch() -{ -} - -// virtual -void LLInitialWearablesFetch::done() -{ -	// Delay processing the actual results of this so it's not handled within -	// gInventory.notifyObservers.  The results will be handled in the next -	// idle tick instead. -	gInventory.removeObserver(this); -	doOnIdleOneTime(boost::bind(&LLInitialWearablesFetch::processContents,this)); -	if (isAgentAvatarValid()) -	{ -		gAgentAvatarp->stopPhase("initial_wearables_fetch"); -		gAgentAvatarp->outputRezTiming("Initial wearables fetch done"); -	} -} - -void LLInitialWearablesFetch::add(InitialWearableData &data) - -{ -	mAgentInitialWearables.push_back(data); -} - -void LLInitialWearablesFetch::processContents() -{ -	if(!gAgentAvatarp) //no need to process wearables if the agent avatar is deleted. -	{ -		delete this; -		return ; -	} - -	// Fetch the wearable items from the Current Outfit Folder -	LLInventoryModel::cat_array_t cat_array; -	LLInventoryModel::item_array_t wearable_array; -	LLFindWearables is_wearable; -	llassert_always(mComplete.size() != 0); -	gInventory.collectDescendentsIf(mComplete.front(), cat_array, wearable_array,  -									LLInventoryModel::EXCLUDE_TRASH, is_wearable); - -	LLAppearanceMgr::instance().setAttachmentInvLinkEnable(true); -	if (wearable_array.count() > 0) -	{ -		gAgentWearables.notifyLoadingStarted(); -		LLAppearanceMgr::instance().updateAppearanceFromCOF(); -	} -	else -	{ -		// if we're constructing the COF from the wearables message, we don't have a proper outfit link -		LLAppearanceMgr::instance().setOutfitDirty(true); -		processWearablesMessage(); -	} -	delete this; -} - -class LLFetchAndLinkObserver: public LLInventoryFetchItemsObserver -{ -public: -	LLFetchAndLinkObserver(uuid_vec_t& ids): -		LLInventoryFetchItemsObserver(ids) -	{ -	} -	~LLFetchAndLinkObserver() -	{ -	} -	virtual void done() -	{ -		gInventory.removeObserver(this); - -		// Link to all fetched items in COF. -		LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy; -		LLInventoryObject::const_object_list_t item_array; -		for (uuid_vec_t::iterator it = mIDs.begin(); -			 it != mIDs.end(); -			 ++it) -		{ -			LLUUID id = *it; -			LLConstPointer<LLInventoryObject> item = gInventory.getItem(*it); -			if (!item) -			{ -				llwarns << "fetch failed for item " << (*it) << "!" << llendl; -				continue; -			} -			item_array.push_back(item); -		} -		link_inventory_array(LLAppearanceMgr::instance().getCOF(), item_array, link_waiter); -	} -}; - -void LLInitialWearablesFetch::processWearablesMessage() -{ -	if (!mAgentInitialWearables.empty()) // We have an empty current outfit folder, use the message data instead. -	{ -		const LLUUID current_outfit_id = LLAppearanceMgr::instance().getCOF(); -		uuid_vec_t ids; -		for (U8 i = 0; i < mAgentInitialWearables.size(); ++i) -		{ -			// Populate the current outfit folder with links to the wearables passed in the message -			InitialWearableData *wearable_data = new InitialWearableData(mAgentInitialWearables[i]); // This will be deleted in the callback. -			 -			if (wearable_data->mAssetID.notNull()) -			{ -				ids.push_back(wearable_data->mItemID); -			} -			else -			{ -				llinfos << "Invalid wearable, type " << wearable_data->mType << " itemID " -				<< wearable_data->mItemID << " assetID " << wearable_data->mAssetID << llendl; -				delete wearable_data; -			} -		} - -		// Add all current attachments to the requested items as well. -		if (isAgentAvatarValid()) -		{ -			for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  -				 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter) -			{ -				LLViewerJointAttachment* attachment = iter->second; -				if (!attachment) continue; -				for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin(); -					 attachment_iter != attachment->mAttachedObjects.end(); -					 ++attachment_iter) -				{ -					LLViewerObject* attached_object = (*attachment_iter); -					if (!attached_object) continue; -					const LLUUID& item_id = attached_object->getAttachmentItemID(); -					if (item_id.isNull()) continue; -					ids.push_back(item_id); -				} -			} -		} - -		// Need to fetch the inventory items for ids, then create links to them after they arrive. -		LLFetchAndLinkObserver *fetcher = new LLFetchAndLinkObserver(ids); -		fetcher->startFetch(); -		// If no items to be fetched, done will never be triggered. -		// TODO: Change LLInventoryFetchItemsObserver::fetchItems to trigger done() on this condition. -		if (fetcher->isFinished()) -		{ -			fetcher->done(); -		} -		else -		{ -			gInventory.addObserver(fetcher); -		} -	} -	else -	{ -		LL_WARNS("Wearables") << "No current outfit folder items found and no initial wearables fallback message received." << LL_ENDL; -	} -} - diff --git a/indra/newview/llagentwearablesfetch.h b/indra/newview/llagentwearablesfetch.h deleted file mode 100755 index 81b03110ae..0000000000 --- a/indra/newview/llagentwearablesfetch.h +++ /dev/null @@ -1,73 +0,0 @@ -/**  - * @file llagentwearablesinitialfetch.h - * @brief LLAgentWearablesInitialFetch class header file - * - * $LicenseInfo:firstyear=2000&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLAGENTWEARABLESINITIALFETCH_H -#define LL_LLAGENTWEARABLESINITIALFETCH_H - -#include "llinventoryobserver.h" -#include "llwearabletype.h" -#include "lluuid.h" - -//-------------------------------------------------------------------- -// InitialWearablesFetch -//  -// This grabs contents from the COF and processes them. -// The processing is handled in idle(), i.e. outside of done(), -// to avoid gInventory.notifyObservers recursion. -//-------------------------------------------------------------------- -class LLInitialWearablesFetch : public LLInventoryFetchDescendentsObserver -{ -	LOG_CLASS(LLInitialWearablesFetch); - -public: -	LLInitialWearablesFetch(const LLUUID& cof_id); -	~LLInitialWearablesFetch(); -	virtual void done(); - -	struct InitialWearableData -	{ -		LLWearableType::EType mType; -		LLUUID mItemID; -		LLUUID mAssetID; -		InitialWearableData(LLWearableType::EType type, LLUUID& itemID, LLUUID& assetID) : -			mType(type), -			mItemID(itemID), -			mAssetID(assetID) -		{} -	}; - -	void add(InitialWearableData &data); - -protected: -	void processWearablesMessage(); -	void processContents(); - -private: -	typedef std::vector<InitialWearableData> initial_wearable_data_vec_t; -	initial_wearable_data_vec_t mAgentInitialWearables; // Wearables from the old agent wearables msg -}; - -#endif // LL_AGENTWEARABLESINITIALFETCH_H diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 359d5aaa5c..43ba66f8c5 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -3692,7 +3692,7 @@ bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_b  	bool result = false;  	if (result = gAgentWearables.moveWearable(item, closer_to_body))  	{ -		gAgentAvatarp->wearableUpdated(item->getWearableType(), FALSE); +		gAgentAvatarp->wearableUpdated(item->getWearableType());  	}  	setOutfitDirty(true); @@ -4004,7 +4004,7 @@ public:  			LLAppearanceMgr::getInstance()->wearInventoryCategory(category, true, false);  			// *TODOw: This may not be necessary if initial outfit is chosen already -- josh -			gAgent.setGenderChosen(TRUE); +			gAgent.setOutfitChosen(TRUE);  		}  		// release avatar picker keyboard focus diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index ea511b18e2..457ee6916d 100755 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -450,57 +450,6 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)  	//LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, content["new_asset"], TRUE);  } -LLSendTexLayerResponder::LLSendTexLayerResponder(const LLSD& post_data, -												 const LLUUID& vfile_id, -												 LLAssetType::EType asset_type, -												 LLBakedUploadData * baked_upload_data) :  -	LLAssetUploadResponder(post_data, vfile_id, asset_type), -	mBakedUploadData(baked_upload_data) -{ -} - -LLSendTexLayerResponder::~LLSendTexLayerResponder() -{ -	// mBakedUploadData is normally deleted by calls to LLViewerTexLayerSetBuffer::onTextureUploadComplete() below -	if (mBakedUploadData) -	{	// ...but delete it in the case where uploadComplete() is never called -		delete mBakedUploadData; -		mBakedUploadData = NULL; -	} -} - - -// Baked texture upload completed -void LLSendTexLayerResponder::uploadComplete(const LLSD& content) -{ -	LLUUID item_id = mPostData["item_id"]; - -	std::string result = content["state"]; -	LLUUID new_id = content["new_asset"]; - -	llinfos << "result: " << result << " new_id: " << new_id << llendl; -	if (result == "complete" -		&& mBakedUploadData != NULL) -	{	// Invoke  -		LLViewerTexLayerSetBuffer::onTextureUploadComplete(new_id, (void*) mBakedUploadData, 0, LL_EXSTAT_NONE); -		mBakedUploadData = NULL;	// deleted in onTextureUploadComplete() -	} -	else -	{	// Invoke the original callback with an error result -		LLViewerTexLayerSetBuffer::onTextureUploadComplete(new_id, (void*) mBakedUploadData, -1, LL_EXSTAT_NONE); -		mBakedUploadData = NULL;	// deleted in onTextureUploadComplete() -	} -} - -void LLSendTexLayerResponder::httpFailure() -{ -	llwarns << dumpResponse() << llendl; -	 -	// Invoke the original callback with an error result -	LLViewerTexLayerSetBuffer::onTextureUploadComplete(LLUUID(), (void*) mBakedUploadData, -1, LL_EXSTAT_NONE); -	mBakedUploadData = NULL;	// deleted in onTextureUploadComplete() -} -  LLUpdateAgentInventoryResponder::LLUpdateAgentInventoryResponder(  	const LLSD& post_data,  	const LLUUID& vfile_id, diff --git a/indra/newview/llassetuploadresponders.h b/indra/newview/llassetuploadresponders.h index abfdc4ca77..7fbebc7481 100755 --- a/indra/newview/llassetuploadresponders.h +++ b/indra/newview/llassetuploadresponders.h @@ -116,27 +116,6 @@ private:  	Impl* mImpl;  }; -struct LLBakedUploadData; -class LLSendTexLayerResponder : public LLAssetUploadResponder -{ -	LOG_CLASS(LLSendTexLayerResponder); -public: -	LLSendTexLayerResponder(const LLSD& post_data, -							const LLUUID& vfile_id, -							LLAssetType::EType asset_type, -							LLBakedUploadData * baked_upload_data); - -	~LLSendTexLayerResponder(); - -	virtual void uploadComplete(const LLSD& content); - -protected: -	virtual void httpFailure(); - -private: -	LLBakedUploadData * mBakedUploadData; -}; -  class LLUpdateAgentInventoryResponder : public LLAssetUploadResponder  {  public: diff --git a/indra/newview/llbreastmotion.cpp b/indra/newview/llbreastmotion.cpp index 9a8cd5ceae..3a88bab3b3 100755 --- a/indra/newview/llbreastmotion.cpp +++ b/indra/newview/llbreastmotion.cpp @@ -340,8 +340,7 @@ BOOL LLBreastMotion::onUpdate(F32 time, U8* joint_mask)  		if (mBreastParamsDriven[i])  		{  			mCharacter->setVisualParamWeight(mBreastParamsDriven[i], -											 new_local_pt[i], -											 FALSE); +											 new_local_pt[i]);  		}  	} diff --git a/indra/newview/llemote.cpp b/indra/newview/llemote.cpp index 510ff69acf..b9ef297c00 100755 --- a/indra/newview/llemote.cpp +++ b/indra/newview/llemote.cpp @@ -79,13 +79,13 @@ BOOL LLEmote::onActivate()  	LLVisualParam* default_param = mCharacter->getVisualParam( "Express_Closed_Mouth" );  	if( default_param )  	{ -		default_param->setWeight( default_param->getMaxWeight(), FALSE ); +		default_param->setWeight( default_param->getMaxWeight());  	}  	mParam = mCharacter->getVisualParam(mName.c_str());  	if (mParam)  	{ -		mParam->setWeight(0.f, FALSE); +		mParam->setWeight(0.f);  		mCharacter->updateVisualParams();  	} @@ -101,7 +101,7 @@ BOOL LLEmote::onUpdate(F32 time, U8* joint_mask)  	if( mParam )  	{  		F32 weight = mParam->getMinWeight() + mPose.getWeight() * (mParam->getMaxWeight() - mParam->getMinWeight()); -		mParam->setWeight(weight, FALSE); +		mParam->setWeight(weight);  		// Cross fade against the default parameter  		LLVisualParam* default_param = mCharacter->getVisualParam( "Express_Closed_Mouth" ); @@ -110,7 +110,7 @@ BOOL LLEmote::onUpdate(F32 time, U8* joint_mask)  			F32 default_param_weight = default_param->getMinWeight() +   				(1.f - mPose.getWeight()) * ( default_param->getMaxWeight() - default_param->getMinWeight() ); -			default_param->setWeight( default_param_weight, FALSE ); +			default_param->setWeight( default_param_weight);  		}  		mCharacter->updateVisualParams(); @@ -127,13 +127,13 @@ void LLEmote::onDeactivate()  {  	if( mParam )  	{ -		mParam->setWeight( mParam->getDefaultWeight(), FALSE ); +		mParam->setWeight( mParam->getDefaultWeight());  	}  	LLVisualParam* default_param = mCharacter->getVisualParam( "Express_Closed_Mouth" );  	if( default_param )  	{ -		default_param->setWeight( default_param->getMaxWeight(), FALSE ); +		default_param->setWeight( default_param->getMaxWeight());  	}  	mCharacter->updateVisualParams(); diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp index 2d9385390b..88fe389c55 100755 --- a/indra/newview/lllocalbitmaps.cpp +++ b/indra/newview/lllocalbitmaps.cpp @@ -540,7 +540,7 @@ void LLLocalBitmap::updateUserLayers(LLUUID old_id, LLUUID new_id, LLWearableTyp  					{  						U32 index = gAgentWearables.getWearableIndex(wearable);  						gAgentAvatarp->setLocalTexture(reg_texind, gTextureList.getImage(new_id), FALSE, index); -						gAgentAvatarp->wearableUpdated(type, FALSE); +						gAgentAvatarp->wearableUpdated(type);  						/* telling the manager to rebake once update cycle is fully done */  						LLLocalBitmapMgr::setNeedsRebake(); diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index 582998c973..d1864c2c4b 100755 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -943,11 +943,11 @@ void LLPanelEditWearable::onCommitSexChange()          LLViewerWearable*     wearable = gAgentWearables.getViewerWearable(type, index);          if (wearable)          { -                wearable->setVisualParamWeight(param->getID(), is_new_sex_male, FALSE); +                wearable->setVisualParamWeight(param->getID(), is_new_sex_male);          } -        param->setWeight( is_new_sex_male, FALSE ); +        param->setWeight( is_new_sex_male); -        gAgentAvatarp->updateSexDependentLayerSets( FALSE ); +        gAgentAvatarp->updateSexDependentLayerSets();          gAgentAvatarp->updateVisualParams(); @@ -982,7 +982,7 @@ void LLPanelEditWearable::onTexturePickerCommit(const LLUICtrl* ctrl)                                  U32 index = gAgentWearables.getWearableIndex(getWearable());                                  gAgentAvatarp->setLocalTexture(entry->mTextureIndex, image, FALSE, index);                                  LLVisualParamHint::requestHintUpdates(); -                                gAgentAvatarp->wearableUpdated(type, FALSE); +                                gAgentAvatarp->wearableUpdated(type);                          }                  }                  else @@ -1006,9 +1006,9 @@ void LLPanelEditWearable::onColorSwatchCommit(const LLUICtrl* ctrl)                          const LLColor4& new_color = LLColor4(ctrl->getValue());                          if( old_color != new_color )                          { -                                getWearable()->setClothesColor(entry->mTextureIndex, new_color, TRUE); +                                getWearable()->setClothesColor(entry->mTextureIndex, new_color);                                  LLVisualParamHint::requestHintUpdates(); -                                gAgentAvatarp->wearableUpdated(getWearable()->getType(), FALSE); +                                gAgentAvatarp->wearableUpdated(getWearable()->getType());                          }                  }                  else @@ -1104,7 +1104,7 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)  				// Remove old link  				remove_inventory_item(link_item->getUUID(), gAgentAvatarp->mEndCustomizeCallback);  			} -			gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name); +			gAgentWearables.saveWearable(mWearablePtr->getType(), index, new_name);          } @@ -1122,7 +1122,7 @@ void LLPanelEditWearable::revertChanges()          mNameEditor->setText(mWearableItem->getName());          updatePanelPickerControls(mWearablePtr->getType());          updateTypeSpecificControls(mWearablePtr->getType()); -        gAgentAvatarp->wearableUpdated(mWearablePtr->getType(), FALSE); +        gAgentAvatarp->wearableUpdated(mWearablePtr->getType());  }  void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BOOL disable_camera_switch) @@ -1584,7 +1584,7 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL                  LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture( IMG_INVISIBLE );                  U32 index = gAgentWearables.getWearableIndex(getWearable());                  gAgentAvatarp->setLocalTexture(te, image, FALSE, index); -                gAgentAvatarp->wearableUpdated(getWearable()->getType(), FALSE); +                gAgentAvatarp->wearableUpdated(getWearable()->getType());          }          else          { @@ -1601,7 +1601,7 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL                  U32 index = gAgentWearables.getWearableIndex(getWearable());                  gAgentAvatarp->setLocalTexture(te, image, FALSE, index); -                gAgentAvatarp->wearableUpdated(getWearable()->getType(), FALSE); +                gAgentAvatarp->wearableUpdated(getWearable()->getType());          }          updatePanelPickerControls(getWearable()->getType()); diff --git a/indra/newview/llphysicsmotion.cpp b/indra/newview/llphysicsmotion.cpp index 18b85cc9c3..8746f58f55 100755 --- a/indra/newview/llphysicsmotion.cpp +++ b/indra/newview/llphysicsmotion.cpp @@ -668,9 +668,7 @@ BOOL LLPhysicsMotion::onUpdate(F32 time)  			if ((driver_param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) &&  			    (driver_param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT))  			{ -				mCharacter->setVisualParamWeight(driver_param, -								 0, -								 FALSE); +				mCharacter->setVisualParamWeight(driver_param, 0);  			}  			S32 num_driven = driver_param->getDrivenParamsCount();  			for (S32 i = 0; i < num_driven; ++i) @@ -770,7 +768,5 @@ void LLPhysicsMotion::setParamValue(const LLViewerVisualParam *param,  	// Scale from [0,1] to [value_min_local,value_max_local]          const F32 new_value_local = value_min_local + (value_max_local-value_min_local) * new_value_rescaled; -        mCharacter->setVisualParamWeight(param, -                                         new_value_local, -                                         FALSE); +        mCharacter->setVisualParamWeight(param, new_value_local);  } diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp index a7e24b86b1..bfa453a0ae 100755 --- a/indra/newview/llscrollingpanelparam.cpp +++ b/indra/newview/llscrollingpanelparam.cpp @@ -266,7 +266,7 @@ void LLScrollingPanelParam::onHintHeldDown( LLVisualParamHint* hint )  			if (slider->getMinValue() < new_percent  				&& new_percent < slider->getMaxValue())  			{ -				mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight, FALSE); +				mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight);  				mWearable->writeToAvatar(gAgentAvatarp);  				gAgentAvatarp->updateVisualParams(); @@ -299,7 +299,7 @@ void LLScrollingPanelParam::onHintMinMouseUp( void* userdata )  			if (slider->getMinValue() < new_percent  				&& new_percent < slider->getMaxValue())  			{ -				self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight, FALSE); +				self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight);  				self->mWearable->writeToAvatar(gAgentAvatarp);  				slider->setValue( self->weightToPercent( new_weight ) );  			} @@ -333,7 +333,7 @@ void LLScrollingPanelParam::onHintMaxMouseUp( void* userdata )  				if (slider->getMinValue() < new_percent  					&& new_percent < slider->getMaxValue())  				{ -					self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight, FALSE); +					self->mWearable->setVisualParamWeight(hint->getVisualParam()->getID(), new_weight);  					self->mWearable->writeToAvatar(gAgentAvatarp);  					slider->setValue( self->weightToPercent( new_weight ) );  				} diff --git a/indra/newview/llscrollingpanelparambase.cpp b/indra/newview/llscrollingpanelparambase.cpp index 8e083ddb6c..fe7a362723 100755 --- a/indra/newview/llscrollingpanelparambase.cpp +++ b/indra/newview/llscrollingpanelparambase.cpp @@ -93,7 +93,7 @@ void LLScrollingPanelParamBase::onSliderMoved(LLUICtrl* ctrl, void* userdata)  	F32 new_weight = self->percentToWeight( (F32)slider->getValue().asReal() );  	if (current_weight != new_weight )  	{ -		self->mWearable->setVisualParamWeight( param->getID(), new_weight, FALSE ); +		self->mWearable->setVisualParamWeight( param->getID(), new_weight);  		self->mWearable->writeToAvatar(gAgentAvatarp);  		gAgentAvatarp->updateVisualParams();  	} diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 1c9276bab9..09147afb23 100755 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -2020,7 +2020,7 @@ bool idle_startup()  	{  		display_startup();  		F32 timeout_frac = timeout.getElapsedTimeF32()/PRECACHING_DELAY; - +		  		// We now have an inventory skeleton, so if this is a user's first  		// login, we can start setting up their clothing and avatar   		// appearance.  This helps to avoid the generic "Ruth" avatar in @@ -2029,20 +2029,42 @@ bool idle_startup()  			&& !sInitialOutfit.empty()    // registration set up an outfit  			&& !sInitialOutfitGender.empty() // and a gender  			&& isAgentAvatarValid()	  // can't wear clothes without object -			&& !gAgent.isGenderChosen() ) // nothing already loading +			&& !gAgent.isOutfitChosen()) // nothing already loading  		{  			// Start loading the wearables, textures, gestures  			LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender );  		} +		// If not first login, we need to fetch COF contents and +		// compute appearance from that. +		if (isAgentAvatarValid() && !gAgent.isFirstLogin() && !gAgent.isOutfitChosen()) +		{ +			gAgentWearables.notifyLoadingStarted(); +			callAfterCategoryFetch(LLAppearanceMgr::instance().getCOF(), +								   boost::bind(&LLAppearanceMgr::updateAppearanceFromCOF, +											   LLAppearanceMgr::getInstance(), true, true, no_op)); +			LLAppearanceMgr::instance().setAttachmentInvLinkEnable(true); +			gAgent.setOutfitChosen(TRUE); +		}  		display_startup();  		// wait precache-delay and for agent's avatar or a lot longer. -		if(((timeout_frac > 1.f) && isAgentAvatarValid()) -		   || (timeout_frac > 3.f)) +		if ((timeout_frac > 1.f) && isAgentAvatarValid())  		{  			LLStartUp::setStartupState( STATE_WEARABLES_WAIT );  		} +		else if (timeout_frac > 10.f)  +		{ +			// If we exceed the wait above while isAgentAvatarValid is +			// not true yet, we will change startup state and +			// eventually (once avatar does get created) wind up at +			// the gender chooser. This should occur only in very +			// unusual circumstances, so set the timeout fairly high +			// to minimize mistaken hits here. +			llwarns << "Wait for valid avatar state exceeded "  +					<< timeout.getElapsedTimeF32() << " will invoke gender chooser" << llendl;  +			LLStartUp::setStartupState( STATE_WEARABLES_WAIT ); +		}  		else  		{  			update_texture_fetch(); @@ -2062,11 +2084,11 @@ bool idle_startup()  		const F32 wearables_time = wearables_timer.getElapsedTimeF32();  		const F32 MAX_WEARABLES_TIME = 10.f; -		if (!gAgent.isGenderChosen() && isAgentAvatarValid()) +		if (!gAgent.isOutfitChosen() && isAgentAvatarValid())  		{ -			// No point in waiting for clothing, we don't even -			// know what gender we are.  Pop a dialog to ask and -			// proceed to draw the world. JC +			// No point in waiting for clothing, we don't even know +			// what outfit we want.  Pop up a gender chooser dialog to +			// ask and proceed to draw the world. JC  			//  			// *NOTE: We might hit this case even if we have an  			// initial outfit, but if the load hasn't started @@ -2080,9 +2102,9 @@ bool idle_startup()  		display_startup(); -		if (wearables_time > MAX_WEARABLES_TIME) +		if (gAgent.isOutfitChosen() && (wearables_time > MAX_WEARABLES_TIME))  		{ -			LLNotificationsUtil::add("ClothingLoading"); +			llwarns << "wearables_time " << wearables_time << "exceeded max wait of " << MAX_WEARABLES_TIME << llendl;  			LLViewerStats::getInstance()->incStat(LLViewerStats::ST_WEARABLES_TOO_LONG);  			LLStartUp::setStartupState( STATE_CLEANUP );  			return TRUE; @@ -2094,7 +2116,7 @@ bool idle_startup()  			if (isAgentAvatarValid()  				&& gAgentAvatarp->isFullyLoaded())  			{ -				//llinfos << "avatar fully loaded" << llendl; +				LL_DEBUGS("Avatar") << "avatar fully loaded" << llendl;  				LLStartUp::setStartupState( STATE_CLEANUP );  				return TRUE;  			} @@ -2105,7 +2127,7 @@ bool idle_startup()  			if ( gAgentWearables.areWearablesLoaded() )  			{  				// We have our clothing, proceed. -				//llinfos << "wearables loaded" << llendl; +				LL_DEBUGS("Avatar") << "wearables loaded" << llendl;  				LLStartUp::setStartupState( STATE_CLEANUP );  				return TRUE;  			} @@ -2370,8 +2392,6 @@ void register_viewer_callbacks(LLMessageSystem* msg)  	msg->setHandlerFuncFast(_PREHASH_RemoveNameValuePair,	process_remove_name_value);  	msg->setHandlerFuncFast(_PREHASH_AvatarAnimation,		process_avatar_animation);  	msg->setHandlerFuncFast(_PREHASH_AvatarAppearance,		process_avatar_appearance); -	msg->setHandlerFunc("AgentCachedTextureResponse",	LLAgent::processAgentCachedTextureResponse); -	msg->setHandlerFunc("RebakeAvatarTextures", LLVOAvatarSelf::processRebakeAvatarTextures);  	msg->setHandlerFuncFast(_PREHASH_CameraConstraint,		process_camera_constraint);  	msg->setHandlerFuncFast(_PREHASH_AvatarSitResponse,		process_avatar_sit_response);  	msg->setHandlerFunc("SetFollowCamProperties",			process_set_follow_cam_properties); @@ -2445,9 +2465,6 @@ void register_viewer_callbacks(LLMessageSystem* msg)  	// msg->setHandlerFuncFast(_PREHASH_ReputationIndividualReply,  	//					LLFloaterRate::processReputationIndividualReply); -	msg->setHandlerFuncFast(_PREHASH_AgentWearablesUpdate, -						LLAgentWearables::processAgentInitialWearablesUpdate ); -  	msg->setHandlerFunc("ScriptControlChange",  						LLAgent::processScriptControlChange ); @@ -2604,9 +2621,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,  		lldebugs << "initial outfit category id: " << cat_id << llendl;  	} -	// This is really misnamed -- it means we have started loading -	// an outfit/shape that will give the avatar a gender eventually. JC -	gAgent.setGenderChosen(TRUE); +	gAgent.setOutfitChosen(TRUE);  }  //static @@ -3367,7 +3382,11 @@ bool process_login_success_response()  		flag = login_flags["gendered"].asString();  		if(flag == "Y")  		{ -			gAgent.setGenderChosen(TRUE); +			// We don't care about this flag anymore; now base whether +			// outfit is chosen on COF contents, initial outfit +			// requested and available, etc. + +			//gAgent.setGenderChosen(TRUE);  		}  		bool pacific_daylight_time = false; diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index e80136b286..dea1c6c1b2 100755 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -431,15 +431,7 @@ void LLAvatarTexBar::draw()  		if (!layerset_buffer) continue;  		LLColor4 text_color = LLColor4::white; -		 -		if (layerset_buffer->uploadNeeded()) -		{ -			text_color = LLColor4::red; -		} - 		if (layerset_buffer->uploadInProgress()) -		{ -			text_color = LLColor4::magenta; -		} +  		std::string text = layerset_buffer->dumpTextureInfo();  		LLFontGL::getFontMonospace()->renderUTF8(text, 0, l_offset, v_offset + line_height*line_num,  												 text_color, LLFontGL::LEFT, LLFontGL::TOP); //, LLFontGL::BOLD, LLFontGL::DROP_SHADOW_SOFT); diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp index 71e0509d03..2d458db36b 100755 --- a/indra/newview/lltoolmorph.cpp +++ b/indra/newview/lltoolmorph.cpp @@ -154,8 +154,8 @@ void LLVisualParamHint::preRender(BOOL clear_depth)  		wearable->setVolatile(TRUE);  	}  	mLastParamWeight = mVisualParam->getWeight(); -	mWearablePtr->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight, FALSE); -	gAgentAvatarp->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight, FALSE); +	mWearablePtr->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight); +	gAgentAvatarp->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight);  	gAgentAvatarp->setVisualParamWeight("Blink_Left", 0.f);  	gAgentAvatarp->setVisualParamWeight("Blink_Right", 0.f);  	gAgentAvatarp->updateComposites(); @@ -246,7 +246,7 @@ BOOL LLVisualParamHint::render()  		gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);  	}  	gAgentAvatarp->setVisualParamWeight(mVisualParam->getID(), mLastParamWeight); -	mWearablePtr->setVisualParamWeight(mVisualParam->getID(), mLastParamWeight, FALSE); +	mWearablePtr->setVisualParamWeight(mVisualParam->getID(), mLastParamWeight);  	LLViewerWearable* wearable = (LLViewerWearable*)mWearablePtr;  	if (wearable)  	{ diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 49eb7dc94a..e1faf3b29b 100755 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7719,6 +7719,7 @@ void handle_buy_currency_test(void*)  	LLFloaterReg::showInstance("buy_currency_html", LLSD(url));  } +// SUNSHINE CLEANUP - is only the request update at the end needed now?  void handle_rebake_textures(void*)  {  	if (!isAgentAvatarValid()) return; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index aecffb4ff5..c7c0e26533 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -4087,10 +4087,6 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)  		gAgent.setTeleportState( LLAgent::TELEPORT_START_ARRIVAL ); -		// set the appearance on teleport since the new sim does not -		// know what you look like. -		gAgent.sendAgentSetAppearance(); -  		if (isAgentAvatarValid())  		{  			// Chat the "back" SLURL. (DEV-4907) diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 91efed1508..dc8acc91a9 100755 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -57,6 +57,7 @@  #include "llaudiosourcevo.h"  #include "llagent.h"  #include "llagentcamera.h" +#include "llagentwearables.h"  #include "llbbox.h"  #include "llbox.h"  #include "llcylinder.h" @@ -140,6 +141,7 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco  			{  				gAgentAvatarp = new LLVOAvatarSelf(id, pcode, regionp);  				gAgentAvatarp->initInstance(); +				gAgentWearables.setAvatarObject(gAgentAvatarp);  			}  			else   			{ diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 7150089380..814b5e2265 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -387,7 +387,7 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,  	mSimAccess( SIM_ACCESS_MIN ),  	mBillableFactor(1.0),  	mMaxTasks(DEFAULT_MAX_REGION_WIDE_PRIM_COUNT), -	mCentralBakeVersion(0), +	mCentralBakeVersion(1),  	mClassID(0),  	mCPURatio(0),  	mColoName("unknown"), diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp index 777e1f9c76..f20ab48fab 100644..100755 --- a/indra/newview/llviewertexlayer.cpp +++ b/indra/newview/llviewertexlayer.cpp @@ -37,7 +37,6 @@  #include "llglslshader.h"  #include "llvoavatarself.h"  #include "pipeline.h" -#include "llassetuploadresponders.h"  #include "llviewercontrol.h"  static const S32 BAKE_UPLOAD_ATTEMPTS = 7; @@ -46,22 +45,6 @@ static const F32 BAKE_UPLOAD_RETRY_DELAY = 2.f; // actual delay grows by power o  // runway consolidate  extern std::string self_av_string(); - -//----------------------------------------------------------------------------- -// LLBakedUploadData() -//----------------------------------------------------------------------------- -LLBakedUploadData::LLBakedUploadData(const LLVOAvatarSelf* avatar, -									 LLViewerTexLayerSet* layerset, -									 const LLUUID& id, -									 bool highest_res) : -	mAvatar(avatar), -	mTexLayerSet(layerset), -	mID(id), -	mStartTime(LLFrameTimer::getTotalTime()),		// Record starting time -	mIsHighestRes(highest_res) -{  -} -  //-----------------------------------------------------------------------------  // LLViewerTexLayerSetBuffer  // The composite image that a LLViewerTexLayerSet writes to.  Each LLViewerTexLayerSet has one. @@ -75,15 +58,10 @@ LLViewerTexLayerSetBuffer::LLViewerTexLayerSetBuffer(LLTexLayerSet* const owner,  	// ORDER_LAST => must render these after the hints are created.  	LLTexLayerSetBuffer(owner),  	LLViewerDynamicTexture( width, height, 4, LLViewerDynamicTexture::ORDER_LAST, TRUE ),  -	mUploadPending(FALSE), // Not used for any logic here, just to sync sending of updates -	mNeedsUpload(FALSE), -	mNumLowresUploads(0), -	mUploadFailCount(0),  	mNeedsUpdate(TRUE),  	mNumLowresUpdates(0)  {  	LLViewerTexLayerSetBuffer::sGLByteCount += getSize(); -	mNeedsUploadTimer.start();  	mNeedsUpdateTimer.start();  } @@ -126,33 +104,6 @@ void LLViewerTexLayerSetBuffer::requestUpdate()  	restartUpdateTimer();  	mNeedsUpdate = TRUE;  	mNumLowresUpdates = 0; -	// If we're in the middle of uploading a baked texture, we don't care about it any more. -	// When it's downloaded, ignore it. -	mUploadID.setNull(); -} - -void LLViewerTexLayerSetBuffer::requestUpload() -{ -	conditionalRestartUploadTimer(); -	mNeedsUpload = TRUE; -	mNumLowresUploads = 0; -	mUploadPending = TRUE; -} - -void LLViewerTexLayerSetBuffer::conditionalRestartUploadTimer() -{ -	// If we requested a new upload but haven't even uploaded -	// a low res version of our last upload request, then -	// keep the timer ticking instead of resetting it. -	if (mNeedsUpload && (mNumLowresUploads == 0)) -	{ -		mNeedsUploadTimer.unpause(); -	} -	else -	{ -		mNeedsUploadTimer.reset(); -		mNeedsUploadTimer.start(); -	}  }  void LLViewerTexLayerSetBuffer::restartUpdateTimer() @@ -161,25 +112,16 @@ void LLViewerTexLayerSetBuffer::restartUpdateTimer()  	mNeedsUpdateTimer.start();  } -void LLViewerTexLayerSetBuffer::cancelUpload() -{ -	mNeedsUpload = FALSE; -	mUploadPending = FALSE; -	mNeedsUploadTimer.pause(); -	mUploadRetryTimer.reset(); -} -  // virtual  BOOL LLViewerTexLayerSetBuffer::needsRender()  {  	llassert(mTexLayerSet->getAvatarAppearance() == gAgentAvatarp);  	if (!isAgentAvatarValid()) return FALSE; -	const BOOL upload_now = mNeedsUpload && isReadyToUpload();  	const BOOL update_now = mNeedsUpdate && isReadyToUpdate(); -	// Don't render if we don't want to (or aren't ready to) upload or update. -	if (!(update_now || upload_now)) +	// Don't render if we don't want to (or aren't ready to) update. +	if (!update_now)  	{  		return FALSE;  	} @@ -190,11 +132,10 @@ BOOL LLViewerTexLayerSetBuffer::needsRender()  		return FALSE;  	} -	// Don't render if we are trying to create a shirt texture but aren't wearing a skirt. +	// Don't render if we are trying to create a skirt texture but aren't wearing a skirt.  	if (gAgentAvatarp->getBakedTE(getViewerTexLayerSet()) == LLAvatarAppearanceDefines::TEX_SKIRT_BAKED &&   		!gAgentAvatarp->isWearingWearableType(LLWearableType::WT_SKIRT))  	{ -		cancelUpload();  		return FALSE;  	} @@ -222,36 +163,7 @@ void LLViewerTexLayerSetBuffer::postRenderTexLayerSet(BOOL success)  // virtual  void LLViewerTexLayerSetBuffer::midRenderTexLayerSet(BOOL success)  { -	// do we need to upload, and do we have sufficient data to create an uploadable composite? -	// TODO: When do we upload the texture if gAgent.mNumPendingQueries is non-zero? -	const BOOL upload_now = mNeedsUpload && isReadyToUpload();  	const BOOL update_now = mNeedsUpdate && isReadyToUpdate(); - -	if(upload_now) -	{ -		if (!success) -		{ -			llinfos << "Failed attempt to bake " << mTexLayerSet->getBodyRegionName() << llendl; -			mUploadPending = FALSE; -		} -		else -		{ -			LLViewerTexLayerSet* layer_set = getViewerTexLayerSet(); -			if (layer_set->isVisible()) -			{ -				layer_set->getAvatar()->debugBakedTextureUpload(layer_set->getBakedTexIndex(), FALSE); // FALSE for start of upload, TRUE for finish. -				doUpload(); -			} -			else -			{ -				mUploadPending = FALSE; -				mNeedsUpload = FALSE; -				mNeedsUploadTimer.pause(); -				layer_set->getAvatar()->setNewBakedTexture(layer_set->getBakedTexIndex(),IMG_INVISIBLE); -			} -		} -	} -	  	if (update_now)  	{  		doUpdate(); @@ -267,60 +179,6 @@ BOOL LLViewerTexLayerSetBuffer::isInitialized(void) const  	return mGLTexturep.notNull() && mGLTexturep->isGLTextureCreated();  } -BOOL LLViewerTexLayerSetBuffer::uploadPending() const -{ -	return mUploadPending; -} - -BOOL LLViewerTexLayerSetBuffer::uploadNeeded() const -{ -	return mNeedsUpload; -} - -BOOL LLViewerTexLayerSetBuffer::uploadInProgress() const -{ -	return !mUploadID.isNull(); -} - -BOOL LLViewerTexLayerSetBuffer::isReadyToUpload() const -{ -	if (!gAgentQueryManager.hasNoPendingQueries()) return FALSE; // Can't upload if there are pending queries. -	if (isAgentAvatarValid() && gAgentAvatarp->isEditingAppearance()) return FALSE; // Don't upload if avatar is being edited. - -	BOOL ready = FALSE; -	if (getViewerTexLayerSet()->isLocalTextureDataFinal()) -	{ -		// If we requested an upload and have the final LOD ready, upload (or wait a while if this is a retry) -		if (mUploadFailCount == 0) -		{ -			ready = TRUE; -		} -		else -		{ -			ready = mUploadRetryTimer.getElapsedTimeF32() >= BAKE_UPLOAD_RETRY_DELAY * (1 << (mUploadFailCount - 1)); -		} -	} -	else -	{ -		// Upload if we've hit a timeout.  Upload is a pretty expensive process so we need to make sure -		// we aren't doing uploads too frequently. -		const U32 texture_timeout = gSavedSettings.getU32("AvatarBakedTextureUploadTimeout"); -		if (texture_timeout != 0) -		{ -			// The timeout period increases exponentially between every lowres upload in order to prevent -			// spamming the server with frequent uploads. -			const U32 texture_timeout_threshold = texture_timeout*(1 << mNumLowresUploads); - -			// If we hit our timeout and have textures available at even lower resolution, then upload. -			const BOOL is_upload_textures_timeout = mNeedsUploadTimer.getElapsedTimeF32() >= texture_timeout_threshold; -			const BOOL has_lower_lod = getViewerTexLayerSet()->isLocalTextureDataAvailable(); -			ready = has_lower_lod && is_upload_textures_timeout; -		} -	} - -	return ready; -} -  BOOL LLViewerTexLayerSetBuffer::isReadyToUpdate() const  {  	// If we requested an update and have the final LOD ready, then update. @@ -358,159 +216,6 @@ BOOL LLViewerTexLayerSetBuffer::requestUpdateImmediate()  	return result;  } -// Create the baked texture, send it out to the server, then wait for it to come -// back so we can switch to using it. -void LLViewerTexLayerSetBuffer::doUpload() -{ -	LLViewerTexLayerSet* layer_set = getViewerTexLayerSet(); -	LL_DEBUGS("Avatar") << "Uploading baked " << layer_set->getBodyRegionName() << llendl; -	LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_BAKES); - -	// Don't need caches since we're baked now.  (note: we won't *really* be baked  -	// until this image is sent to the server and the Avatar Appearance message is received.) -	layer_set->deleteCaches(); - -	// Get the COLOR information from our texture -	U8* baked_color_data = new U8[ mFullWidth * mFullHeight * 4 ]; -	glReadPixels(mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight, GL_RGBA, GL_UNSIGNED_BYTE, baked_color_data ); -	stop_glerror(); - -	// Get the MASK information from our texture -	LLGLSUIDefault gls_ui; -	LLPointer<LLImageRaw> baked_mask_image = new LLImageRaw(mFullWidth, mFullHeight, 1 ); -	U8* baked_mask_data = baked_mask_image->getData();  -	layer_set->gatherMorphMaskAlpha(baked_mask_data, -									mOrigin.mX, mOrigin.mY, -									mFullWidth, mFullHeight); - - -	// Create the baked image from our color and mask information -	const S32 baked_image_components = 5; // red green blue [bump] clothing -	LLPointer<LLImageRaw> baked_image = new LLImageRaw( mFullWidth, mFullHeight, baked_image_components ); -	U8* baked_image_data = baked_image->getData(); -	S32 i = 0; -	for (S32 u=0; u < mFullWidth; u++) -	{ -		for (S32 v=0; v < mFullHeight; v++) -		{ -			baked_image_data[5*i + 0] = baked_color_data[4*i + 0]; -			baked_image_data[5*i + 1] = baked_color_data[4*i + 1]; -			baked_image_data[5*i + 2] = baked_color_data[4*i + 2]; -			baked_image_data[5*i + 3] = baked_color_data[4*i + 3]; // alpha should be correct for eyelashes. -			baked_image_data[5*i + 4] = baked_mask_data[i]; -			i++; -		} -	} -	 -	LLPointer<LLImageJ2C> compressedImage = new LLImageJ2C; -	const char* comment_text = LINDEN_J2C_COMMENT_PREFIX "RGBHM"; // writes into baked_color_data. 5 channels (rgb, heightfield/alpha, mask) -	if (compressedImage->encode(baked_image, comment_text)) -	{ -		LLTransactionID tid; -		tid.generate(); -		const LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); -		if (LLVFile::writeFile(compressedImage->getData(), compressedImage->getDataSize(), -							   gVFS, asset_id, LLAssetType::AT_TEXTURE)) -		{ -			// Read back the file and validate. -			BOOL valid = FALSE; -			LLPointer<LLImageJ2C> integrity_test = new LLImageJ2C; -			S32 file_size = 0; -			LLVFile file(gVFS, asset_id, LLAssetType::AT_TEXTURE); -			file_size = file.getSize(); -			U8* data = integrity_test->allocateData(file_size); -			file.read(data, file_size); -			if (data) -			{ -				valid = integrity_test->validate(data, file_size); // integrity_test will delete 'data' -			} -			else -			{ -				integrity_test->setLastError("Unable to read entire file"); -			} -			 -			if (valid) -			{ -				const bool highest_lod = layer_set->isLocalTextureDataFinal(); -				// Baked_upload_data is owned by the responder and deleted after the request completes. -				LLBakedUploadData* baked_upload_data = new LLBakedUploadData(gAgentAvatarp,  -																			 layer_set,  -																			 asset_id, -																			 highest_lod); -				// upload ID is used to avoid overlaps, e.g. when the user rapidly makes two changes outside of Face Edit. -				mUploadID = asset_id; - -				// Upload the image -				const std::string url = gAgent.getRegion()->getCapability("UploadBakedTexture"); -				if(!url.empty() -					&& !LLPipeline::sForceOldBakedUpload // toggle debug setting UploadBakedTexOld to change between the new caps method and old method -					&& (mUploadFailCount < (BAKE_UPLOAD_ATTEMPTS - 1))) // Try last ditch attempt via asset store if cap upload is failing. -				{ -					LLSD body = LLSD::emptyMap(); -					// The responder will call LLViewerTexLayerSetBuffer::onTextureUploadComplete() -					LLHTTPClient::post(url, body, new LLSendTexLayerResponder(body, mUploadID, LLAssetType::AT_TEXTURE, baked_upload_data)); -					llinfos << "Baked texture upload via capability of " << mUploadID << " to " << url << llendl; -				}  -				else -				{ -					gAssetStorage->storeAssetData(tid, -												  LLAssetType::AT_TEXTURE, -												  LLViewerTexLayerSetBuffer::onTextureUploadComplete, -												  baked_upload_data, -												  TRUE,		// temp_file -												  TRUE,		// is_priority -												  TRUE);	// store_local -					llinfos << "Baked texture upload via Asset Store." <<  llendl; -				} - -				if (highest_lod) -				{ -					// Sending the final LOD for the baked texture.  All done, pause  -					// the upload timer so we know how long it took. -					mNeedsUpload = FALSE; -					mNeedsUploadTimer.pause(); -				} -				else -				{ -					// Sending a lower level LOD for the baked texture.  Restart the upload timer. -					mNumLowresUploads++; -					mNeedsUploadTimer.unpause(); -					mNeedsUploadTimer.reset(); -				} - -				// Print out notification that we uploaded this texture. -				if (gSavedSettings.getBOOL("DebugAvatarRezTime")) -				{ -					const std::string lod_str = highest_lod ? "HighRes" : "LowRes"; -					LLSD args; -					args["EXISTENCE"] = llformat("%d",(U32)layer_set->getAvatar()->debugGetExistenceTimeElapsedF32()); -					args["TIME"] = llformat("%d",(U32)mNeedsUploadTimer.getElapsedTimeF32()); -					args["BODYREGION"] = layer_set->getBodyRegionName(); -					args["RESOLUTION"] = lod_str; -					LLNotificationsUtil::add("AvatarRezSelfBakedTextureUploadNotification",args); -					LL_DEBUGS("Avatar") << self_av_string() << "Uploading [ name: " << layer_set->getBodyRegionName() << " res:" << lod_str << " time:" << (U32)mNeedsUploadTimer.getElapsedTimeF32() << " ]" << LL_ENDL; -				} -			} -			else -			{ -				// The read back and validate operation failed.  Remove the uploaded file. -				mUploadPending = FALSE; -				LLVFile file(gVFS, asset_id, LLAssetType::AT_TEXTURE, LLVFile::WRITE); -				file.remove(); -				llinfos << "Unable to create baked upload file (reason: corrupted)." << llendl; -			} -		} -	} -	else -	{ -		// The VFS write file operation failed. -		mUploadPending = FALSE; -		llinfos << "Unable to create baked upload file (reason: failed to write file)" << llendl; -	} - -	delete [] baked_color_data; -} -  // Mostly bookkeeping; don't need to actually "do" anything since  // render() will actually do the update.  void LLViewerTexLayerSetBuffer::doUpdate() @@ -547,82 +252,6 @@ void LLViewerTexLayerSetBuffer::doUpdate()  	}  } -// static -void LLViewerTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid, -												  void* userdata, -												  S32 result, -												  LLExtStat ext_status) // StoreAssetData callback (not fixed) -{ -	LLBakedUploadData* baked_upload_data = (LLBakedUploadData*)userdata; - -	if (isAgentAvatarValid() && -		!gAgentAvatarp->isDead() && -		(baked_upload_data->mAvatar == gAgentAvatarp) && // Sanity check: only the user's avatar should be uploading textures. -		(baked_upload_data->mTexLayerSet->hasComposite())) -	{ -		LLViewerTexLayerSetBuffer* layerset_buffer = baked_upload_data->mTexLayerSet->getViewerComposite(); -		S32 failures = layerset_buffer->mUploadFailCount; -		layerset_buffer->mUploadFailCount = 0; - -		if (layerset_buffer->mUploadID.isNull()) -		{ -			// The upload got canceled, we should be in the -			// process of baking a new texture so request an -			// upload with the new data - -			// BAP: does this really belong in this callback, as -			// opposed to where the cancellation takes place? -			// suspect this does nothing. -			layerset_buffer->requestUpload(); -		} -		else if (baked_upload_data->mID == layerset_buffer->mUploadID) -		{ -			// This is the upload we're currently waiting for. -			layerset_buffer->mUploadID.setNull(); -			const std::string name(baked_upload_data->mTexLayerSet->getBodyRegionName()); -			const std::string resolution = baked_upload_data->mIsHighestRes ? " full res " : " low res "; -			if (result >= 0) -			{ -				layerset_buffer->mUploadPending = FALSE; // Allows sending of AgentSetAppearance later -				LLAvatarAppearanceDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->getViewerTexLayerSet()); -				// Update baked texture info with the new UUID -				U64 now = LLFrameTimer::getTotalTime();		// Record starting time -				llinfos << "Baked" << resolution << "texture upload for " << name << " took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl; -				gAgentAvatarp->setNewBakedTexture(baked_te, uuid); -			} -			else -			{	 -				++failures; -				S32 max_attempts = baked_upload_data->mIsHighestRes ? BAKE_UPLOAD_ATTEMPTS : 1; // only retry final bakes -				llwarns << "Baked" << resolution << "texture upload for " << name << " failed (attempt " << failures << "/" << max_attempts << ")" << llendl; -				if (failures < max_attempts) -				{ -					layerset_buffer->mUploadFailCount = failures; -					layerset_buffer->mUploadRetryTimer.start(); -					layerset_buffer->requestUpload(); -				} -			} -		} -		else -		{ -			llinfos << "Received baked texture out of date, ignored." << llendl; -		} - -		gAgentAvatarp->dirtyMesh(); -	} -	else -	{ -		// Baked texture failed to upload (in which case since we -		// didn't set the new baked texture, it means that they'll try -		// and rebake it at some point in the future (after login?)), -		// or this response to upload is out of date, in which case a -		// current response should be on the way or already processed. -		llwarns << "Baked upload failed" << llendl; -	} - -	delete baked_upload_data; -} -  //-----------------------------------------------------------------------------  // LLViewerTexLayerSet  // An ordered set of texture layers that get composited into a single texture. @@ -664,20 +293,6 @@ void LLViewerTexLayerSet::requestUpdate()  	}  } -void LLViewerTexLayerSet::requestUpload() -{ -	createComposite(); -	getViewerComposite()->requestUpload(); -} - -void LLViewerTexLayerSet::cancelUpload() -{ -	if(mComposite) -	{ -		getViewerComposite()->cancelUpload(); -	} -} -  void LLViewerTexLayerSet::updateComposite()  {  	createComposite(); @@ -730,19 +345,12 @@ const std::string LLViewerTexLayerSetBuffer::dumpTextureInfo() const  {  	if (!isAgentAvatarValid()) return ""; -	const BOOL is_high_res = !mNeedsUpload; -	const U32 num_low_res = mNumLowresUploads; -	const U32 upload_time = (U32)mNeedsUploadTimer.getElapsedTimeF32(); +	const BOOL is_high_res = TRUE;  +	const U32 num_low_res = 0;  	const std::string local_texture_info = gAgentAvatarp->debugDumpLocalTextureDataInfo(getViewerTexLayerSet()); -	std::string status 				= "CREATING "; -	if (!uploadNeeded()) status 	= "DONE     "; -	if (uploadInProgress()) status 	= "UPLOADING"; - -	std::string text = llformat("[%s] [HiRes:%d LoRes:%d] [Elapsed:%d] %s", -								status.c_str(), +	std::string text = llformat("[HiRes:%d LoRes:%d] %s",  								is_high_res, num_low_res, -								upload_time,   								local_texture_info.c_str());  	return text;  } diff --git a/indra/newview/llviewertexlayer.h b/indra/newview/llviewertexlayer.h index 959c883da8..027ae255ec 100644..100755 --- a/indra/newview/llviewertexlayer.h +++ b/indra/newview/llviewertexlayer.h @@ -47,8 +47,6 @@ public:  	virtual ~LLViewerTexLayerSet();  	/*virtual*/void				requestUpdate(); -	void						requestUpload(); -	void						cancelUpload();  	BOOL						isLocalTextureDataAvailable() const;  	BOOL						isLocalTextureDataFinal() const;  	void						updateComposite(); @@ -116,31 +114,6 @@ protected:  	virtual BOOL			render() { return renderTexLayerSet(); }  	//-------------------------------------------------------------------- -	// Uploads -	//-------------------------------------------------------------------- -public: -	void					requestUpload(); -	void					cancelUpload(); -	BOOL					uploadNeeded() const; 			// We need to upload a new texture -	BOOL					uploadInProgress() const; 		// We have started uploading a new texture and are awaiting the result -	BOOL					uploadPending() const; 			// We are expecting a new texture to be uploaded at some point -	static void				onTextureUploadComplete(const LLUUID& uuid, -													void* userdata, -													S32 result, LLExtStat ext_status); -protected: -	BOOL					isReadyToUpload() const; -	void					doUpload(); 					// Does a read back and upload. -	void					conditionalRestartUploadTimer(); -private: -	BOOL					mNeedsUpload; 					// Whether we need to send our baked textures to the server -	U32						mNumLowresUploads; 				// Number of times we've sent a lowres version of our baked textures to the server -	BOOL					mUploadPending; 				// Whether we have received back the new baked textures -	LLUUID					mUploadID; 						// The current upload process (null if none). -	LLFrameTimer    		mNeedsUploadTimer; 				// Tracks time since upload was requested and performed. -	S32						mUploadFailCount;				// Number of consecutive upload failures -	LLFrameTimer    		mUploadRetryTimer; 				// Tracks time since last upload failure. - -	//--------------------------------------------------------------------  	// Updates  	//--------------------------------------------------------------------  public: @@ -156,25 +129,5 @@ private:  	LLFrameTimer    		mNeedsUpdateTimer; 				// Tracks time since update was requested and performed.  }; - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// LLBakedUploadData -// -// Used by LLTexLayerSetBuffer for a callback. -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -struct LLBakedUploadData -{ -	LLBakedUploadData(const LLVOAvatarSelf* avatar, -					  LLViewerTexLayerSet* layerset,  -					  const LLUUID& id, -					  bool highest_res); -	~LLBakedUploadData() {} -	const LLUUID				mID; -	const LLVOAvatarSelf*		mAvatar; // note: backlink only; don't LLPointer  -	LLViewerTexLayerSet*		mTexLayerSet; -   	const U64					mStartTime;	// for measuring baked texture upload time -   	const bool					mIsHighestRes; // whether this is a "final" bake, or intermediate low res -}; -  #endif  // LL_VIEWER_TEXLAYER_H diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 5ab628ab2c..1f42590884 100755 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -964,7 +964,7 @@ LLViewerFetchedTexture::LLViewerFetchedTexture(const LLUUID& id, FTType f_type,  	mFTType = f_type;  	if (mFTType == FTT_HOST_BAKE)  	{ -		mCanUseHTTP = false; +		llwarns << "Unsupported fetch type " << mFTType << llendl;  	}  	generateGLTexture() ;  } diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp index 76f94935b8..143eab133d 100644..100755 --- a/indra/newview/llviewerwearable.cpp +++ b/indra/newview/llviewerwearable.cpp @@ -266,7 +266,7 @@ void LLViewerWearable::setParamsToDefaults()  	{  		if( (((LLViewerVisualParam*)param)->getWearableType() == mType ) && (param->isTweakable() ) )  		{ -			setVisualParamWeight(param->getID(),param->getDefaultWeight(), FALSE); +			setVisualParamWeight(param->getID(),param->getDefaultWeight());  		}  	}  } @@ -322,16 +322,6 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)  	if (!viewer_avatar->isValid()) return; -#if 0 -	// FIXME DRANO - kludgy way to avoid overwriting avatar state from wearables. -	// Ideally would avoid calling this func in the first place. -	if (viewer_avatar->isUsingServerBakes() && -		!viewer_avatar->isUsingLocalAppearance()) -	{ -		return; -	} -#endif -  	ESex old_sex = avatarp->getSex();  	LLWearable::writeToAvatar(avatarp); @@ -361,19 +351,14 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)  	ESex new_sex = avatarp->getSex();  	if( old_sex != new_sex )  	{ -		viewer_avatar->updateSexDependentLayerSets( FALSE ); +		viewer_avatar->updateSexDependentLayerSets();  	}	 -	 -//	if( upload_bake ) -//	{ -//		gAgent.sendAgentSetAppearance(); -//	}  }  // Updates the user's avatar's appearance, replacing this wearables' parameters and textures with default values.  // static  -void LLViewerWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload_bake ) +void LLViewerWearable::removeFromAvatar( LLWearableType::EType type)  {  	if (!isAgentAvatarValid()) return; @@ -392,7 +377,7 @@ void LLViewerWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload  		if( (((LLViewerVisualParam*)param)->getWearableType() == type) && (param->isTweakable() ) )  		{  			S32 param_id = param->getID(); -			gAgentAvatarp->setVisualParamWeight( param_id, param->getDefaultWeight(), upload_bake ); +			gAgentAvatarp->setVisualParamWeight( param_id, param->getDefaultWeight());  		}  	} @@ -402,12 +387,7 @@ void LLViewerWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload  	}  	gAgentAvatarp->updateVisualParams(); -	gAgentAvatarp->wearableUpdated(type, FALSE); - -//	if( upload_bake ) -//	{ -//		gAgent.sendAgentSetAppearance(); -//	} +	gAgentAvatarp->wearableUpdated(type);  }  // Does not copy mAssetID. @@ -480,13 +460,6 @@ void LLViewerWearable::setItemID(const LLUUID& item_id)  void LLViewerWearable::revertValues()  { -#if 0 -	// DRANO avoid overwrite when not in local appearance -	if (isAgentAvatarValid() && gAgentAvatarp->isUsingServerBakes() && !gAgentAvatarp->isUsingLocalAppearance()) -	{ -		return; -	} -#endif  	LLWearable::revertValues(); @@ -524,13 +497,6 @@ void LLViewerWearable::refreshName()  	}  } -// virtual -void LLViewerWearable::addToBakedTextureHash(LLMD5& hash) const -{ -	LLUUID asset_id = getAssetID(); -	hash.update((const unsigned char*)asset_id.mData, UUID_BYTES); -} -  struct LLWearableSaveData  {  	LLWearableType::EType mType; diff --git a/indra/newview/llviewerwearable.h b/indra/newview/llviewerwearable.h index ef8c29323e..fb92bca5cc 100644..100755 --- a/indra/newview/llviewerwearable.h +++ b/indra/newview/llviewerwearable.h @@ -61,8 +61,8 @@ public:  	BOOL				isOldVersion() const;  	/*virtual*/ void	writeToAvatar(LLAvatarAppearance *avatarp); -	void				removeFromAvatar( BOOL upload_bake )	{ LLViewerWearable::removeFromAvatar( mType, upload_bake ); } -	static void			removeFromAvatar( LLWearableType::EType type, BOOL upload_bake );  +	void				removeFromAvatar()	{ LLViewerWearable::removeFromAvatar( mType); } +	static void			removeFromAvatar( LLWearableType::EType type);   	/*virtual*/ EImportResult	importStream( std::istream& input_stream, LLAvatarAppearance* avatarp ); @@ -90,9 +90,7 @@ public:  	// the wearable was worn. make sure the name of the wearable object matches the LLViewerInventoryItem,  	// not the wearable asset itself.  	void				refreshName(); - -	// Update the baked texture hash. -	/*virtual*/void		addToBakedTextureHash(LLMD5& hash) const; +	/*virtual*/void		addToBakedTextureHash(LLMD5& hash) const {}  protected:  	LLAssetID			mAssetID; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 110f571397..3d268a1bcb 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -707,7 +707,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,  	mLastRezzedStatus(-1),  	mIsEditingAppearance(FALSE),  	mUseLocalAppearance(FALSE), -	mUseServerBakes(FALSE), // FIXME DRANO consider using boost::optional, defaulting to unknown.  	mLastUpdateRequestCOFVersion(-1),  	mLastUpdateReceivedCOFVersion(-1)  { @@ -1067,7 +1066,7 @@ void LLVOAvatar::restoreGL()  	gAgentAvatarp->setCompositeUpdatesEnabled(TRUE);  	for (U32 i = 0; i < gAgentAvatarp->mBakedTextureDatas.size(); i++)  	{ -		gAgentAvatarp->invalidateComposite(gAgentAvatarp->getTexLayerSet(i), FALSE); +		gAgentAvatarp->invalidateComposite(gAgentAvatarp->getTexLayerSet(i));  	}  	gAgentAvatarp->updateMeshTextures();  } @@ -1885,22 +1884,17 @@ LLViewerFetchedTexture *LLVOAvatar::getBakedTextureImage(const U8 te, const LLUU  	if (!result)  	{  		const std::string url = getImageURL(te,uuid); -		if (!url.empty()) +		if (url.empty())  		{ -			LL_DEBUGS("Avatar") << avString() << "get server-bake image from URL " << url << llendl; -			result = LLViewerTextureManager::getFetchedTextureFromUrl( -				url, FTT_SERVER_BAKE, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid); -			if (result->isMissingAsset()) -			{ -				result->setIsMissingAsset(false); -			} +			llwarns << "unable to determine URL for te " << te << " uuid " << uuid << llendl; +			return NULL;  		} -		else +		LL_DEBUGS("Avatar") << avString() << "get server-bake image from URL " << url << llendl; +		result = LLViewerTextureManager::getFetchedTextureFromUrl( +			url, FTT_SERVER_BAKE, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid); +		if (result->isMissingAsset())  		{ -			LL_DEBUGS("Avatar") << avString() << "get old-bake image from host " << uuid << llendl; -			LLHost host = getObjectHost(); -			result = LLViewerTextureManager::getFetchedTexture( -				uuid, FTT_HOST_BAKE, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); +			result->setIsMissingAsset(false);  		}  	}  	return result; @@ -2130,8 +2124,8 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)  				if ( mLipSyncActive )  				{ -					if( mOohMorph ) mOohMorph->setWeight(mOohMorph->getMinWeight(), FALSE); -					if( mAahMorph ) mAahMorph->setWeight(mAahMorph->getMinWeight(), FALSE); +					if( mOohMorph ) mOohMorph->setWeight(mOohMorph->getMinWeight()); +					if( mAahMorph ) mAahMorph->setWeight(mAahMorph->getMinWeight());  					mLipSyncActive = false;  					LLCharacter::updateVisualParams(); @@ -2294,14 +2288,10 @@ void LLVOAvatar::idleUpdateAppearanceAnimation()  			{  				if (param->isTweakable())  				{ -					param->stopAnimating(FALSE); +					param->stopAnimating();  				}  			}  			updateVisualParams(); -			if (isSelf()) -			{ -				gAgent.sendAgentSetAppearance(); -			}  		}  		else  		{ @@ -2317,7 +2307,7 @@ void LLVOAvatar::idleUpdateAppearanceAnimation()  				{  					if (param->isTweakable())  					{ -						param->animate(morph_amt, FALSE); +						param->animate(morph_amt);  					}  				}  			} @@ -2370,7 +2360,7 @@ void LLVOAvatar::idleUpdateLipSync(bool voice_enabled)  			F32 ooh_weight = mOohMorph->getMinWeight()  				+ ooh_morph_amount * (mOohMorph->getMaxWeight() - mOohMorph->getMinWeight()); -			mOohMorph->setWeight( ooh_weight, FALSE ); +			mOohMorph->setWeight( ooh_weight);  		}  		if( mAahMorph ) @@ -2378,7 +2368,7 @@ void LLVOAvatar::idleUpdateLipSync(bool voice_enabled)  			F32 aah_weight = mAahMorph->getMinWeight()  				+ aah_morph_amount * (mAahMorph->getMaxWeight() - mAahMorph->getMinWeight()); -			mAahMorph->setWeight( aah_weight, FALSE ); +			mAahMorph->setWeight( aah_weight);  		}  		mLipSyncActive = true; @@ -3015,7 +3005,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)  										  isSelf() ? (all_local_downloaded ? "L" : "l") : "-",  										  all_baked_downloaded ? "B" : "b",  										  mUseLocalAppearance, mIsEditingAppearance, -										  mUseServerBakes, central_bake_version); +										  1, central_bake_version);  		std::string origin_string = bakedTextureOriginInfo();  		debug_line += " [" + origin_string + "]";  		S32 curr_cof_version = LLAppearanceMgr::instance().getCOFVersion(); @@ -4121,34 +4111,6 @@ bool LLVOAvatar::allBakedTexturesCompletelyDownloaded() const  	return allTexturesCompletelyDownloaded(baked_ids);  } -void LLVOAvatar::bakedTextureOriginCounts(S32 &sb_count, // server-bake, has origin URL. -										  S32 &host_count, // host-based bake, has host. -										  S32 &both_count, // error - both host and URL set. -										  S32 &neither_count) // error - neither set. -{ -	sb_count = host_count = both_count = neither_count = 0; -	 -	std::set<LLUUID> baked_ids; -	collectBakedTextureUUIDs(baked_ids); -	for (std::set<LLUUID>::const_iterator it = baked_ids.begin(); it != baked_ids.end(); ++it) -	{ -		LLViewerFetchedTexture *imagep = gTextureList.findImage(*it); -		bool has_url = false, has_host = false; -		if (!imagep->getUrl().empty()) -		{ -			has_url = true; -		} -		if (imagep->getTargetHost().isOk()) -		{ -			has_host = true; -		} -		if (has_url && !has_host) sb_count++; -		else if (has_host && !has_url) host_count++; -		else if (has_host && has_url) both_count++; -		else if (!has_host && !has_url) neither_count++; -	} -} -  std::string LLVOAvatar::bakedTextureOriginInfo()  {  	std::string result; @@ -4389,19 +4351,6 @@ void LLVOAvatar::updateTextures()  		{  			const S32 boost_level = getAvatarBakedBoostLevel();  			imagep = LLViewerTextureManager::staticCastToFetchedTexture(getImage(texture_index,0), TRUE); -			// Spam if this is a baked texture, not set to default image, without valid host info -			if (isIndexBakedTexture((ETextureIndex)texture_index) -				&& imagep->getID() != IMG_DEFAULT_AVATAR -				&& imagep->getID() != IMG_INVISIBLE -				&& !isUsingServerBakes()  -				&& !imagep->getTargetHost().isOk()) -			{ -				LL_WARNS_ONCE("Texture") << "LLVOAvatar::updateTextures No host for texture " -										 << imagep->getID() << " for avatar " -										 << (isSelf() ? "<myself>" : getID().asString())  -										 << " on host " << getRegion()->getHost() << llendl; -			} -  			addBakedTextureStats( imagep, mPixelArea, texel_area_ratio, boost_level );			  		}  	} @@ -4533,22 +4482,19 @@ const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)  {  	llassert(isIndexBakedTexture(ETextureIndex(te)));  	std::string url = ""; -	if (isUsingServerBakes()) +	const std::string& appearance_service_url = LLAppearanceMgr::instance().getAppearanceServiceURL(); +	if (appearance_service_url.empty())  	{ -		const std::string& appearance_service_url = LLAppearanceMgr::instance().getAppearanceServiceURL(); -		if (appearance_service_url.empty()) -		{ -			// Probably a server-side issue if we get here: -			llwarns << "AgentAppearanceServiceURL not set - Baked texture requests will fail" << llendl; -			return url; -		} +		// Probably a server-side issue if we get here: +		llwarns << "AgentAppearanceServiceURL not set - Baked texture requests will fail" << llendl; +		return url; +	} -		const LLAvatarAppearanceDictionary::TextureEntry* texture_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)te); -		if (texture_entry != NULL) -		{ -			url = appearance_service_url + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString(); -			//llinfos << "baked texture url: " << url << llendl; -		} +	const LLAvatarAppearanceDictionary::TextureEntry* texture_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)te); +	if (texture_entry != NULL) +	{ +		url = appearance_service_url + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString(); +		//llinfos << "baked texture url: " << url << llendl;  	}  	return url;  } @@ -5345,11 +5291,11 @@ BOOL LLVOAvatar::updateGeometry(LLDrawable *drawable)  //-----------------------------------------------------------------------------  // updateSexDependentLayerSets()  //----------------------------------------------------------------------------- -void LLVOAvatar::updateSexDependentLayerSets( BOOL upload_bake ) +void LLVOAvatar::updateSexDependentLayerSets()  { -	invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, upload_bake ); -	invalidateComposite( mBakedTextureDatas[BAKED_UPPER].mTexLayerSet, upload_bake ); -	invalidateComposite( mBakedTextureDatas[BAKED_LOWER].mTexLayerSet, upload_bake ); +	invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet); +	invalidateComposite( mBakedTextureDatas[BAKED_UPPER].mTexLayerSet); +	invalidateComposite( mBakedTextureDatas[BAKED_LOWER].mTexLayerSet);  }  //----------------------------------------------------------------------------- @@ -5829,7 +5775,7 @@ BOOL LLVOAvatar::isWearingWearableType(LLWearableType::EType type) const  // virtual -void LLVOAvatar::invalidateComposite( LLTexLayerSet* layerset, BOOL upload_result ) +void LLVOAvatar::invalidateComposite( LLTexLayerSet* layerset)  {  } @@ -5838,18 +5784,18 @@ void LLVOAvatar::invalidateAll()  }  // virtual -void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake ) +void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color)  {  	if (global_color == mTexSkinColor)  	{ -		invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, upload_bake ); -		invalidateComposite( mBakedTextureDatas[BAKED_UPPER].mTexLayerSet, upload_bake ); -		invalidateComposite( mBakedTextureDatas[BAKED_LOWER].mTexLayerSet, upload_bake ); +		invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet); +		invalidateComposite( mBakedTextureDatas[BAKED_UPPER].mTexLayerSet); +		invalidateComposite( mBakedTextureDatas[BAKED_LOWER].mTexLayerSet);  	}  	else if (global_color == mTexHairColor)  	{ -		invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, upload_bake ); -		invalidateComposite( mBakedTextureDatas[BAKED_HAIR].mTexLayerSet, upload_bake ); +		invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet); +		invalidateComposite( mBakedTextureDatas[BAKED_HAIR].mTexLayerSet);  		// ! BACKWARDS COMPATIBILITY !  		// Fix for dealing with avatars from viewers that don't bake hair. @@ -5871,7 +5817,7 @@ void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL  	else if (global_color == mTexEyeColor)  	{  //		llinfos << "invalidateComposite cause: onGlobalColorChanged( eyecolor )" << llendl;  -		invalidateComposite( mBakedTextureDatas[BAKED_EYES].mTexLayerSet,  upload_bake ); +		invalidateComposite( mBakedTextureDatas[BAKED_EYES].mTexLayerSet);  	}  	updateMeshTextures();  } @@ -6071,7 +6017,7 @@ void LLVOAvatar::logMetricsTimerRecord(const std::string& phase_name, F32 elapse  	}  	record["grid_x"] = LLSD::Integer(grid_x);  	record["grid_y"] = LLSD::Integer(grid_y); -	record["is_using_server_bakes"] = ((bool) isUsingServerBakes()); +	record["is_using_server_bakes"] = true;  	record["is_self"] = isSelf();  	if (isAgentAvatarValid()) @@ -6904,19 +6850,18 @@ bool resolve_appearance_version(const LLAppearanceMessageContents& contents, S32  	{  		llwarns << "inconsistent appearance_version settings - field: " <<  			contents.mAppearanceVersion << ", param: " <<  contents.mParamAppearanceVersion << llendl; -		return false;  	} -	if (contents.mParamAppearanceVersion >= 0) // use visual param if available. +	if (contents.mParamAppearanceVersion > 0) // use visual param if available.  	{  		appearance_version = contents.mParamAppearanceVersion;  	} -	if (contents.mAppearanceVersion >= 0) +	else if (contents.mAppearanceVersion > 0)  	{  		appearance_version = contents.mAppearanceVersion;  	} -	if (appearance_version < 0) // still not set, go with 0. +	else // still not set, go with 1.  	{ -		appearance_version = 0; +		appearance_version = 1;  	}  	LL_DEBUGS("Avatar") << "appearance version info - field " << contents.mAppearanceVersion  						<< " param: " << contents.mParamAppearanceVersion @@ -6954,24 +6899,21 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  		llwarns << "bad appearance version info, discarding" << llendl;  		return;  	} +	llassert(appearance_version > 0); +	if (appearance_version > 1) +	{ +		llwarns << "unsupported appearance version " << appearance_version << ", discarding appearance message" << llendl; +		return; +	} +  	S32 this_update_cof_version = contents.mCOFVersion;  	S32 last_update_request_cof_version = mLastUpdateRequestCOFVersion; -	// Only now that we have result of appearance_version can we decide whether to bail out.  	if( isSelf() )  	{  		LL_DEBUGS("Avatar") << "this_update_cof_version " << this_update_cof_version  				<< " last_update_request_cof_version " << last_update_request_cof_version  				<<  " my_cof_version " << LLAppearanceMgr::instance().getCOFVersion() << llendl; - -		if (getRegion() && (getRegion()->getCentralBakeVersion()==0)) -		{ -			llwarns << avString() << "Received AvatarAppearance message for self in non-server-bake region" << llendl; -		} -		if( mFirstTEMessageReceived && (appearance_version == 0)) -		{ -			return; -		}  	}  	else  	{ @@ -6980,7 +6922,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  	// Check for stale update.  	if (isSelf() -		&& (appearance_version>0)  		&& (this_update_cof_version < last_update_request_cof_version))  	{  		llwarns << "Stale appearance update, wanted version " << last_update_request_cof_version @@ -6994,6 +6935,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  		return;  	} +	// SUNSHINE CLEANUP - is this case OK now?  	S32 num_params = contents.mParamWeights.size();  	if (num_params <= 1)  	{ @@ -7005,18 +6947,14 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  		return;  	} -	// No backsies zone - if we get here, the message should be valid and usable. -	if (appearance_version > 0) -	{ -		// Note: -		// RequestAgentUpdateAppearanceResponder::onRequestRequested() -		// assumes that cof version is only updated with server-bake -		// appearance messages. -		mLastUpdateReceivedCOFVersion = this_update_cof_version; -	} -		 -	setIsUsingServerBakes(appearance_version > 0); +	// No backsies zone - if we get here, the message should be valid and usable, will be processed. +	// Note: +	// RequestAgentUpdateAppearanceResponder::onRequestRequested() +	// assumes that cof version is only updated with server-bake +	// appearance messages. +	mLastUpdateReceivedCOFVersion = this_update_cof_version; +		  	applyParsedTEMessage(contents.mTEContents);  	// prevent the overwriting of valid baked textures with invalid baked textures @@ -7026,13 +6964,13 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  			&& mBakedTextureDatas[baked_index].mLastTextureID != IMG_DEFAULT  			&& baked_index != BAKED_SKIRT)  		{ -			LL_DEBUGS("Avatar") << avString() << "sb " << (S32) isUsingServerBakes() << " baked_index " << (S32) baked_index << " using mLastTextureID " << mBakedTextureDatas[baked_index].mLastTextureID << llendl; +			LL_DEBUGS("Avatar") << avString() << " baked_index " << (S32) baked_index << " using mLastTextureID " << mBakedTextureDatas[baked_index].mLastTextureID << llendl;  			setTEImage(mBakedTextureDatas[baked_index].mTextureIndex,   				LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureID, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));  		}  		else  		{ -			LL_DEBUGS("Avatar") << avString() << "sb " << (S32) isUsingServerBakes() << " baked_index " << (S32) baked_index << " using texture id " +			LL_DEBUGS("Avatar") << avString() << " baked_index " << (S32) baked_index << " using texture id "  								<< getTE(mBakedTextureDatas[baked_index].mTextureIndex)->getID() << llendl;  		}  	} @@ -7074,13 +7012,13 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  				if(is_first_appearance_message)  				{  					//LL_DEBUGS("Avatar") << "param slam " << i << " " << newWeight << llendl; -					param->setWeight(newWeight, FALSE); +					param->setWeight(newWeight);  				}  				else  				{  					//LL_DEBUGS("Avatar") << std::setprecision(5) << " param target " << i << " " << param->getWeight() << " -> " << newWeight << llendl;  					interp_params = TRUE; -					param->setAnimationTarget(newWeight, FALSE); +					param->setAnimationTarget(newWeight);  				}  			}  		} @@ -7103,7 +7041,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  			ESex new_sex = getSex();  			if( old_sex != new_sex )  			{ -				updateSexDependentLayerSets( FALSE ); +				updateSexDependentLayerSets();  			}	  		} @@ -7613,41 +7551,6 @@ void LLVOAvatar::startAppearanceAnimation()  	}  } -//virtual -void LLVOAvatar::bodySizeChanged() -{ -	if (isSelf() && !LLAppearanceMgr::instance().isInUpdateAppearanceFromCOF()) -	{	// notify simulator of change in size -		// but not if we are in the middle of updating appearance -		gAgent.sendAgentSetAppearance(); -	} -} - -BOOL LLVOAvatar::isUsingServerBakes() const -{ -#if 1 -	// Sanity check - visual param for appearance version should match mUseServerBakes -	LLVisualParam* appearance_version_param = getVisualParam(11000); -	llassert(appearance_version_param); -	F32 wt = appearance_version_param->getWeight(); -	F32 expect_wt = mUseServerBakes ? 1.0 : 0.0; -	if (!is_approx_equal(wt,expect_wt)) -	{ -		llwarns << "wt " << wt << " differs from expected " << expect_wt << llendl; -	} -#endif - -	return mUseServerBakes; -} - -void LLVOAvatar::setIsUsingServerBakes(BOOL newval) -{ -	mUseServerBakes = newval; -	LLVisualParam* appearance_version_param = getVisualParam(11000); -	llassert(appearance_version_param); -	appearance_version_param->setWeight(newval ? 1.0 : 0.0, false); -} -  // virtual  void LLVOAvatar::removeMissingBakedTextures()  {	 diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 8d047045cb..d297ce2b91 100755 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -142,8 +142,6 @@ public:  	bool 						allTexturesCompletelyDownloaded(std::set<LLUUID>& ids) const;  	bool 						allLocalTexturesCompletelyDownloaded() const;  	bool 						allBakedTexturesCompletelyDownloaded() const; -	void 						bakedTextureOriginCounts(S32 &sb_count, S32 &host_count, -														 S32 &both_count, S32 &neither_count);  	std::string 				bakedTextureOriginInfo();  	void 						collectLocalTextureUUIDs(std::set<LLUUID>& ids) const;  	void 						collectBakedTextureUUIDs(std::set<LLUUID>& ids) const; @@ -402,7 +400,7 @@ public:  	// Global colors  	//--------------------------------------------------------------------  public: -	/*virtual*/void onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake); +	/*virtual*/void onGlobalColorChanged(const LLTexGlobalColor* global_color);  	//--------------------------------------------------------------------  	// Visibility @@ -562,7 +560,7 @@ protected:  	// Composites  	//--------------------------------------------------------------------  public: -	virtual void	invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result); +	virtual void	invalidateComposite(LLTexLayerSet* layerset);  	virtual void	invalidateAll();  	virtual void	setCompositeUpdatesEnabled(bool b) {}  	virtual void 	setCompositeUpdatesEnabled(U32 index, bool b) {} @@ -599,7 +597,7 @@ private:  public:  	void			debugColorizeSubMeshes(U32 i, const LLColor4& color);  	virtual void 	updateMeshTextures(); -	void 			updateSexDependentLayerSets(BOOL upload_bake); +	void 			updateSexDependentLayerSets();  	virtual void	dirtyMesh(); // Dirty the avatar mesh  	void 			updateMeshData();  protected: @@ -632,7 +630,6 @@ public:  	void 			processAvatarAppearance(LLMessageSystem* mesgsys);  	void 			hideSkirt();  	void			startAppearanceAnimation(); -	/*virtual*/ void bodySizeChanged();  	//--------------------------------------------------------------------  	// Appearance morphing @@ -645,12 +642,6 @@ public:  	// editing or when waiting for a subsequent server rebake.  	/*virtual*/ BOOL	isUsingLocalAppearance() const { return mUseLocalAppearance; } -	// True if this avatar should fetch its baked textures via the new -	// appearance mechanism. -	BOOL				isUsingServerBakes() const; -	void 				setIsUsingServerBakes(BOOL newval); - -  	// True if we are currently in appearance editing mode. Often but  	// not always the same as isUsingLocalAppearance().  	/*virtual*/ BOOL	isEditingAppearance() const { return mIsEditingAppearance; } @@ -663,7 +654,6 @@ private:  	F32				mLastAppearanceBlendTime;  	BOOL			mIsEditingAppearance; // flag for if we're actively in appearance editing mode  	BOOL			mUseLocalAppearance; // flag for if we're using a local composite -	BOOL			mUseServerBakes; // flag for if baked textures should be fetched from baking service (false if they're temporary uploads)  	//--------------------------------------------------------------------  	// Visibility diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index a710c95233..d7ff78d2a6 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -161,8 +161,6 @@ LLVOAvatarSelf::LLVOAvatarSelf(const LLUUID& id,  	mRegionCrossingCount(0),  	mInitialBakesLoaded(false)  { -	gAgentWearables.setAvatarObject(this); -  	mMotionController.mIsSelf = TRUE;  	lldebugs << "Marking avatar as self " << id << llendl; @@ -188,15 +186,6 @@ bool update_avatar_rez_metrics()  	return false;  } -bool check_for_unsupported_baked_appearance() -{ -	if (!isAgentAvatarValid()) -		return true; - -	gAgentAvatarp->checkForUnsupportedServerBakeAppearance(); -	return false; -} -  void LLVOAvatarSelf::initInstance()  {  	BOOL status = TRUE; @@ -233,7 +222,6 @@ void LLVOAvatarSelf::initInstance()  	//doPeriodically(output_self_av_texture_diagnostics, 30.0);  	doPeriodically(update_avatar_rez_metrics, 5.0); -	doPeriodically(check_for_unsupported_baked_appearance, 120.0);  	doPeriodically(boost::bind(&LLVOAvatarSelf::checkStuckAppearance, this), 30.0);  } @@ -672,49 +660,41 @@ LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)  	return LLVOAvatar::getJoint(name);  }  // virtual -BOOL LLVOAvatarSelf::setVisualParamWeight(const LLVisualParam *which_param, F32 weight, BOOL upload_bake ) +BOOL LLVOAvatarSelf::setVisualParamWeight(const LLVisualParam *which_param, F32 weight)  {  	if (!which_param)  	{  		return FALSE;  	}  	LLViewerVisualParam *param = (LLViewerVisualParam*) LLCharacter::getVisualParam(which_param->getID()); -	return setParamWeight(param,weight,upload_bake); +	return setParamWeight(param,weight);  }  // virtual -BOOL LLVOAvatarSelf::setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake ) +BOOL LLVOAvatarSelf::setVisualParamWeight(const char* param_name, F32 weight)  {  	if (!param_name)  	{  		return FALSE;  	}  	LLViewerVisualParam *param = (LLViewerVisualParam*) LLCharacter::getVisualParam(param_name); -	return setParamWeight(param,weight,upload_bake); +	return setParamWeight(param,weight);  }  // virtual -BOOL LLVOAvatarSelf::setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake ) +BOOL LLVOAvatarSelf::setVisualParamWeight(S32 index, F32 weight)  {  	LLViewerVisualParam *param = (LLViewerVisualParam*) LLCharacter::getVisualParam(index); -	return setParamWeight(param,weight,upload_bake); +	return setParamWeight(param,weight);  } -BOOL LLVOAvatarSelf::setParamWeight(const LLViewerVisualParam *param, F32 weight, BOOL upload_bake ) +BOOL LLVOAvatarSelf::setParamWeight(const LLViewerVisualParam *param, F32 weight)  {  	if (!param)  	{  		return FALSE;  	} -#if 0 -	// FIXME DRANO - kludgy way to avoid overwriting avatar state from wearables. -	if (isUsingServerBakes() && !isUsingLocalAppearance()) -	{ -		return FALSE; -	} -#endif -  	if (param->getCrossWearable())  	{  		LLWearableType::EType type = (LLWearableType::EType)param->getWearableType(); @@ -724,12 +704,12 @@ BOOL LLVOAvatarSelf::setParamWeight(const LLViewerVisualParam *param, F32 weight  			LLViewerWearable *wearable = gAgentWearables.getViewerWearable(type,count);  			if (wearable)  			{ -				wearable->setVisualParamWeight(param->getID(), weight, upload_bake); +				wearable->setVisualParamWeight(param->getID(), weight);  			}  		}  	} -	return LLCharacter::setVisualParamWeight(param,weight,upload_bake); +	return LLCharacter::setVisualParamWeight(param,weight);  }  /*virtual*/  @@ -742,7 +722,7 @@ void LLVOAvatarSelf::updateVisualParams()  void LLVOAvatarSelf::idleUpdateAppearanceAnimation()  {  	// Animate all top-level wearable visual parameters -	gAgentWearables.animateAllWearableParams(calcMorphAmount(), FALSE); +	gAgentWearables.animateAllWearableParams(calcMorphAmount());  	// apply wearable visual params to avatar  	for (U32 type = 0; type < LLWearableType::WT_COUNT; type++) @@ -784,54 +764,6 @@ void LLVOAvatarSelf::stopMotionFromSource(const LLUUID& source_id)  	}  } -//virtual -U32  LLVOAvatarSelf::processUpdateMessage(LLMessageSystem *mesgsys, -													 void **user_data, -													 U32 block_num, -													 const EObjectUpdateType update_type, -													 LLDataPacker *dp) -{ -	U32 retval = LLVOAvatar::processUpdateMessage(mesgsys,user_data,block_num,update_type,dp); - -#if 0 -	// DRANO - it's not clear this does anything useful. If we wait -	// until an appearance message has been received, we already have -	// the texture ids. If we don't wait, we don't yet know where to -	// look for baked textures, because we haven't received the -	// appearance version data from the appearance message. This looks -	// like an old optimization that's incompatible with server-side -	// texture baking. -	 -	// FIXME DRANO - skipping in the case of !mFirstAppearanceMessageReceived prevents us from trying to -	// load textures before we know where they come from (ie, from baking service or not); -	// unknown impact on performance. -	if (mInitialBakesLoaded == false && retval == 0x0 && mFirstAppearanceMessageReceived) -	{ -		// call update textures to force the images to be created -		updateMeshTextures(); - -		// unpack the texture UUIDs to the texture slots -		retval = unpackTEMessage(mesgsys, _PREHASH_ObjectData, (S32) block_num); - -		// need to trigger a few operations to get the avatar to use the new bakes -		for (U32 i = 0; i < mBakedTextureDatas.size(); i++) -		{ -			const LLAvatarAppearanceDefines::ETextureIndex te = mBakedTextureDatas[i].mTextureIndex; -			LLUUID texture_id = getTEImage(te)->getID(); -			setNewBakedTexture(te, texture_id); -			mInitialBakeIDs[i] = texture_id; -		} - -		onFirstTEMessageReceived(); - -		mInitialBakesLoaded = true; -	} -#endif - -	return retval; -} - -  void LLVOAvatarSelf::setLocalTextureTE(U8 te, LLViewerTexture* image, U32 index)  {  	if (te >= TEX_NUM_INDICES) @@ -883,13 +815,9 @@ void LLVOAvatarSelf::removeMissingBakedTextures()  		{  			LLViewerTexLayerSet *layerset = getTexLayerSet(i);  			layerset->setUpdatesEnabled(TRUE); -			invalidateComposite(layerset, FALSE); +			invalidateComposite(layerset);  		}  		updateMeshTextures(); -		if (getRegion() && !getRegion()->getCentralBakeVersion()) -		{ -			requestLayerSetUploads(); -		}  	}  } @@ -1064,7 +992,7 @@ void LLVOAvatarSelf::updateAttachmentVisibility(U32 camera_mode)  // forces an update to any baked textures relevant to type.  // will force an upload of the resulting bake if the second parameter is TRUE  //----------------------------------------------------------------------------- -void LLVOAvatarSelf::wearableUpdated( LLWearableType::EType type, BOOL upload_result ) +void LLVOAvatarSelf::wearableUpdated(LLWearableType::EType type)  {  	for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin();  		 baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end(); @@ -1086,20 +1014,13 @@ void LLVOAvatarSelf::wearableUpdated( LLWearableType::EType type, BOOL upload_re  					if (layerset)  					{  						layerset->setUpdatesEnabled(true); -						invalidateComposite(layerset, upload_result); +						invalidateComposite(layerset);  					}  					break;  				}  			}  		}  	} -	 -	// Physics type has no associated baked textures, but change of params needs to be sent to -	// other avatars. -	if (type == LLWearableType::WT_PHYSICS) -	  { -	    gAgent.sendAgentSetAppearance(); -	  }  }  //----------------------------------------------------------------------------- @@ -1511,15 +1432,6 @@ BOOL LLVOAvatarSelf::isAllLocalTextureDataFinal() const  	return TRUE;  } -BOOL LLVOAvatarSelf::isBakedTextureFinal(const LLAvatarAppearanceDefines::EBakedTextureIndex index) const -{ -	const LLViewerTexLayerSet *layerset = getLayerSet(index); -	if (!layerset) return FALSE; -	const LLViewerTexLayerSetBuffer *layerset_buffer = layerset->getViewerComposite(); -	if (!layerset_buffer) return FALSE; -	return !layerset_buffer->uploadNeeded(); -} -  BOOL LLVOAvatarSelf::isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const  {  	LLUUID id; @@ -1577,49 +1489,12 @@ BOOL LLVOAvatarSelf::isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex t  	return isTextureVisible(type,index);  } - -//----------------------------------------------------------------------------- -// requestLayerSetUploads() -//----------------------------------------------------------------------------- -void LLVOAvatarSelf::requestLayerSetUploads() -{ -	for (U32 i = 0; i < mBakedTextureDatas.size(); i++) -	{ -		requestLayerSetUpload((EBakedTextureIndex)i); -	} -} - -void LLVOAvatarSelf::requestLayerSetUpload(LLAvatarAppearanceDefines::EBakedTextureIndex i) -{ -	ETextureIndex tex_index = mBakedTextureDatas[i].mTextureIndex; -	const BOOL layer_baked = isTextureDefined(tex_index, gAgentWearables.getWearableCount(tex_index)); -	LLViewerTexLayerSet *layerset = getLayerSet(i); -	if (!layer_baked && layerset) -	{ -		layerset->requestUpload(); -	} -} -  bool LLVOAvatarSelf::areTexturesCurrent() const  { -	return !hasPendingBakedUploads() && gAgentWearables.areWearablesLoaded(); -} - -// virtual -bool LLVOAvatarSelf::hasPendingBakedUploads() const -{ -	for (U32 i = 0; i < mBakedTextureDatas.size(); i++) -	{ -		LLViewerTexLayerSet* layerset = getTexLayerSet(i); -		if (layerset && layerset->getViewerComposite() && layerset->getViewerComposite()->uploadPending()) -		{ -			return true; -		} -	} -	return false; +	return gAgentWearables.areWearablesLoaded();  } -void LLVOAvatarSelf::invalidateComposite( LLTexLayerSet* layerset, BOOL upload_result ) +void LLVOAvatarSelf::invalidateComposite( LLTexLayerSet* layerset)  {  	LLViewerTexLayerSet *layer_set = dynamic_cast<LLViewerTexLayerSet*>(layerset);  	if( !layer_set || !layer_set->getUpdatesEnabled() ) @@ -1630,16 +1505,6 @@ void LLVOAvatarSelf::invalidateComposite( LLTexLayerSet* layerset, BOOL upload_r  	layer_set->requestUpdate();  	layer_set->invalidateMorphMasks(); - -	if( upload_result  && (getRegion() && !getRegion()->getCentralBakeVersion())) -	{ -		llassert(isSelf()); - -		ETextureIndex baked_te = getBakedTE( layer_set ); -		setTEImage( baked_te, LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT_AVATAR) ); -		layer_set->requestUpload(); -		updateMeshTextures(); -	}  }  void LLVOAvatarSelf::invalidateAll() @@ -1647,7 +1512,7 @@ void LLVOAvatarSelf::invalidateAll()  	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)  	{  		LLViewerTexLayerSet *layerset = getTexLayerSet(i); -		invalidateComposite(layerset, TRUE); +		invalidateComposite(layerset);  	}  	//mDebugSelfLoadTimer.reset();  } @@ -2242,25 +2107,6 @@ const std::string LLVOAvatarSelf::debugDumpAllLocalTextureDataInfo() const  	return text;  } - -#if 0 -// Dump avatar metrics data. -LLSD LLVOAvatarSelf::metricsData() -{ -	// runway - add region info -	LLSD result; -	result["rez_status"] = LLVOAvatar::rezStatusToString(getRezzedStatus()); -	result["timers"]["debug_existence"] = mDebugExistenceTimer.getElapsedTimeF32(); -	result["timers"]["ruth_debug"] = mRuthDebugTimer.getElapsedTimeF32(); -	result["timers"]["ruth"] = mRuthTimer.getElapsedTimeF32(); -	result["timers"]["invisible"] = mInvisibleTimer.getElapsedTimeF32(); -	result["timers"]["fully_loaded"] = mFullyLoadedTimer.getElapsedTimeF32(); -	result["startup"] = LLStartUp::getPhases().dumpPhases(); -	 -	return result; -} -#endif -  class ViewerAppearanceChangeMetricsResponder: public LLCurl::Responder  {  	LOG_CLASS(ViewerAppearanceChangeMetricsResponder); @@ -2378,7 +2224,7 @@ void LLVOAvatarSelf::sendViewerAppearanceChangeMetrics()  	static volatile bool reporting_started(false);  	static volatile S32 report_sequence(0); -	LLSD msg; // = metricsData(); +	LLSD msg;  	msg["message"] = "ViewerAppearanceChangeMetrics";  	msg["session_id"] = gAgentSessionID;  	msg["agent_id"] = gAgentID; @@ -2438,66 +2284,6 @@ void LLVOAvatarSelf::sendViewerAppearanceChangeMetrics()  	}  } -class CheckAgentAppearanceServiceResponder: public LLHTTPClient::Responder -{ -	LOG_CLASS(CheckAgentAppearanceServiceResponder); -public: -	CheckAgentAppearanceServiceResponder() -	{ -	} -	 -	virtual ~CheckAgentAppearanceServiceResponder() -	{ -	} - -private: -	/* virtual */ void httpSuccess() -	{ -		LL_DEBUGS("Avatar") << "OK" << llendl; -	} - -	// Error -	/*virtual*/ void httpFailure() -	{ -		if (isAgentAvatarValid()) -		{ -			LL_DEBUGS("Avatar") << "failed, will rebake " -					<< dumpResponse() << LL_ENDL; -			forceAppearanceUpdate(); -		} -	} - -public: -	static void forceAppearanceUpdate() -	{ -		// Trying to rebake immediately after crossing region boundary -		// seems to be failure prone; adding a delay factor. Yes, this -		// fix is ad-hoc and not guaranteed to work in all cases. -		doAfterInterval(boost::bind(&LLVOAvatarSelf::forceBakeAllTextures, -									gAgentAvatarp.get(), true), 5.0); -	} -}; - -void LLVOAvatarSelf::checkForUnsupportedServerBakeAppearance() -{ -	// Need to check only if we have a server baked appearance and are -	// in a non-baking region. -	if (!gAgentAvatarp->isUsingServerBakes()) -		return; -	if (!gAgent.getRegion() || gAgent.getRegion()->getCentralBakeVersion()!=0) -		return; - -	// if baked image service is unknown, need to refresh. -	if (LLAppearanceMgr::instance().getAppearanceServiceURL().empty()) -	{ -		CheckAgentAppearanceServiceResponder::forceAppearanceUpdate(); -	} -	// query baked image service to check status. -	std::string image_url = gAgentAvatarp->getImageURL(TEX_HEAD_BAKED, -													   getTE(TEX_HEAD_BAKED)->getID()); -	LLHTTPClient::head(image_url, new CheckAgentAppearanceServiceResponder); -} -  const LLUUID& LLVOAvatarSelf::grabBakedTexture(EBakedTextureIndex baked_index) const  {  	if (canGrabBakedTexture(baked_index)) @@ -2654,82 +2440,6 @@ ETextureIndex LLVOAvatarSelf::getBakedTE( const LLViewerTexLayerSet* layerset )  	return TEX_HEAD_BAKED;  } - -void LLVOAvatarSelf::setNewBakedTexture(LLAvatarAppearanceDefines::EBakedTextureIndex i, const LLUUID &uuid) -{ -	ETextureIndex index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(i); -	setNewBakedTexture(index, uuid); -} - - -//----------------------------------------------------------------------------- -// setNewBakedTexture() -// A new baked texture has been successfully uploaded and we can start using it now. -//----------------------------------------------------------------------------- -void LLVOAvatarSelf::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid ) -{ -	// Baked textures live on other sims. -	LLHost target_host = getObjectHost();	 -	setTEImage( te, LLViewerTextureManager::getFetchedTextureFromHost( uuid, FTT_HOST_BAKE, target_host ) ); -	updateMeshTextures(); -	dirtyMesh(); - -	LLVOAvatar::cullAvatarsByPixelArea(); - -	/* switch(te) -		case TEX_HEAD_BAKED: -			llinfos << "New baked texture: HEAD" << llendl; */ -	const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(te); -	if (texture_dict->mIsBakedTexture) -	{ -		debugBakedTextureUpload(texture_dict->mBakedTextureIndex, TRUE); // FALSE for start of upload, TRUE for finish. -		llinfos << "New baked texture: " << texture_dict->mName << " UUID: " << uuid <<llendl; -	} -	else -	{ -		llwarns << "New baked texture: unknown te " << te << llendl; -	} -	 -	//	dumpAvatarTEs( "setNewBakedTexture() send" ); -	// RN: throttle uploads -	if (!hasPendingBakedUploads()) -	{ -		gAgent.sendAgentSetAppearance(); - -		if (gSavedSettings.getBOOL("DebugAvatarRezTime")) -		{ -			LLSD args; -			args["EXISTENCE"] = llformat("%d",(U32)mDebugExistenceTimer.getElapsedTimeF32()); -			args["TIME"] = llformat("%d",(U32)mDebugSelfLoadTimer.getElapsedTimeF32()); -			if (isAllLocalTextureDataFinal()) -			{ -				LLNotificationsUtil::add("AvatarRezSelfBakedDoneNotification",args); -				LL_DEBUGS("Avatar") << "REZTIME: [ " << (U32)mDebugExistenceTimer.getElapsedTimeF32() -						<< "sec ]" -						<< avString()  -						<< "RuthTimer " << (U32)mRuthDebugTimer.getElapsedTimeF32() -						<< " SelfLoadTimer " << (U32)mDebugSelfLoadTimer.getElapsedTimeF32() -						<< " Notification " << "AvatarRezSelfBakedDoneNotification" -						<< llendl; -			} -			else -			{ -				args["STATUS"] = debugDumpAllLocalTextureDataInfo(); -				LLNotificationsUtil::add("AvatarRezSelfBakedUpdateNotification",args); -				LL_DEBUGS("Avatar") << "REZTIME: [ " << (U32)mDebugExistenceTimer.getElapsedTimeF32() -						<< "sec ]" -						<< avString()  -						<< "RuthTimer " << (U32)mRuthDebugTimer.getElapsedTimeF32() -						<< " SelfLoadTimer " << (U32)mDebugSelfLoadTimer.getElapsedTimeF32() -						<< " Notification " << "AvatarRezSelfBakedUpdateNotification" -						<< llendl; -			} -		} - -		outputRezDiagnostics(); -	} -} -  // FIXME: This is not called consistently. Something may be broken.  void LLVOAvatarSelf::outputRezDiagnostics() const  { @@ -2805,89 +2515,7 @@ void LLVOAvatarSelf::reportAvatarRezTime() const  	// TODO: report mDebugSelfLoadTimer.getElapsedTimeF32() somehow.  } -//----------------------------------------------------------------------------- -// setCachedBakedTexture() -// A baked texture id was received from a cache query, make it active -//----------------------------------------------------------------------------- -void LLVOAvatarSelf::setCachedBakedTexture( ETextureIndex te, const LLUUID& uuid ) -{ -	setTETexture( te, uuid ); - -	/* switch(te) -		case TEX_HEAD_BAKED: -			if( mHeadLayerSet ) -				mHeadLayerSet->cancelUpload(); */ -	for (U32 i = 0; i < mBakedTextureDatas.size(); i++) -	{ -		LLViewerTexLayerSet *layerset = getTexLayerSet(i); -		if ( mBakedTextureDatas[i].mTextureIndex == te && layerset) -		{ -			if (mInitialBakeIDs[i] != LLUUID::null) -			{ -				if (mInitialBakeIDs[i] == uuid) -				{ -					llinfos << "baked texture correctly loaded at login! " << i << llendl; -				} -				else -				{ -					llwarns << "baked texture does not match id loaded at login!" << i << llendl; -				} -				mInitialBakeIDs[i] = LLUUID::null; -			} -			layerset->cancelUpload(); -		} -	} -} - -// static -void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**) -{ -	LLUUID texture_id; -	msg->getUUID("TextureData", "TextureID", texture_id); -	if (!isAgentAvatarValid()) return; - -	// If this is a texture corresponding to one of our baked entries,  -	// just rebake that layer set. -	BOOL found = FALSE; - -	/* ETextureIndex baked_texture_indices[BAKED_NUM_INDICES] = -			TEX_HEAD_BAKED, -			TEX_UPPER_BAKED, */ -	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin(); -		 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end(); -		 ++iter) -	{ -		const ETextureIndex index = iter->first; -		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second; -		if (texture_dict->mIsBakedTexture) -		{ -			if (texture_id == gAgentAvatarp->getTEImage(index)->getID()) -			{ -				LLViewerTexLayerSet* layer_set = gAgentAvatarp->getLayerSet(index); -				if (layer_set) -				{ -					llinfos << "TAT: rebake - matched entry " << (S32)index << llendl; -					gAgentAvatarp->invalidateComposite(layer_set, TRUE); -					found = TRUE; -					LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_REBAKES); -				} -			} -		} -	} - -	// If texture not found, rebake all entries. -	if (!found) -	{ -		gAgentAvatarp->forceBakeAllTextures(); -	} -	else -	{ -		// Not sure if this is necessary, but forceBakeAllTextures() does it. -		gAgentAvatarp->updateMeshTextures(); -	} -} - - +// SUNSHINE CLEANUP - not clear we need any of this, may be sufficient to request server appearance in llviewermenu.cpp:handle_rebake_textures()  void LLVOAvatarSelf::forceBakeAllTextures(bool slam_for_debug)  {  	llinfos << "TAT: forced full rebake. " << llendl; @@ -2901,10 +2529,9 @@ void LLVOAvatarSelf::forceBakeAllTextures(bool slam_for_debug)  			if (slam_for_debug)  			{  				layer_set->setUpdatesEnabled(TRUE); -				layer_set->cancelUpload();  			} -			invalidateComposite(layer_set, TRUE); +			invalidateComposite(layer_set);  			LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_REBAKES);  		}  		else @@ -3004,12 +2631,6 @@ void LLVOAvatarSelf::onCustomizeEnd(bool disable_camera_switch)  	if (isAgentAvatarValid())  	{  		gAgentAvatarp->mIsEditingAppearance = false; -		if (gAgentAvatarp->getRegion() && !gAgentAvatarp->getRegion()->getCentralBakeVersion()) -		{ -			// FIXME DRANO - move to sendAgentSetAppearance, make conditional on upload complete. -			gAgentAvatarp->mUseLocalAppearance = false; -		} -  		gAgentAvatarp->invalidateAll();  		if (gSavedSettings.getBOOL("AppearanceCameraMovement") && !disable_camera_switch) diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index 3cbf2b5cf5..0eb80d1fad 100755 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -97,21 +97,15 @@ public:  				void		resetJointPositions( void ); -	/*virtual*/ BOOL setVisualParamWeight(const LLVisualParam *which_param, F32 weight, BOOL upload_bake = FALSE ); -	/*virtual*/ BOOL setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake = FALSE ); -	/*virtual*/ BOOL setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake = FALSE ); +	/*virtual*/ BOOL setVisualParamWeight(const LLVisualParam *which_param, F32 weight); +	/*virtual*/ BOOL setVisualParamWeight(const char* param_name, F32 weight); +	/*virtual*/ BOOL setVisualParamWeight(S32 index, F32 weight);  	/*virtual*/ void updateVisualParams();  	/*virtual*/ void idleUpdateAppearanceAnimation(); -	/*virtual*/ U32  processUpdateMessage(LLMessageSystem *mesgsys, -													 void **user_data, -													 U32 block_num, -													 const EObjectUpdateType update_type, -													 LLDataPacker *dp); -  private:  	// helper function. Passed in param is assumed to be in avatar's parameter list. -	BOOL setParamWeight(const LLViewerVisualParam *param, F32 weight, BOOL upload_bake = FALSE ); +	BOOL setParamWeight(const LLViewerVisualParam *param, F32 weight); @@ -196,12 +190,10 @@ public:  	// Loading status  	//--------------------------------------------------------------------  public: -	/*virtual*/ bool	hasPendingBakedUploads() const;  	S32					getLocalDiscardLevel(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const;  	bool				areTexturesCurrent() const;  	BOOL				isLocalTextureDataAvailable(const LLViewerTexLayerSet* layerset) const;  	BOOL				isLocalTextureDataFinal(const LLViewerTexLayerSet* layerset) const; -	BOOL				isBakedTextureFinal(const LLAvatarAppearanceDefines::EBakedTextureIndex index) const;  	// If you want to check all textures of a given type, pass gAgentWearables.getWearableCount() for index  	/*virtual*/ BOOL    isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const;  	/*virtual*/ BOOL	isTextureVisible(LLAvatarAppearanceDefines::ETextureIndex type, U32 index = 0) const; @@ -236,11 +228,8 @@ private:  	//--------------------------------------------------------------------  public:  	LLAvatarAppearanceDefines::ETextureIndex getBakedTE(const LLViewerTexLayerSet* layerset ) const; -	void				setNewBakedTexture(LLAvatarAppearanceDefines::EBakedTextureIndex i, const LLUUID &uuid); -	void				setNewBakedTexture(LLAvatarAppearanceDefines::ETextureIndex i, const LLUUID& uuid); -	void				setCachedBakedTexture(LLAvatarAppearanceDefines::ETextureIndex i, const LLUUID& uuid); +	// SUNSHINE CLEANUP - dead? or update to just call request appearance update?  	void				forceBakeAllTextures(bool slam_for_debug = false); -	static void			processRebakeAvatarTextures(LLMessageSystem* msg, void**);  protected:  	/*virtual*/ void	removeMissingBakedTextures(); @@ -248,8 +237,6 @@ protected:  	// Layers  	//--------------------------------------------------------------------  public: -	void 				requestLayerSetUploads(); -	void				requestLayerSetUpload(LLAvatarAppearanceDefines::EBakedTextureIndex i);  	void				requestLayerSetUpdate(LLAvatarAppearanceDefines::ETextureIndex i);  	LLViewerTexLayerSet* getLayerSet(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index) const;  	LLViewerTexLayerSet* getLayerSet(LLAvatarAppearanceDefines::ETextureIndex index) const; @@ -259,7 +246,7 @@ public:  	// Composites  	//--------------------------------------------------------------------  public: -	/* virtual */ void	invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result); +	/* virtual */ void	invalidateComposite(LLTexLayerSet* layerset);  	/* virtual */ void	invalidateAll();  	/* virtual */ void	setCompositeUpdatesEnabled(bool b); // only works for self  	/* virtual */ void  setCompositeUpdatesEnabled(U32 index, bool b); @@ -302,7 +289,7 @@ protected:   **/  public: -	void				wearableUpdated(LLWearableType::EType type, BOOL upload_result); +	void				wearableUpdated(LLWearableType::EType type);  protected:  	U32 getNumWearables(LLAvatarAppearanceDefines::ETextureIndex i) const; @@ -405,7 +392,6 @@ public:  	const std::string		debugDumpLocalTextureDataInfo(const LLViewerTexLayerSet* layerset) const; // Lists out state of this particular baked texture layer  	const std::string		debugDumpAllLocalTextureDataInfo() const; // Lists out which baked textures are at highest LOD  	void					sendViewerAppearanceChangeMetrics(); // send data associated with completing a change. -	void 					checkForUnsupportedServerBakeAppearance();  private:  	LLFrameTimer    		mDebugSelfLoadTimer;  	F32						mDebugTimeWearablesLoaded; | 
