diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2020-11-03 22:12:39 +0200 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2020-11-03 22:12:39 +0200 | 
| commit | 5e7a0a963e3549ee61339111b7dfce6b6420d0bc (patch) | |
| tree | 2ca3b58a403d678f03fe5a6fea6b2d22db7a0225 | |
| parent | af3d4fdf4ef8b3b5aa04124daac24a226b8bf02b (diff) | |
SL-14190 moved sAvatarDictionary
| -rw-r--r-- | indra/llappearance/llavatarappearance.cpp | 30 | ||||
| -rw-r--r-- | indra/llappearance/llavatarappearance.h | 4 | ||||
| -rw-r--r-- | indra/llappearance/llavatarappearancedefines.cpp | 4 | ||||
| -rw-r--r-- | indra/llappearance/llavatarappearancedefines.h | 11 | ||||
| -rw-r--r-- | indra/llappearance/lltexlayer.cpp | 6 | ||||
| -rw-r--r-- | indra/llappearance/llwearable.cpp | 4 | ||||
| -rw-r--r-- | indra/llappearance/llwearabledata.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llfloateravatartextures.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/lltextureview.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llviewermenu.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewerwearable.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llvoavatar.cpp | 60 | ||||
| -rw-r--r-- | indra/newview/llvoavatar.h | 3 | 
13 files changed, 78 insertions, 74 deletions
| diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index c4c3345dec..4d36759167 100644 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp @@ -175,6 +175,7 @@ LLXmlTree LLAvatarAppearance::sXMLTree;  LLXmlTree LLAvatarAppearance::sSkeletonXMLTree;  LLAvatarSkeletonInfo* LLAvatarAppearance::sAvatarSkeletonInfo = NULL;  LLAvatarAppearance::LLAvatarXmlInfo* LLAvatarAppearance::sAvatarXmlInfo = NULL; +LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary* LLAvatarAppearance::sAvatarDictionary = NULL;  LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) : @@ -202,7 +203,7 @@ LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) :  		mBakedTextureDatas[i].mIsLoaded = false;  		mBakedTextureDatas[i].mIsUsed = false;  		mBakedTextureDatas[i].mMaskTexName = 0; -		mBakedTextureDatas[i].mTextureIndex = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->bakedToLocalTextureIndex((LLAvatarAppearanceDefines::EBakedTextureIndex)i); +		mBakedTextureDatas[i].mTextureIndex = sAvatarDictionary->bakedToLocalTextureIndex((LLAvatarAppearanceDefines::EBakedTextureIndex)i);  	}  } @@ -215,8 +216,8 @@ void LLAvatarAppearance::initInstance()  	mRoot = createAvatarJoint();  	mRoot->setName( "mRoot" ); -	for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().begin(); -		 iter != LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().end(); +	for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator iter = sAvatarDictionary->getMeshEntries().begin(); +		 iter != sAvatarDictionary->getMeshEntries().end();  		 ++iter)  	{  		const EMeshIndex mesh_index = iter->first; @@ -261,8 +262,8 @@ void LLAvatarAppearance::initInstance()  	//-------------------------------------------------------------------------  	// associate baked textures with meshes  	//------------------------------------------------------------------------- -	for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().begin(); -		 iter != LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().end(); +	for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator iter = sAvatarDictionary->getMeshEntries().begin(); +		 iter != sAvatarDictionary->getMeshEntries().end();  		 ++iter)  	{  		const EMeshIndex mesh_index = iter->first; @@ -336,6 +337,12 @@ void LLAvatarAppearance::initClass()  //static  void LLAvatarAppearance::initClass(const std::string& avatar_file_name_arg, const std::string& skeleton_file_name_arg)  { +    // init dictionary (don't repeat on second login attempt) +    if (!sAvatarDictionary) +    { +        sAvatarDictionary = new LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary(); +    } +  	std::string avatar_file_name;      if (!avatar_file_name_arg.empty()) @@ -453,7 +460,8 @@ void LLAvatarAppearance::initClass(const std::string& avatar_file_name_arg, cons  void LLAvatarAppearance::cleanupClass()  {  	delete_and_clear(sAvatarXmlInfo); -	// *TODO: What about sAvatarSkeletonInfo ??? +    delete_and_clear(sAvatarDictionary); +    delete_and_clear(sAvatarSkeletonInfo);  	sSkeletonXMLTree.cleanup();  	sXMLTree.cleanup();  } @@ -999,7 +1007,7 @@ BOOL LLAvatarAppearance::loadAvatar()  	{  		LLAvatarXmlInfo::LLAvatarMorphInfo *info = *iter; -		EBakedTextureIndex baked = LLAvatarAppearanceDictionary::getInstance()->findBakedByRegionName(info->mRegion); +		EBakedTextureIndex baked = sAvatarDictionary->findBakedByRegionName(info->mRegion);  		if (baked != BAKED_NUM_INDICES)  		{  			LLVisualParam* morph_param; @@ -1135,8 +1143,8 @@ BOOL LLAvatarAppearance::loadMeshNodes()  			switch(lod)  			  case 0:  				mesh = &mHairMesh0; */ -		for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator mesh_iter = LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().begin(); -			 mesh_iter != LLAvatarAppearanceDictionary::getInstance()->getMeshEntries().end(); +		for (LLAvatarAppearanceDictionary::MeshEntries::const_iterator mesh_iter = sAvatarDictionary->getMeshEntries().begin(); +			 mesh_iter != sAvatarDictionary->getMeshEntries().end();  			 ++mesh_iter)  		{  			const EMeshIndex mesh_index = mesh_iter->first; @@ -1264,8 +1272,8 @@ BOOL LLAvatarAppearance::loadLayersets()  			// scan baked textures and associate the layerset with the appropriate one  			EBakedTextureIndex baked_index = BAKED_NUM_INDICES; -			for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin(); -				 baked_iter != LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end(); +			for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = sAvatarDictionary->getBakedTextures().begin(); +				 baked_iter != sAvatarDictionary->getBakedTextures().end();  				 ++baked_iter)  			{  				const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = baked_iter->second; diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h index 6a4dbf3726..d16aeccf0d 100644 --- a/indra/llappearance/llavatarappearance.h +++ b/indra/llappearance/llavatarappearance.h @@ -255,6 +255,7 @@ public:  public:  	virtual void	updateMeshTextures() = 0;  	virtual void	dirtyMesh() = 0; // Dirty the avatar mesh +	static const LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary *getDictionary() { return sAvatarDictionary; }  protected:  	virtual void	dirtyMesh(S32 priority) = 0; // Dirty the avatar mesh, with priority @@ -263,6 +264,9 @@ protected:  	polymesh_map_t 									mPolyMeshes;  	avatar_joint_list_t								mMeshLOD; +    // mesh entries and backed textures +    static LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary* sAvatarDictionary; +  /**                    Meshes   **                                                                            **   *******************************************************************************/ diff --git a/indra/llappearance/llavatarappearancedefines.cpp b/indra/llappearance/llavatarappearancedefines.cpp index 0039f98af8..9398ce3822 100644 --- a/indra/llappearance/llavatarappearancedefines.cpp +++ b/indra/llappearance/llavatarappearancedefines.cpp @@ -258,7 +258,7 @@ LLAvatarAppearanceDictionary::BakedEntry::BakedEntry(ETextureIndex tex_index,  	}  } -ETextureIndex LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(EBakedTextureIndex index) +ETextureIndex LLAvatarAppearanceDictionary::bakedToLocalTextureIndex(EBakedTextureIndex index) const  {  	return getBakedTexture(index)->mTextureIndex;  } @@ -301,7 +301,7 @@ EBakedTextureIndex LLAvatarAppearanceDictionary::findBakedByImageName(std::strin  	return BAKED_NUM_INDICES;  } -LLWearableType::EType LLAvatarAppearanceDictionary::getTEWearableType(ETextureIndex index ) +LLWearableType::EType LLAvatarAppearanceDictionary::getTEWearableType(ETextureIndex index ) const  {  	return getTexture(index)->mWearableType;  } diff --git a/indra/llappearance/llavatarappearancedefines.h b/indra/llappearance/llavatarappearancedefines.h index 18d80b3e2e..8968187531 100644 --- a/indra/llappearance/llavatarappearancedefines.h +++ b/indra/llappearance/llavatarappearancedefines.h @@ -143,13 +143,14 @@ typedef std::vector<LLWearableType::EType> wearables_vec_t;  //   // This holds const data - it is initialized once and the contents never change after that.  //------------------------------------------------------------------------ -class LLAvatarAppearanceDictionary : public LLSingleton<LLAvatarAppearanceDictionary> +class LLAvatarAppearanceDictionary  {  	//--------------------------------------------------------------------  	// Constructors and Destructors  	//-------------------------------------------------------------------- -	LLSINGLETON(LLAvatarAppearanceDictionary); -	virtual ~LLAvatarAppearanceDictionary(); +public: +	LLAvatarAppearanceDictionary(); +	~LLAvatarAppearanceDictionary();  private:  	void createAssociations(); @@ -235,14 +236,14 @@ public:  	//--------------------------------------------------------------------  public:  	// Convert from baked texture to associated texture; e.g. BAKED_HEAD -> TEX_HEAD_BAKED -	ETextureIndex 		bakedToLocalTextureIndex(EBakedTextureIndex t); +	ETextureIndex 		bakedToLocalTextureIndex(EBakedTextureIndex t) const;  	// find a baked texture index based on its name  	EBakedTextureIndex 	findBakedByRegionName(std::string name);  	EBakedTextureIndex 	findBakedByImageName(std::string name);  	// Given a texture entry, determine which wearable type owns it. -	LLWearableType::EType 		getTEWearableType(ETextureIndex index); +	LLWearableType::EType 		getTEWearableType(ETextureIndex index) const;  	static BOOL							isBakedImageId(const LLUUID& id);  	static EBakedTextureIndex			assetIdToBakedTextureIndex(const LLUUID& id); diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp index 248214e7bc..e5039141de 100644 --- a/indra/llappearance/lltexlayer.cpp +++ b/indra/llappearance/lltexlayer.cpp @@ -728,8 +728,8 @@ BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node)  			/* if ("upper_shirt" == local_texture_name)  				mLocalTexture = TEX_UPPER_SHIRT; */  			mLocalTexture = TEX_NUM_INDICES; -			for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin(); -				 iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end(); +			for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearance::getDictionary()->getTextures().begin(); +				 iter != LLAvatarAppearance::getDictionary()->getTextures().end();  				 iter++)  			{  				const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second; @@ -979,7 +979,7 @@ LLWearableType::EType LLTexLayerInterface::getWearableType() const  		return type;  	} -	return LLAvatarAppearanceDictionary::getInstance()->getTEWearableType(te); +	return LLAvatarAppearance::getDictionary()->getTEWearableType(te);  }  LLTexLayerInterface::ERenderPass LLTexLayerInterface::getRenderPass() const diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp index d12d166dca..28a36e6e41 100644 --- a/indra/llappearance/llwearable.cpp +++ b/indra/llappearance/llwearable.cpp @@ -183,7 +183,7 @@ void LLWearable::createVisualParams(LLAvatarAppearance *avatarp)  void LLWearable::createLayers(S32 te, LLAvatarAppearance *avatarp)  {  	LLTexLayerSet *layer_set = NULL; -	const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)te); +	const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearance::getDictionary()->getTexture((ETextureIndex)te);  	if (texture_dict && texture_dict->mIsUsedByBakedTexture)  	{  		const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; @@ -606,7 +606,7 @@ void LLWearable::syncImages(te_map_t &src, te_map_t &dst)  	// Deep copy of src (copies only those tes that are current, filling in defaults where needed)  	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )  	{ -		if (LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex) te) == mType) +		if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex) te) == mType)  		{  			te_map_t::const_iterator iter = src.find(te);  			LLUUID image_id; diff --git a/indra/llappearance/llwearabledata.cpp b/indra/llappearance/llwearabledata.cpp index bead125e2d..66cc4f3766 100644 --- a/indra/llappearance/llwearabledata.cpp +++ b/indra/llappearance/llwearabledata.cpp @@ -339,7 +339,7 @@ U32 LLWearableData::getWearableCount(const LLWearableType::EType type) const  U32 LLWearableData::getWearableCount(const U32 tex_index) const  { -	const LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((LLAvatarAppearanceDefines::ETextureIndex)tex_index); +	const LLWearableType::EType wearable_type = LLAvatarAppearance::getDictionary()->getTEWearableType((LLAvatarAppearanceDefines::ETextureIndex)tex_index);  	return getWearableCount(wearable_type);  } @@ -349,7 +349,7 @@ LLUUID LLWearableData::computeBakedTextureHash(LLAvatarAppearanceDefines::EBaked  	LLUUID hash_id;  	bool hash_computed = false;  	LLMD5 hash; -	const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_index); +	const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearance::getDictionary()->getBakedTexture(baked_index);  	for (U8 i=0; i < baked_dict->mWearables.size(); i++)  	{ diff --git a/indra/newview/llfloateravatartextures.cpp b/indra/newview/llfloateravatartextures.cpp index 8e654a53c4..ebb73fc1f7 100644 --- a/indra/newview/llfloateravatartextures.cpp +++ b/indra/newview/llfloateravatartextures.cpp @@ -55,7 +55,7 @@ BOOL LLFloaterAvatarTextures::postBuild()  {  	for (U32 i=0; i < TEX_NUM_INDICES; i++)  	{ -		const std::string tex_name = LLAvatarAppearanceDictionary::getInstance()->getTexture(ETextureIndex(i))->mName; +		const std::string tex_name = LLAvatarAppearance::getDictionary()->getTexture(ETextureIndex(i))->mName;  		mTextures[i] = getChild<LLTextureCtrl>(tex_name);  	}  	mTitle = getTitle(); @@ -77,7 +77,7 @@ static void update_texture_ctrl(LLVOAvatar* avatarp,  								 ETextureIndex te)  {  	LLUUID id = IMG_DEFAULT_AVATAR; -	const LLAvatarAppearanceDictionary::TextureEntry* tex_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture(te); +	const LLAvatarAppearanceDictionary::TextureEntry* tex_entry = LLAvatarAppearance::getDictionary()->getTexture(te);  	if (tex_entry && tex_entry->mIsLocalTexture)  	{  		if (avatarp->isSelf()) @@ -165,14 +165,14 @@ void LLFloaterAvatarTextures::onClickDump(void* data)  			const LLTextureEntry* te = avatarp->getTE(i);  			if (!te) continue; -			const LLAvatarAppearanceDictionary::TextureEntry* tex_entry = LLAvatarAppearanceDictionary::getInstance()->getTexture((ETextureIndex)(i)); +			const LLAvatarAppearanceDictionary::TextureEntry* tex_entry = LLAvatarAppearance::getDictionary()->getTexture((ETextureIndex)(i));  			if (!tex_entry)  				continue;  			if (LLVOAvatar::isIndexLocalTexture((ETextureIndex)i))  			{  				LLUUID id = IMG_DEFAULT_AVATAR; -				LLWearableType::EType wearable_type = LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex)i); +				LLWearableType::EType wearable_type = LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex)i);  				if (avatarp->isSelf())  				{  					LLViewerWearable *wearable = gAgentWearables.getViewerWearable(wearable_type, 0); diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index 1c4187d30f..7a0f69fed5 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -423,8 +423,8 @@ void LLAvatarTexBar::draw()  	LLColor4 color;  	U32 line_num = 1; -	for (LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().begin(); -		 baked_iter != LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::getInstance()->getBakedTextures().end(); +	for (LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = LLAvatarAppearance::getDictionary()->getBakedTextures().begin(); +		 baked_iter != LLAvatarAppearance::getDictionary()->getBakedTextures().end();  		 ++baked_iter)  	{  		const LLAvatarAppearanceDefines::EBakedTextureIndex baked_index = baked_iter->first; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index ee5e0b07f3..063f818e6e 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7892,7 +7892,7 @@ void handle_grab_baked_texture(void* data)  	if(folder_id.notNull())  	{  		std::string name; -		name = "Baked " + LLAvatarAppearanceDictionary::getInstance()->getBakedTexture(baked_tex_index)->mNameCapitalized + " Texture"; +		name = "Baked " + LLAvatarAppearance::getDictionary()->getBakedTexture(baked_tex_index)->mNameCapitalized + " Texture";  		LLUUID item_id;  		item_id.generate(); diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp index c2a5a53674..232b7c384d 100644 --- a/indra/newview/llviewerwearable.cpp +++ b/indra/newview/llviewerwearable.cpp @@ -178,7 +178,7 @@ BOOL LLViewerWearable::isOldVersion() const  	S32 te_count = 0;  	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )  	{ -		if (LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex) te) == mType) +		if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex) te) == mType)  		{  			te_count++;  			if( !is_in_map(mTEMap, te ) ) @@ -230,7 +230,7 @@ BOOL LLViewerWearable::isDirty() const  	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )  	{ -		if (LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex) te) == mType) +		if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex) te) == mType)  		{  			te_map_t::const_iterator current_iter = mTEMap.find(te);  			if(current_iter != mTEMap.end()) @@ -276,7 +276,7 @@ void LLViewerWearable::setTexturesToDefaults()  {  	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )  	{ -		if (LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex) te) == mType) +		if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex) te) == mType)  		{  			LLUUID id = getDefaultTextureImageID((ETextureIndex) te);  			LLViewerFetchedTexture * image = LLViewerTextureManager::getFetchedTexture( id ); @@ -300,7 +300,7 @@ void LLViewerWearable::setTexturesToDefaults()  // virtual  LLUUID LLViewerWearable::getDefaultTextureImageID(ETextureIndex index) const  { -	const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index); +	const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearance::getDictionary()->getTexture(index);  	const std::string &default_image_name = texture_dict ? texture_dict->mDefaultImageName : "";  	if (default_image_name == "")  	{ @@ -331,7 +331,7 @@ void LLViewerWearable::writeToAvatar(LLAvatarAppearance *avatarp)  	// Pull texture entries  	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )  	{ -		if (LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex) te) == mType) +		if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex) te) == mType)  		{  			te_map_t::const_iterator iter = mTEMap.find(te);  			LLUUID image_id; @@ -424,7 +424,7 @@ void LLViewerWearable::copyDataFrom(const LLViewerWearable* src)  	// Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed)  	for (S32 te = 0; te < TEX_NUM_INDICES; te++)  	{ -		if (LLAvatarAppearanceDictionary::getInstance()->getTEWearableType((ETextureIndex) te) == mType) +		if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex) te) == mType)  		{  			te_map_t::const_iterator iter = src->mTEMap.find(te);  			LLUUID image_id; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 5d6f091110..b205823820 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -573,7 +573,6 @@ private:  //-----------------------------------------------------------------------------  // Static Data  //----------------------------------------------------------------------------- -LLAvatarAppearanceDictionary *LLVOAvatar::sAvatarDictionary = NULL;  S32 LLVOAvatar::sFreezeCounter = 0;  U32 LLVOAvatar::sMaxNonImpostors = 12; // overridden based on graphics setting  F32 LLVOAvatar::sRenderDistance = 256.f; @@ -1025,15 +1024,15 @@ void LLVOAvatar::dumpBakedStatus()  		{  			LL_CONT << " Unbaked ("; -			for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator iter = sAvatarDictionary->getBakedTextures().begin(); -				 iter != sAvatarDictionary->getBakedTextures().end(); +			for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator iter = LLAvatarAppearance::getDictionary()->getBakedTextures().begin(); +				 iter != LLAvatarAppearance::getDictionary()->getBakedTextures().end();  				 ++iter)  			{  				const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = iter->second;  				const ETextureIndex index = baked_dict->mTextureIndex;  				if (!inst->isTextureDefined(index))  				{ -					LL_CONT << " " << (sAvatarDictionary->getTexture(index) ? sAvatarDictionary->getTexture(index)->mName : ""); +					LL_CONT << " " << (LLAvatarAppearance::getDictionary()->getTexture(index) ? LLAvatarAppearance::getDictionary()->getTexture(index)->mName : "");  				}  			}  			LL_CONT << " ) " << inst->getUnbakedPixelAreaRank(); @@ -1120,16 +1119,11 @@ void LLVOAvatar::initClass()  	LLControlAvatar::sRegionChangedSlot = gAgent.addRegionChangedCallback(&LLControlAvatar::onRegionChanged); -    // LLAvatarAppearanceDictionary is very freqently used in avatar's rendering, -    // to the point where overhead of current LLSingleton implementation notiecably -    // affects performance, so 'buffer' the value. -    sAvatarDictionary = LLAvatarAppearanceDictionary::getInstance();  }  void LLVOAvatar::cleanupClass()  { -    sAvatarDictionary = NULL;  }  // virtual @@ -5194,7 +5188,7 @@ void LLVOAvatar::collectLocalTextureUUIDs(std::set<LLUUID>& ids) const  {  	for (U32 texture_index = 0; texture_index < getNumTEs(); texture_index++)  	{ -		LLWearableType::EType wearable_type = sAvatarDictionary->getTEWearableType((ETextureIndex)texture_index); +		LLWearableType::EType wearable_type = LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex)texture_index);  		U32 num_wearables = gAgentWearables.getWearableCount(wearable_type);  		LLViewerFetchedTexture *imagep = NULL; @@ -5203,7 +5197,7 @@ void LLVOAvatar::collectLocalTextureUUIDs(std::set<LLUUID>& ids) const  			imagep = LLViewerTextureManager::staticCastToFetchedTexture(getImage(texture_index, wearable_index), TRUE);  			if (imagep)  			{ -				const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = sAvatarDictionary->getTexture((ETextureIndex)texture_index); +				const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearance::getDictionary()->getTexture((ETextureIndex)texture_index);  				if (texture_dict && texture_dict->mIsLocalTexture)  				{  					ids.insert(imagep->getID()); @@ -5337,7 +5331,7 @@ void LLVOAvatar::updateTextures()  	mHasGrey = FALSE; // debug  	for (U32 texture_index = 0; texture_index < getNumTEs(); texture_index++)  	{ -		LLWearableType::EType wearable_type = sAvatarDictionary->getTEWearableType((ETextureIndex)texture_index); +		LLWearableType::EType wearable_type = LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex)texture_index);  		U32 num_wearables = gAgentWearables.getWearableCount(wearable_type);  		const LLTextureEntry *te = getTE(texture_index); @@ -5360,7 +5354,7 @@ void LLVOAvatar::updateTextures()  			imagep = LLViewerTextureManager::staticCastToFetchedTexture(getImage(texture_index, wearable_index), TRUE);  			if (imagep)  			{ -				const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = sAvatarDictionary->getTexture((ETextureIndex)texture_index); +				const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearance::getDictionary()->getTexture((ETextureIndex)texture_index);  				const EBakedTextureIndex baked_index = texture_dict ? texture_dict->mBakedTextureIndex : EBakedTextureIndex::BAKED_NUM_INDICES;  				if (texture_dict && texture_dict->mIsLocalTexture)  				{ @@ -5535,7 +5529,7 @@ const std::string LLVOAvatar::getImageURL(const U8 te, const LLUUID &uuid)  		return url;  	} -	const LLAvatarAppearanceDictionary::TextureEntry* texture_entry = sAvatarDictionary->getTexture((ETextureIndex)te); +	const LLAvatarAppearanceDictionary::TextureEntry* texture_entry = LLAvatarAppearance::getDictionary()->getTexture((ETextureIndex)te);  	if (texture_entry != NULL)  	{  		url = appearance_service_url + "texture/" + getID().asString() + "/" + texture_entry->mDefaultImageName + "/" + uuid.asString(); @@ -7570,8 +7564,8 @@ BOOL LLVOAvatar::isWearingWearableType(LLWearableType::EType type) const  			break; // Do nothing  	} -	for (LLAvatarAppearanceDictionary::Textures::const_iterator tex_iter = sAvatarDictionary->getTextures().begin(); -		 tex_iter != sAvatarDictionary->getTextures().end(); +	for (LLAvatarAppearanceDictionary::Textures::const_iterator tex_iter = LLAvatarAppearance::getDictionary()->getTextures().begin(); +		 tex_iter != LLAvatarAppearance::getDictionary()->getTextures().end();  		 ++tex_iter)  	{  		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = tex_iter->second; @@ -7584,7 +7578,7 @@ BOOL LLVOAvatar::isWearingWearableType(LLWearableType::EType type) const  			if (texture_dict->mIsUsedByBakedTexture)  			{  				const EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; -				return isTextureDefined(sAvatarDictionary->getBakedTexture(baked_index)->mTextureIndex); +				return isTextureDefined(LLAvatarAppearance::getDictionary()->getBakedTexture(baked_index)->mTextureIndex);  			}  			return FALSE;  		} @@ -8330,8 +8324,8 @@ void LLVOAvatar::updateMeshTextures()  	for (LLAvatarAppearanceDictionary::BakedTextures::const_iterator baked_iter = -			 sAvatarDictionary->getBakedTextures().begin(); -		 baked_iter != sAvatarDictionary->getBakedTextures().end(); +			 LLAvatarAppearance::getDictionary()->getBakedTextures().begin(); +		 baked_iter != LLAvatarAppearance::getDictionary()->getBakedTextures().end();  		 ++baked_iter)  	{  		const EBakedTextureIndex baked_index = baked_iter->first; @@ -8509,7 +8503,7 @@ void LLVOAvatar::releaseComponentTextures()  	for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)  	{ -		const LLAvatarAppearanceDictionary::BakedEntry * bakedDicEntry = sAvatarDictionary->getBakedTexture((EBakedTextureIndex)baked_index); +		const LLAvatarAppearanceDictionary::BakedEntry * bakedDicEntry = LLAvatarAppearance::getDictionary()->getBakedTexture((EBakedTextureIndex)baked_index);  		// skip if this is a skirt and av is not wearing one, or if we don't have a baked texture UUID  		if (!isTextureDefined(bakedDicEntry->mTextureIndex)  			&& ( (baked_index != BAKED_SKIRT) || isWearingWearableType(LLWearableType::WT_SKIRT) )) @@ -8528,8 +8522,8 @@ void LLVOAvatar::releaseComponentTextures()  void LLVOAvatar::dumpAvatarTEs( const std::string& context ) const  {	  	LL_DEBUGS("Avatar") << avString() << (isSelf() ? "Self: " : "Other: ") << context << LL_ENDL; -	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = sAvatarDictionary->getTextures().begin(); -		 iter != sAvatarDictionary->getTextures().end(); +	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearance::getDictionary()->getTextures().begin(); +		 iter != LLAvatarAppearance::getDictionary()->getTextures().end();  		 ++iter)  	{  		const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second; @@ -9278,8 +9272,8 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerFetchedTexture  					 self->mBakedTextureDatas[BAKED_HEAD].mTexLayerSet->applyMorphMask(aux_src->getData(), aux_src->getWidth(), aux_src->getHeight(), 1);  					 maskData->mLastDiscardLevel = discard_level; */  			BOOL found_texture_id = false; -			for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = sAvatarDictionary->getTextures().begin(); -				 iter != sAvatarDictionary->getTextures().end(); +			for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearance::getDictionary()->getTextures().begin(); +				 iter != LLAvatarAppearance::getDictionary()->getTextures().end();  				 ++iter)  			{ @@ -9410,7 +9404,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )  			}  			const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = -				sAvatarDictionary->getBakedTexture((EBakedTextureIndex)i); +				LLAvatarAppearance::getDictionary()->getBakedTexture((EBakedTextureIndex)i);  			for (texture_vec_t::const_iterator local_tex_iter = baked_dict->mLocalTextures.begin();  				 local_tex_iter != baked_dict->mLocalTextures.end();  				 ++local_tex_iter) @@ -9545,7 +9539,7 @@ void LLVOAvatar::dumpArchetypeXML(const std::string& prefix, bool group_by_weara  				for (U8 te = 0; te < TEX_NUM_INDICES; te++)  				{ -					if (sAvatarDictionary->getTEWearableType((ETextureIndex)te) == type) +					if (LLAvatarAppearance::getDictionary()->getTEWearableType((ETextureIndex)te) == type)  					{  						// MULTIPLE_WEARABLES: extend to multiple wearables?  						LLViewerTexture* te_image = getImage((ETextureIndex)te, 0); @@ -10456,7 +10450,7 @@ void LLVOAvatar::calculateUpdateRenderComplexity()  		for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)  		{  		    const LLAvatarAppearanceDictionary::BakedEntry *baked_dict -				= sAvatarDictionary->getBakedTexture((EBakedTextureIndex)baked_index); +				= LLAvatarAppearance::getDictionary()->getBakedTexture((EBakedTextureIndex)baked_index);  			ETextureIndex tex_index = baked_dict->mTextureIndex;  			if ((tex_index != TEX_SKIRT_BAKED) || (isWearingWearableType(LLWearableType::WT_SKIRT)))  			{ @@ -10521,8 +10515,8 @@ void LLVOAvatar::calculateUpdateRenderComplexity()  			}  			// print any avatar textures we didn't already know about -		    for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = sAvatarDictionary->getTextures().begin(); -			 iter != sAvatarDictionary->getTextures().end(); +		    for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearance::getDictionary()->getTextures().begin(); +			 iter != LLAvatarAppearance::getDictionary()->getTextures().end();  				 ++iter)  			{  			    const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second; @@ -10637,7 +10631,7 @@ BOOL LLVOAvatar::isIndexLocalTexture(ETextureIndex index)  {  	return (index < 0 || index >= TEX_NUM_INDICES)  		? false -		: sAvatarDictionary->getTexture(index)->mIsLocalTexture; +		: LLAvatarAppearance::getDictionary()->getTexture(index)->mIsLocalTexture;  }  // static @@ -10645,15 +10639,15 @@ BOOL LLVOAvatar::isIndexBakedTexture(ETextureIndex index)  {  	return (index < 0 || index >= TEX_NUM_INDICES)  		? false -		: sAvatarDictionary->getTexture(index)->mIsBakedTexture; +		: LLAvatarAppearance::getDictionary()->getTexture(index)->mIsBakedTexture;  }  const std::string LLVOAvatar::getBakedStatusForPrintout() const  {  	std::string line; -	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = sAvatarDictionary->getTextures().begin(); -		 iter != sAvatarDictionary->getTextures().end(); +	for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearance::getDictionary()->getTextures().begin(); +		 iter != LLAvatarAppearance::getDictionary()->getTextures().end();  		 ++iter)  	{  		const ETextureIndex index = iter->first; diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index cfb007cbc9..79f31ba5b5 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -677,9 +677,6 @@ public:  public:  	static BOOL 	isIndexLocalTexture(LLAvatarAppearanceDefines::ETextureIndex i);  	static BOOL 	isIndexBakedTexture(LLAvatarAppearanceDefines::ETextureIndex i); -private: -	static const LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary *getDictionary() { return sAvatarDictionary; } -	static LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary* sAvatarDictionary;  	//--------------------------------------------------------------------  	// Messaging | 
