diff options
| -rw-r--r-- | indra/newview/llappviewer.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/lllocalbitmaps.cpp | 54 | ||||
| -rw-r--r-- | indra/newview/lllocalbitmaps.h | 45 | ||||
| -rw-r--r-- | indra/newview/lltexturectrl.cpp | 16 | 
4 files changed, 52 insertions, 65 deletions
| diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 7ccbbc6e10..fc75013496 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1750,8 +1750,6 @@ bool LLAppViewer::cleanup()  	gTransferManager.cleanup();  #endif -	SUBSYSTEM_CLEANUP(LLLocalBitmapMgr); -  	// Note: this is where gWorldMap used to be deleted.  	// Note: this is where gHUDManager used to be deleted. diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp index 760325b652..5e378f0980 100644 --- a/indra/newview/lllocalbitmaps.cpp +++ b/indra/newview/lllocalbitmaps.cpp @@ -69,9 +69,6 @@  /*=======================================*/  /*  Formal declarations, constants, etc. */  /*=======================================*/  -std::list<LLLocalBitmap*>   LLLocalBitmapMgr::sBitmapList; -LLLocalBitmapTimer          LLLocalBitmapMgr::sTimer; -bool                        LLLocalBitmapMgr::sNeedsRebake;  static const F32 LL_LOCAL_TIMER_HEARTBEAT   = 3.0;  static const BOOL LL_LOCAL_USE_MIPMAPS      = true; @@ -131,7 +128,7 @@ LLLocalBitmap::~LLLocalBitmap()  	if(LL_LOCAL_REPLACE_ON_DEL && mValid && gAgentAvatarp) // fix for STORM-1837  	{  		replaceIDs(mWorldID, IMG_DEFAULT); -		LLLocalBitmapMgr::doRebake(); +		LLLocalBitmapMgr::getInstance()->doRebake();  	}  	// delete self from gimagelist @@ -570,7 +567,7 @@ void LLLocalBitmap::updateUserLayers(LLUUID old_id, LLUUID new_id, LLWearableTyp  							gAgentAvatarp->setLocalTexture(reg_texind, gTextureList.getImage(new_id), FALSE, index);  							gAgentAvatarp->wearableUpdated(type);  							/* telling the manager to rebake once update cycle is fully done */ -							LLLocalBitmapMgr::setNeedsRebake(); +							LLLocalBitmapMgr::getInstance()->setNeedsRebake();  						}  					} @@ -835,7 +832,7 @@ bool LLLocalBitmapTimer::isRunning()  BOOL LLLocalBitmapTimer::tick()  { -	LLLocalBitmapMgr::doUpdates(); +	LLLocalBitmapMgr::getInstance()->doUpdates();  	return FALSE;  } @@ -844,17 +841,12 @@ BOOL LLLocalBitmapTimer::tick()  /*=======================================*/   LLLocalBitmapMgr::LLLocalBitmapMgr()  { -	// The class is all made of static members, should i even bother instantiating?  }  LLLocalBitmapMgr::~LLLocalBitmapMgr()  { -} - -void LLLocalBitmapMgr::cleanupClass() -{ -	std::for_each(sBitmapList.begin(), sBitmapList.end(), DeletePointer()); -	sBitmapList.clear(); +    std::for_each(mBitmapList.begin(), mBitmapList.end(), DeletePointer()); +    mBitmapList.clear();  }  bool LLLocalBitmapMgr::addUnit() @@ -864,7 +856,7 @@ bool LLLocalBitmapMgr::addUnit()  	LLFilePicker& picker = LLFilePicker::instance();  	if (picker.getMultipleOpenFiles(LLFilePicker::FFLOAD_IMAGE))  	{ -		sTimer.stopTimer(); +		mTimer.stopTimer();  		std::string filename = picker.getFirstFile();  		while(!filename.empty()) @@ -879,7 +871,7 @@ bool LLLocalBitmapMgr::addUnit()  			if (unit->getValid())  			{ -				sBitmapList.push_back(unit); +				mBitmapList.push_back(unit);  				add_successful = true;  			}  			else @@ -898,7 +890,7 @@ bool LLLocalBitmapMgr::addUnit()  			filename = picker.getNextFile();  		} -		sTimer.startTimer(); +		mTimer.startTimer();  	}  	return add_successful; @@ -937,10 +929,10 @@ bool LLLocalBitmapMgr::checkTextureDimensions(std::string filename)  void LLLocalBitmapMgr::delUnit(LLUUID tracking_id)  { -	if (!sBitmapList.empty()) +	if (!mBitmapList.empty())  	{	  		std::vector<LLLocalBitmap*> to_delete; -		for (local_list_iter iter = sBitmapList.begin(); iter != sBitmapList.end(); iter++) +		for (local_list_iter iter = mBitmapList.begin(); iter != mBitmapList.end(); iter++)  		{   /* finding which ones we want deleted and making a separate list */  			LLLocalBitmap* unit = *iter;  			if (unit->getTrackingID() == tracking_id) @@ -953,7 +945,7 @@ void LLLocalBitmapMgr::delUnit(LLUUID tracking_id)  			del_iter != to_delete.end(); del_iter++)  		{   /* iterating over a temporary list, hence preserving the iterator validity while deleting. */  			LLLocalBitmap* unit = *del_iter; -			sBitmapList.remove(unit); +			mBitmapList.remove(unit);  			delete unit;  			unit = NULL;  		} @@ -964,7 +956,7 @@ LLUUID LLLocalBitmapMgr::getWorldID(LLUUID tracking_id)  {  	LLUUID world_id = LLUUID::null; -	for (local_list_iter iter = sBitmapList.begin(); iter != sBitmapList.end(); iter++) +	for (local_list_iter iter = mBitmapList.begin(); iter != mBitmapList.end(); iter++)  	{  		LLLocalBitmap* unit = *iter;  		if (unit->getTrackingID() == tracking_id) @@ -980,7 +972,7 @@ std::string LLLocalBitmapMgr::getFilename(LLUUID tracking_id)  {  	std::string filename = ""; -	for (local_list_iter iter = sBitmapList.begin(); iter != sBitmapList.end(); iter++) +	for (local_list_iter iter = mBitmapList.begin(); iter != mBitmapList.end(); iter++)  	{  		LLLocalBitmap* unit = *iter;  		if (unit->getTrackingID() == tracking_id) @@ -998,10 +990,10 @@ void LLLocalBitmapMgr::feedScrollList(LLScrollListCtrl* ctrl)  	{  		ctrl->clearRows(); -		if (!sBitmapList.empty()) +		if (!mBitmapList.empty())  		{ -			for (local_list_iter iter = sBitmapList.begin(); -				 iter != sBitmapList.end(); iter++) +			for (local_list_iter iter = mBitmapList.begin(); +				 iter != mBitmapList.end(); iter++)  			{  				LLSD element;  				element["columns"][0]["column"] = "unit_name"; @@ -1022,29 +1014,29 @@ void LLLocalBitmapMgr::feedScrollList(LLScrollListCtrl* ctrl)  void LLLocalBitmapMgr::doUpdates()  {  	// preventing theoretical overlap in cases with huge number of loaded images. -	sTimer.stopTimer(); -	sNeedsRebake = false; +	mTimer.stopTimer(); +	mNeedsRebake = false; -	for (local_list_iter iter = sBitmapList.begin(); iter != sBitmapList.end(); iter++) +	for (local_list_iter iter = mBitmapList.begin(); iter != mBitmapList.end(); iter++)  	{  		(*iter)->updateSelf();  	}  	doRebake(); -	sTimer.startTimer(); +	mTimer.startTimer();  }  void LLLocalBitmapMgr::setNeedsRebake()  { -	sNeedsRebake = true; +	mNeedsRebake = true;  }  void LLLocalBitmapMgr::doRebake()  { /* separated that from doUpdates to insure a rebake can be called separately during deletion */ -	if (sNeedsRebake) +	if (mNeedsRebake)  	{  		gAgentAvatarp->forceBakeAllTextures(LL_LOCAL_SLAM_FOR_DEBUG); -		sNeedsRebake = false; +		mNeedsRebake = false;  	}  } diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h index ee4161fb45..f6cc1e919e 100644 --- a/indra/newview/lllocalbitmaps.h +++ b/indra/newview/lllocalbitmaps.h @@ -110,31 +110,28 @@ class LLLocalBitmapTimer : public LLEventTimer  }; -class LLLocalBitmapMgr +class LLLocalBitmapMgr : public LLSingleton<LLLocalBitmapMgr>  { -	public: -		LLLocalBitmapMgr(); -		~LLLocalBitmapMgr(); - -	public: -		static void			cleanupClass(); -		static bool         addUnit(); -		static void         delUnit(LLUUID tracking_id); -		static bool 		checkTextureDimensions(std::string filename); - -		static LLUUID       getWorldID(LLUUID tracking_id); -		static std::string  getFilename(LLUUID tracking_id); -		 -		static void         feedScrollList(LLScrollListCtrl* ctrl); -		static void         doUpdates(); -		static void         setNeedsRebake(); -		static void         doRebake(); -		 -	private: -		static std::list<LLLocalBitmap*>    sBitmapList; -		static LLLocalBitmapTimer           sTimer; -		static bool                         sNeedsRebake; -		typedef std::list<LLLocalBitmap*>::iterator local_list_iter; +	LLSINGLETON(LLLocalBitmapMgr); +	~LLLocalBitmapMgr(); +public: +	bool         addUnit(); +	void         delUnit(LLUUID tracking_id); +	bool 		checkTextureDimensions(std::string filename); + +	LLUUID       getWorldID(LLUUID tracking_id); +	std::string  getFilename(LLUUID tracking_id); + +	void         feedScrollList(LLScrollListCtrl* ctrl); +	void         doUpdates(); +	void         setNeedsRebake(); +	void         doRebake(); +	 +private: +	std::list<LLLocalBitmap*>    mBitmapList; +	LLLocalBitmapTimer           mTimer; +	bool                         mNeedsRebake; +	typedef std::list<LLLocalBitmap*>::iterator local_list_iter;  };  #endif diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 1396a8546d..4db597909c 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -382,7 +382,7 @@ BOOL LLFloaterTexturePicker::postBuild()  	mLocalScrollCtrl = getChild<LLScrollListCtrl>("l_name_list");  	mLocalScrollCtrl->setCommitCallback(onLocalScrollCommit, this); -	LLLocalBitmapMgr::feedScrollList(mLocalScrollCtrl); +	LLLocalBitmapMgr::getInstance()->feedScrollList(mLocalScrollCtrl);  	mNoCopyTextureSelected = FALSE; @@ -694,7 +694,7 @@ void LLFloaterTexturePicker::onBtnSelect(void* userdata)  		if (self->mLocalScrollCtrl->getVisible() && !self->mLocalScrollCtrl->getAllSelected().empty())  		{  			LLUUID temp_id = self->mLocalScrollCtrl->getFirstSelected()->getColumn(LOCAL_TRACKING_ID_COLUMN)->getValue().asUUID(); -			local_id = LLLocalBitmapMgr::getWorldID(temp_id); +			local_id = LLLocalBitmapMgr::getInstance()->getWorldID(temp_id);  		}  	}  	if (self->mOnFloaterCommitCallback) @@ -781,10 +781,10 @@ void LLFloaterTexturePicker::onModeSelect(LLUICtrl* ctrl, void *userdata)  // static  void LLFloaterTexturePicker::onBtnAdd(void* userdata)  { -	if (LLLocalBitmapMgr::addUnit() == true) +	if (LLLocalBitmapMgr::getInstance()->addUnit() == true)  	{  		LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata; -		LLLocalBitmapMgr::feedScrollList(self->mLocalScrollCtrl); +		LLLocalBitmapMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);  	}  } @@ -803,13 +803,13 @@ void LLFloaterTexturePicker::onBtnRemove(void* userdata)  			if (list_item)  			{  				LLUUID tracking_id = list_item->getColumn(LOCAL_TRACKING_ID_COLUMN)->getValue().asUUID(); -				LLLocalBitmapMgr::delUnit(tracking_id); +				LLLocalBitmapMgr::getInstance()->delUnit(tracking_id);  			}  		}  		self->getChild<LLButton>("l_rem_btn")->setEnabled(false);  		self->getChild<LLButton>("l_upl_btn")->setEnabled(false); -		LLLocalBitmapMgr::feedScrollList(self->mLocalScrollCtrl); +		LLLocalBitmapMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);  	}  } @@ -829,7 +829,7 @@ void LLFloaterTexturePicker::onBtnUpload(void* userdata)  	   in the future, it might be a good idea to check the vector size and if more than one units is selected - opt for multi-image upload. */  	LLUUID tracking_id = (LLUUID)self->mLocalScrollCtrl->getSelectedItemLabel(LOCAL_TRACKING_ID_COLUMN); -	std::string filename = LLLocalBitmapMgr::getFilename(tracking_id); +	std::string filename = LLLocalBitmapMgr::getInstance()->getFilename(tracking_id);  	if (!filename.empty())  	{ @@ -852,7 +852,7 @@ void LLFloaterTexturePicker::onLocalScrollCommit(LLUICtrl* ctrl, void* userdata)  	if (has_selection)  	{  		LLUUID tracking_id = (LLUUID)self->mLocalScrollCtrl->getSelectedItemLabel(LOCAL_TRACKING_ID_COLUMN);  -		LLUUID inworld_id = LLLocalBitmapMgr::getWorldID(tracking_id); +		LLUUID inworld_id = LLLocalBitmapMgr::getInstance()->getWorldID(tracking_id);  		if (self->mSetImageAssetIDCallback)  		{  			self->mSetImageAssetIDCallback(inworld_id); | 
