diff options
Diffstat (limited to 'indra')
85 files changed, 241 insertions, 81 deletions
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index ce2b51cea2..0f5d729e77 100644 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp @@ -81,6 +81,7 @@ public:  	~LLAvatarBoneInfo()  	{  		std::for_each(mChildList.begin(), mChildList.end(), DeletePointer()); +		mChildList.clear();  	}  	BOOL parseXml(LLXmlTreeNode* node); @@ -108,6 +109,7 @@ public:  	~LLAvatarSkeletonInfo()  	{  		std::for_each(mBoneInfoList.begin(), mBoneInfoList.end(), DeletePointer()); +		mBoneInfoList.clear();  	}  	BOOL parseXml(LLXmlTreeNode* node);  	S32 getNumBones() const { return mNumBones; } @@ -132,14 +134,26 @@ LLAvatarAppearance::LLAvatarXmlInfo::LLAvatarXmlInfo()  LLAvatarAppearance::LLAvatarXmlInfo::~LLAvatarXmlInfo()  {  	std::for_each(mMeshInfoList.begin(), mMeshInfoList.end(), DeletePointer()); +	mMeshInfoList.clear(); +  	std::for_each(mSkeletalDistortionInfoList.begin(), mSkeletalDistortionInfoList.end(), DeletePointer());		 +	mSkeletalDistortionInfoList.clear(); +  	std::for_each(mAttachmentInfoList.begin(), mAttachmentInfoList.end(), DeletePointer()); +	mAttachmentInfoList.clear(); +  	deleteAndClear(mTexSkinColorInfo);  	deleteAndClear(mTexHairColorInfo);  	deleteAndClear(mTexEyeColorInfo); +  	std::for_each(mLayerInfoList.begin(), mLayerInfoList.end(), DeletePointer());		 +	mLayerInfoList.clear(); +  	std::for_each(mDriverInfoList.begin(), mDriverInfoList.end(), DeletePointer()); +	mDriverInfoList.clear(); +  	std::for_each(mMorphMaskInfoList.begin(), mMorphMaskInfoList.end(), DeletePointer()); +	mMorphMaskInfoList.clear();  } diff --git a/indra/llappearance/lltexglobalcolor.cpp b/indra/llappearance/lltexglobalcolor.cpp index f38b982104..16b0260d1a 100644 --- a/indra/llappearance/lltexglobalcolor.cpp +++ b/indra/llappearance/lltexglobalcolor.cpp @@ -120,6 +120,7 @@ LLTexGlobalColorInfo::LLTexGlobalColorInfo()  LLTexGlobalColorInfo::~LLTexGlobalColorInfo()  {  	for_each(mParamColorInfoList.begin(), mParamColorInfoList.end(), DeletePointer()); +	mParamColorInfoList.clear();  }  BOOL LLTexGlobalColorInfo::parseXml(LLXmlTreeNode* node) diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp index a3a8616864..63d01999f0 100644 --- a/indra/llappearance/lltexlayer.cpp +++ b/indra/llappearance/lltexlayer.cpp @@ -195,6 +195,7 @@ LLTexLayerSetInfo::LLTexLayerSetInfo() :  LLTexLayerSetInfo::~LLTexLayerSetInfo( )  {  	std::for_each(mLayerInfoList.begin(), mLayerInfoList.end(), DeletePointer()); +	mLayerInfoList.clear();  }  BOOL LLTexLayerSetInfo::parseXml(LLXmlTreeNode* node) @@ -282,7 +283,10 @@ LLTexLayerSet::~LLTexLayerSet()  {  	deleteCaches();  	std::for_each(mLayerList.begin(), mLayerList.end(), DeletePointer()); +	mLayerList.clear(); +  	std::for_each(mMaskLayerList.begin(), mMaskLayerList.end(), DeletePointer()); +	mMaskLayerList.clear();  }  //----------------------------------------------------------------------------- @@ -652,7 +656,9 @@ LLTexLayerInfo::LLTexLayerInfo() :  LLTexLayerInfo::~LLTexLayerInfo( )  {  	std::for_each(mParamColorInfoList.begin(), mParamColorInfoList.end(), DeletePointer()); +	mParamColorInfoList.clear();  	std::for_each(mParamAlphaInfoList.begin(), mParamAlphaInfoList.end(), DeletePointer()); +	mParamAlphaInfoList.clear();  }  BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node) diff --git a/indra/llcharacter/llbvhloader.cpp b/indra/llcharacter/llbvhloader.cpp index 2a0df26384..8c02a25367 100755 --- a/indra/llcharacter/llbvhloader.cpp +++ b/indra/llcharacter/llbvhloader.cpp @@ -203,6 +203,7 @@ LLBVHLoader::LLBVHLoader(const char* buffer, ELoadStatus &loadStatus, S32 &error  LLBVHLoader::~LLBVHLoader()  {  	std::for_each(mJoints.begin(),mJoints.end(),DeletePointer()); +	mJoints.clear();  }  //------------------------------------------------------------------------ diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp index 07ef52228e..2241a59513 100755 --- a/indra/llcharacter/llkeyframemotion.cpp +++ b/indra/llcharacter/llkeyframemotion.cpp @@ -81,7 +81,9 @@ LLKeyframeMotion::JointMotionList::JointMotionList()  LLKeyframeMotion::JointMotionList::~JointMotionList()  {  	for_each(mConstraints.begin(), mConstraints.end(), DeletePointer()); +	mConstraints.clear();  	for_each(mJointMotionArray.begin(), mJointMotionArray.end(), DeletePointer()); +	mJointMotionArray.clear();  }  U32 LLKeyframeMotion::JointMotionList::dumpDiagInfo() @@ -447,6 +449,7 @@ LLKeyframeMotion::LLKeyframeMotion(const LLUUID &id)  LLKeyframeMotion::~LLKeyframeMotion()  {  	for_each(mConstraints.begin(), mConstraints.end(), DeletePointer()); +	mConstraints.clear();  }  //----------------------------------------------------------------------------- diff --git a/indra/llcharacter/llmultigesture.cpp b/indra/llcharacter/llmultigesture.cpp index e2d284834f..411bb094fd 100755 --- a/indra/llcharacter/llmultigesture.cpp +++ b/indra/llcharacter/llmultigesture.cpp @@ -59,6 +59,7 @@ LLMultiGesture::LLMultiGesture()  LLMultiGesture::~LLMultiGesture()  {  	std::for_each(mSteps.begin(), mSteps.end(), DeletePointer()); +	mSteps.clear();  }  void LLMultiGesture::reset() diff --git a/indra/llcharacter/llpose.cpp b/indra/llcharacter/llpose.cpp index 55e1b6e9ea..b1a7ebb159 100755 --- a/indra/llcharacter/llpose.cpp +++ b/indra/llcharacter/llpose.cpp @@ -461,6 +461,7 @@ LLPoseBlender::LLPoseBlender()  LLPoseBlender::~LLPoseBlender()  {  	for_each(mJointStateBlenderPool.begin(), mJointStateBlenderPool.end(), DeletePairedPointer()); +	mJointStateBlenderPool.clear();  }  //----------------------------------------------------------------------------- diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp index d2af004cde..853f279c95 100755 --- a/indra/llcommon/llerror.cpp +++ b/indra/llcommon/llerror.cpp @@ -429,8 +429,8 @@ namespace LLError  		~Settings()  		{ -			for_each(recorders.begin(), recorders.end(), -					 DeletePointer()); +			for_each(recorders.begin(), recorders.end(), DeletePointer()); +			recorders.clear();  		}  		static Settings*& getPtr(); diff --git a/indra/llcommon/llfasttimer.cpp b/indra/llcommon/llfasttimer.cpp index 01b6e60d2b..58db7d0d17 100755 --- a/indra/llcommon/llfasttimer.cpp +++ b/indra/llcommon/llfasttimer.cpp @@ -119,6 +119,7 @@ public:  	~NamedTimerFactory()  	{  		std::for_each(mTimers.begin(), mTimers.end(), DeletePairedPointer()); +		mTimers.clear();  		delete mTimerRoot;  	} diff --git a/indra/llcommon/llstl.h b/indra/llcommon/llstl.h index d3941e1bc9..0a39288f5a 100755 --- a/indra/llcommon/llstl.h +++ b/indra/llcommon/llstl.h @@ -98,6 +98,7 @@ struct DeletePointerArray  // The general form is:  //  //  std::for_each(somemap.begin(), somemap.end(), DeletePairedPointer()); +//  somemap.clear();		// Don't leave dangling pointers around  struct DeletePairedPointer  { diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp index fb2d43e3b0..aa66ceb4ec 100755 --- a/indra/llcrashlogger/llcrashlogger.cpp +++ b/indra/llcrashlogger/llcrashlogger.cpp @@ -44,7 +44,7 @@  #include "llsdserialize.h"  #include "llproxy.h" -LLPumpIO* gServicePump; +LLPumpIO* gServicePump = NULL;  BOOL gBreak = false;  BOOL gSent = false; @@ -80,7 +80,8 @@ LLCrashLogger::LLCrashLogger() :  LLCrashLogger::~LLCrashLogger()  { - +	delete gServicePump; +	gServicePump = NULL;  }  // TRIM_SIZE must remain larger than LINE_SEARCH_SIZE. diff --git a/indra/llmessage/llbuffer.cpp b/indra/llmessage/llbuffer.cpp index 01da20f060..aaa49d2ed6 100755 --- a/indra/llmessage/llbuffer.cpp +++ b/indra/llmessage/llbuffer.cpp @@ -225,7 +225,7 @@ LLBufferArray::LLBufferArray() :  LLBufferArray::~LLBufferArray()  {  	std::for_each(mBuffers.begin(), mBuffers.end(), DeletePointer()); - +	mBuffers.clear();  	delete mMutexp;  } diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index 267c48e1d2..13d779ff83 100755 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -278,7 +278,9 @@ LLCacheName::Impl::Impl(LLMessageSystem* msg)  LLCacheName::Impl::~Impl()  {  	for_each(mCache.begin(), mCache.end(), DeletePairedPointer()); +	mCache.clear();  	for_each(mReplyQueue.begin(), mReplyQueue.end(), DeletePointer()); +	mReplyQueue.clear();  }  boost::signals2::connection LLCacheName::Impl::addPending(const LLUUID& id, const LLCacheNameCallback& callback) diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 081f070866..588e6eea83 100755 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -1738,6 +1738,7 @@ void LLCurl::cleanupClass()  #if SAFE_SSL  	CRYPTO_set_locking_callback(NULL);  	for_each(sSSLMutex.begin(), sSSLMutex.end(), DeletePointer()); +	sSSLMutex.clear();  #endif  	LL_CHECK_MEMORY diff --git a/indra/llmessage/llhttpnode.cpp b/indra/llmessage/llhttpnode.cpp index 5c2f73eccb..f6ccb5bdda 100755 --- a/indra/llmessage/llhttpnode.cpp +++ b/indra/llmessage/llhttpnode.cpp @@ -76,8 +76,8 @@ LLHTTPNode::LLHTTPNode()  // virtual  LLHTTPNode::~LLHTTPNode()  { -	std::for_each(impl.mNamedChildren.begin(), impl.mNamedChildren.end(), -		DeletePairedPointer()); +	std::for_each(impl.mNamedChildren.begin(), impl.mNamedChildren.end(), DeletePairedPointer()); +	impl.mNamedChildren.clear();  	delete impl.mWildcardChild; diff --git a/indra/llmessage/llhttpsender.cpp b/indra/llmessage/llhttpsender.cpp index c48cbc42a6..d0bd343db6 100755 --- a/indra/llmessage/llhttpsender.cpp +++ b/indra/llmessage/llhttpsender.cpp @@ -38,7 +38,7 @@ namespace  {  	typedef std::map<LLHost, LLHTTPSender*> SenderMap;  	static SenderMap senderMap; -	static LLHTTPSender* defaultSender = new LLHTTPSender(); +	static LLPointer<LLHTTPSender> defaultSender(new LLHTTPSender());  }  //virtual  @@ -90,6 +90,5 @@ void LLHTTPSender::clearSender(const LLHost& host)  //static   void LLHTTPSender::setDefaultSender(LLHTTPSender* sender)  { -	delete defaultSender;  	defaultSender = sender;  } diff --git a/indra/llmessage/llhttpsender.h b/indra/llmessage/llhttpsender.h index 88920db24d..ff8fa2f95b 100755 --- a/indra/llmessage/llhttpsender.h +++ b/indra/llmessage/llhttpsender.h @@ -32,7 +32,7 @@  class LLHost;  class LLSD; -class LLHTTPSender +class LLHTTPSender : public LLThreadSafeRefCount  {   public: diff --git a/indra/llmessage/llmessagetemplate.h b/indra/llmessage/llmessagetemplate.h index ae8e0087c1..005a49cedf 100755 --- a/indra/llmessage/llmessagetemplate.h +++ b/indra/llmessage/llmessagetemplate.h @@ -118,6 +118,7 @@ public:  	~LLMsgData()  	{  		for_each(mMemberBlocks.begin(), mMemberBlocks.end(), DeletePairedPointer()); +		mMemberBlocks.clear();  	}  	void addBlock(LLMsgBlkData *blockp) diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp index 058bef43a5..84c782e958 100755 --- a/indra/llrender/llfontfreetype.cpp +++ b/indra/llrender/llfontfreetype.cpp @@ -125,6 +125,7 @@ LLFontFreetype::~LLFontFreetype()  	// Delete glyph info  	std::for_each(mCharGlyphInfoMap.begin(), mCharGlyphInfoMap.end(), DeletePairedPointer()); +	mCharGlyphInfoMap.clear();  	// mFontBitmapCachep will be cleaned up by LLPointer destructor.  	// mFallbackFonts cleaned up by LLPointer destructor diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index acf38afe32..96964b528e 100755 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -505,31 +505,48 @@ void LLFloater::destroy()  // virtual  LLFloater::~LLFloater()  { +	LL_INFOS("Baker") << "[3555] ~LLFloater() -------------------------------------------------" << LL_ENDL; +	  	LLFloaterReg::removeInstance(mInstanceName, mKey); +	LL_INFOS("Baker") << "[3555] ~LLFloater() - Does child have keyboard focus?" << LL_ENDL;  	if( gFocusMgr.childHasKeyboardFocus(this))  	{ -	// Just in case we might still have focus here, release it. -	releaseFocus(); +		LL_INFOS("Baker") << "[3555] ~LLFloater() - Yes, release the focus." << LL_ENDL; +		// Just in case we might still have focus here, release it. +		releaseFocus();  	} +	LL_INFOS("Baker") << "[3555] ~LLFloater() - Setting minimized to false" << LL_ENDL;  	// This is important so that floaters with persistent rects (i.e., those  	// created with rect control rather than an LLRect) are restored in their  	// correct, non-minimized positions.  	setMinimized( FALSE ); +	LL_INFOS("Baker") << "[3555] ~LLFloater() - Deleting the drag handle." << LL_ENDL;  	delete mDragHandle;  	for (S32 i = 0; i < 4; i++)   	{ +		LL_INFOS("Baker") << "[3555] ~LLFloater() - Deleting mResizeBar[" << i << "]" << LL_ENDL;  		delete mResizeBar[i]; + +		LL_INFOS("Baker") << "[3555] ~LLFloater() - Deleting mResizeHandle[" << i << "]" << LL_ENDL;  		delete mResizeHandle[i];  	} +	LL_INFOS("Baker") << "[3555] ~LLFloater() - Setting visibility (false)" << LL_ENDL;  	setVisible(false); // We're not visible if we're destroyed +	 +	LL_INFOS("Baker") << "[3555] ~LLFloater() - Storing visibility control" << LL_ENDL;  	storeVisibilityControl(); +	 +	LL_INFOS("Baker") << "[3555] ~LLFloater() - Storing dock state control" << LL_ENDL;  	storeDockStateControl(); +	LL_INFOS("Baker") << "[3555] ~LLFloater() - Delete mMinimizeSignal" << LL_ENDL;  	delete mMinimizeSignal; + +	LL_INFOS("Baker") << "[3555] Exiting ~LLFloater()" << LL_ENDL;  }  void LLFloater::storeRectControl() diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp index 26d27d1f34..39153977bf 100755 --- a/indra/llui/llkeywords.cpp +++ b/indra/llui/llkeywords.cpp @@ -76,8 +76,11 @@ inline BOOL LLKeywordToken::isTail(const llwchar* s) const  LLKeywords::~LLKeywords()  {  	std::for_each(mWordTokenMap.begin(), mWordTokenMap.end(), DeletePairedPointer()); +	mWordTokenMap.clear();  	std::for_each(mLineTokenList.begin(), mLineTokenList.end(), DeletePointer()); +	mLineTokenList.clear();  	std::for_each(mDelimiterTokenList.begin(), mDelimiterTokenList.end(), DeletePointer()); +	mDelimiterTokenList.clear();  }  BOOL LLKeywords::loadFromFile( const std::string& filename ) diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index c89c0203b4..953025abbf 100755 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -245,9 +245,18 @@ LLLayoutStack::LLLayoutStack(const LLLayoutStack::Params& p)  LLLayoutStack::~LLLayoutStack()  { +	LL_INFOS("Baker") << "[3555] ~LLLayoutStack() -------------------------------------------------" << LL_ENDL; +	 +	LL_INFOS("Baker") << "[3555] ~LLLayoutStack() - Copying panel pointers." << LL_ENDL;  	e_panel_list_t panels = mPanels; // copy list of panel pointers + +	LL_INFOS("Baker") << "[3555] ~LLLayoutStack() - Clearing mPanels." << LL_ENDL;  	mPanels.clear(); // clear so that removeChild() calls don't cause trouble +	 +	LL_INFOS("Baker") << "[3555] ~LLLayoutStack() - Deleing copied panel pointers." << LL_ENDL;  	std::for_each(panels.begin(), panels.end(), DeletePointer()); + +	LL_INFOS("Baker") << "[3555] Exiting ~LLLayoutStack()" << LL_ENDL;  }  void LLLayoutStack::draw() diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index 67472ad166..3ee93150f5 100755 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -126,7 +126,13 @@ LLPanel::LLPanel(const LLPanel::Params& p)  LLPanel::~LLPanel()  { +	LL_INFOS("Baker") << "[3555] ~LLPanel() -------------------------------------------------" << LL_ENDL; +	LL_INFOS("Baker") << "[3555] ~LLPanel() - Deleting mVisibleSignal..." << LL_ENDL; +  	delete mVisibleSignal; + +	LL_INFOS("Baker") << "[3555] ~LLPanel() - deleted." << LL_ENDL; +	LL_INFOS("Baker") << "[3555] Exiting ~LLPanel()" << LL_ENDL;  }  // virtual diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h index e63b41f97c..17b9b91ba7 100755 --- a/indra/llui/llpanel.h +++ b/indra/llui/llpanel.h @@ -330,17 +330,16 @@ private:  // local static instance for registering a particular panel class  template<typename T> -class LLRegisterPanelClassWrapper -:	public LLRegisterPanelClass +	class LLPanelInjector  {  public: -	// reigister with either the provided builder, or the generic templated builder -	LLRegisterPanelClassWrapper(const std::string& tag); +	// register with either the provided builder, or the generic templated builder +	LLPanelInjector(const std::string& tag);  };  template<typename T> -LLRegisterPanelClassWrapper<T>::LLRegisterPanelClassWrapper(const std::string& tag)  +	LLPanelInjector<T>::LLPanelInjector(const std::string& tag)   {  	LLRegisterPanelClass::instance().addPanelClass(tag,&LLRegisterPanelClass::defaultPanelClassBuilder<T>);  } diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 594e1e150b..d4bbea0f8e 100755 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -320,7 +320,9 @@ LLScrollListCtrl::~LLScrollListCtrl()  	delete mSortCallback;  	std::for_each(mItemList.begin(), mItemList.end(), DeletePointer()); +	mItemList.clear();  	std::for_each(mColumns.begin(), mColumns.end(), DeletePairedPointer()); +	mColumns.clear();  } diff --git a/indra/llui/llscrolllistitem.cpp b/indra/llui/llscrolllistitem.cpp index 5a1e96ab03..cc7f42e49a 100755 --- a/indra/llui/llscrolllistitem.cpp +++ b/indra/llui/llscrolllistitem.cpp @@ -50,6 +50,7 @@ LLScrollListItem::LLScrollListItem( const Params& p )  LLScrollListItem::~LLScrollListItem()  {  	std::for_each(mColumns.begin(), mColumns.end(), DeletePointer()); +	mColumns.clear();  }  void LLScrollListItem::addColumn(const LLScrollListCell::Params& p) diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 76ba53ec32..203bf5b50e 100755 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -280,7 +280,16 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)  LLTabContainer::~LLTabContainer()  { +	LL_INFOS("Baker") << "[3555] ~LLTabContainer() -------------------------------------------------" << LL_ENDL; +	LL_INFOS("Baker") << "[3555] ~LLTabContainer() - Deleting mTabList contents..." << LL_ENDL; +	  	std::for_each(mTabList.begin(), mTabList.end(), DeletePointer()); +	 +	LL_INFOS("Baker") << "[3555] ~LLTabContainer() - Clearing mTabList" << LL_ENDL; +	mTabList.clear(); +	 +	LL_INFOS("Baker") << "[3555] ~LLTabContainer() - done." << LL_ENDL; +	LL_INFOS("Baker") << "[3555] Exiting ~LLTabContainer()" << LL_ENDL;  }  //virtual diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 7896fcef95..3bac15c5d4 100755 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -310,7 +310,7 @@ LLTextEditor::~LLTextEditor()  	// Scrollbar is deleted by LLView  	std::for_each(mUndoStack.begin(), mUndoStack.end(), DeletePointer()); - +	mUndoStack.clear();  	// context menu is owned by menu holder, not us  	//delete mContextMenu;  } diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp index 1722bf27bd..801d39ac70 100755 --- a/indra/llui/lluictrl.cpp +++ b/indra/llui/lluictrl.cpp @@ -207,23 +207,47 @@ void LLUICtrl::initFromParams(const Params& p)  LLUICtrl::~LLUICtrl()  { +	LL_INFOS("Baker") << "[3555] ~LLUICtrl() -------------------------------------------------" << LL_ENDL; +	  	gFocusMgr.releaseFocusIfNeeded( this ); // calls onCommit() +	LL_INFOS("Baker") << "[3555] ~LLUICtrl() - Released focus if needed." << LL_ENDL; +  	if( gFocusMgr.getTopCtrl() == this )  	{ +		llinfos << "[3555] ~LLUICtrl() - UI Control holding top ctrl deleted: " << getName() << ".  Top view removed." << llendl;  		llwarns << "UI Control holding top ctrl deleted: " << getName() << ".  Top view removed." << llendl;  		gFocusMgr.removeTopCtrlWithoutCallback( this );  	} +	LL_INFOS("Baker") << "[3555] ~LLUICtrl() - deleting mCommitSignal" << LL_ENDL;  	delete mCommitSignal; + +	LL_INFOS("Baker") << "[3555] ~LLUICtrl() - deleting mValidateSignal" << LL_ENDL;  	delete mValidateSignal; + +	LL_INFOS("Baker") << "[3555] ~LLUICtrl() - deleting mMouseEnterSignal" << LL_ENDL;  	delete mMouseEnterSignal; + +	LL_INFOS("Baker") << "[3555] ~LLUICtrl() - deleting mMouseLeaveSignal" << LL_ENDL;  	delete mMouseLeaveSignal; + +	LL_INFOS("Baker") << "[3555] ~LLUICtrl() - deleting mMouseDownSignal" << LL_ENDL;  	delete mMouseDownSignal; + +	LL_INFOS("Baker") << "[3555] ~LLUICtrl() - deleting mMouseUpSignal" << LL_ENDL;  	delete mMouseUpSignal; + +	LL_INFOS("Baker") << "[3555] ~LLUICtrl() - deleting mRightMouseDownSignal" << LL_ENDL;  	delete mRightMouseDownSignal; + +	LL_INFOS("Baker") << "[3555] ~LLUICtrl() - deleting mRightMouseUpSignal" << LL_ENDL;  	delete mRightMouseUpSignal; + +	LL_INFOS("Baker") << "[3555] ~LLUICtrl() - deleting mDoubleClickSignal" << LL_ENDL;  	delete mDoubleClickSignal; + +	LL_INFOS("Baker") << "[3555] Exiting ~LLUICtrl()" << LL_ENDL;  }  void default_commit_handler(LLUICtrl* ctrl, const LLSD& param) diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 5ee2169b66..daa87e8334 100755 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -150,10 +150,16 @@ LLView::LLView(const LLView::Params& p)  LLView::~LLView()  { +	LL_INFOS("Baker") << "[3555] ~LLView -------------------------------------------------" << LL_ENDL; +	 +	LL_INFOS("Baker") << "[3555] ~LLView() - Dirtying view rect" << LL_ENDL;  	dirtyRect();  	//llinfos << "Deleting view " << mName << ":" << (void*) this << llendl; +	LL_INFOS("Baker") << "[3555] ~LLView() - Deleting view " << mName << ":" << (void*) this << LL_ENDL;  	if (LLView::sIsDrawing)  	{ +		LL_INFOS("Baker") << "[3555] ~LLView() - Deleting view " << mName << " during UI draw() phase" << LL_ENDL; +	  		lldebugs << "Deleting view " << mName << " during UI draw() phase" << llendl;  	}  // 	llassert(LLView::sIsDrawing == FALSE); @@ -163,21 +169,30 @@ LLView::~LLView()  	if( hasMouseCapture() )  	{  		//llwarns << "View holding mouse capture deleted: " << getName() << ".  Mouse capture removed." << llendl; +		LL_INFOS("Baker") << "[3555] ~LLView() - View holding mouse capture deleted: " << getName() << ".  Mouse capture removed." << LL_ENDL;  		gFocusMgr.removeMouseCaptureWithoutCallback( this );  	} +	LL_INFOS("Baker") << "[3555] ~LLView() - Deleting all children..." << LL_ENDL;  	deleteAllChildren(); +	LL_INFOS("Baker") << "[3555] ~LLView() - done." << LL_ENDL; +  	if (mParentView != NULL)  	{ +		LL_INFOS("Baker") << "[3555] ~LLView() - Removing this child view" << LL_ENDL;  		mParentView->removeChild(this);  	}  	if (mDefaultWidgets)  	{ +		LL_INFOS("Baker") << "[3555] ~LLView() - Deleting default widgets" << LL_ENDL; +  		delete mDefaultWidgets;  		mDefaultWidgets = NULL;  	} + +	LL_INFOS("Baker") << "[3555] Exiting ~LLView()" << LL_ENDL;  }  // virtual diff --git a/indra/llvfs/llvfs.cpp b/indra/llvfs/llvfs.cpp index 82c926620a..7b589f5b96 100755 --- a/indra/llvfs/llvfs.cpp +++ b/indra/llvfs/llvfs.cpp @@ -578,6 +578,7 @@ LLVFS::~LLVFS()  	mFreeBlocksByLength.clear();  	for_each(mFreeBlocksByLocation.begin(), mFreeBlocksByLocation.end(), DeletePairedPointer()); +	mFreeBlocksByLocation.clear();  	unlockAndClose(mDataFP);  	mDataFP = NULL; @@ -1835,6 +1836,7 @@ void LLVFS::audit()  	}  	for_each(audit_blocks.begin(), audit_blocks.end(), DeletePointer()); +	audit_blocks.clear();  } diff --git a/indra/llwindow/lldxhardware.cpp b/indra/llwindow/lldxhardware.cpp index 3579b5d42f..b0f4bc5503 100755 --- a/indra/llwindow/lldxhardware.cpp +++ b/indra/llwindow/lldxhardware.cpp @@ -171,6 +171,7 @@ std::string LLDXDriverFile::dump()  LLDXDevice::~LLDXDevice()  {  	for_each(mDriverFiles.begin(), mDriverFiles.end(), DeletePairedPointer()); +	mDriverFiles.clear();  }  std::string LLDXDevice::dump() @@ -230,6 +231,7 @@ LLDXHardware::LLDXHardware()  void LLDXHardware::cleanup()  {    // for_each(mDevices.begin(), mDevices.end(), DeletePairedPointer()); +  // mDevices.clear();  }  /* diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index a76ccff2a6..0b2eb36f50 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -3.7.1 +3.7.2 diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index 0bdd425504..a2d68eb550 100755 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -1,4 +1,4 @@ -version 35 +version 36  // The version number above should be implemented IF AND ONLY IF some  // change has been made that is sufficiently important to justify  // resetting the graphics preferences of all users to the recommended @@ -628,3 +628,6 @@ Disregard128DefaultDrawDistance	1	0  list NVIDIA_GeForce_Go_7400  Disregard128DefaultDrawDistance	1	0 +list OSX_10_6_8 +RenderDeferred 0 0 + diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index 80a80f4298..2764025d75 100755 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -200,14 +200,6 @@ int APIENTRY WINMAIN(HINSTANCE hInstance,                       LPSTR     lpCmdLine,                       int       nCmdShow)  { -#ifdef INCLUDE_VLD -	// only works for debug builds (hard coded into vld.h) -	#ifdef _DEBUG -		// start with Visual Leak Detector turned off -		VLDGlobalDisable(); -	#endif // _DEBUG -#endif // INCLUDE_VLD -  	const S32 MAX_HEAPS = 255;  	DWORD heap_enable_lfh_error[MAX_HEAPS];  	S32 num_heaps = 0; diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp index 14583e402d..91741c2a77 100755 --- a/indra/newview/llcallingcard.cpp +++ b/indra/newview/llcallingcard.cpp @@ -115,7 +115,9 @@ LLAvatarTracker::~LLAvatarTracker()  {  	deleteTrackingData();  	std::for_each(mObservers.begin(), mObservers.end(), DeletePointer()); +	mObservers.clear();  	std::for_each(mBuddyInfo.begin(), mBuddyInfo.end(), DeletePairedPointer()); +	mBuddyInfo.clear();  }  void LLAvatarTracker::track(const LLUUID& avatar_id, const std::string& name) diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index e86d6930e8..e200e0ee9e 100755 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -43,7 +43,7 @@  #include "llpaneloutfitedit.h"  #include "lltrans.h" -static LLRegisterPanelClassWrapper<LLCOFWearables> t_cof_wearables("cof_wearables"); +static LLPanelInjector<LLCOFWearables> t_cof_wearables("cof_wearables");  const LLSD REARRANGE = LLSD().with("rearrange", LLSD()); diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index 73607e100a..ba6f26d3ef 100755 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -925,6 +925,14 @@ void LLFeatureManager::applyBaseMasks()  		maskFeatures("VRAMGT512");  	} +#if LL_DARWIN +	const LLOSInfo& osInfo = LLAppViewer::instance()->getOSInfo(); +	if (osInfo.mMajorVer == 10 && osInfo.mMinorVer < 7) +	{ +		maskFeatures("OSX_10_6_8"); +        } +#endif +  	// now mask by gpu string  	// Replaces ' ' with '_' in mGPUString to deal with inability for parser to handle spaces  	std::string gpustr = mGPUString; diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index c85d048c5a..d0939b3eee 100755 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -151,7 +151,7 @@ void LLPanelCameraItem::setValue(const LLSD& value)  	getChildView("selected_picture")->setVisible( value["selected"]);  } -static LLRegisterPanelClassWrapper<LLPanelCameraZoom> t_camera_zoom_panel("camera_zoom_panel"); +static LLPanelInjector<LLPanelCameraZoom> t_camera_zoom_panel("camera_zoom_panel");  //-------------------------------------------------------------------------------  // LLPanelCameraZoom diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index 444d3d1f08..c4c17981a4 100755 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -87,26 +87,44 @@ LLFloaterIMContainer::LLFloaterIMContainer(const LLSD& seed, const Params& param  LLFloaterIMContainer::~LLFloaterIMContainer()  { +	LL_INFOS("Baker") << "[3555] ~LLFloaterIMContainer() -------------------------------------------------" << LL_ENDL; + +	LL_INFOS("Baker") << "[3555] ~LLFloaterIMContainer() - Stop listening to conversation event stream" << LL_ENDL;  	mConversationsEventStream.stopListening("ConversationsRefresh"); +	LL_INFOS("Baker") << "[3555] ~LLFloaterIMContainer() - Delete idle callback function" << LL_ENDL;  	gIdleCallbacks.deleteFunction(idle, this); +	LL_INFOS("Baker") << "[3555] ~LLFloaterIMContainer() - Disconnect from new message connection" << LL_ENDL;  	mNewMessageConnection.disconnect(); +	 +	LL_INFOS("Baker") << "[3555] ~LLFloaterIMContainer() - Remove control view" << LL_ENDL;  	LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, this); +	LL_INFOS("Baker") << "[3555] ~LLFloaterIMContainer() - Are we connected to a signal?" << LL_ENDL;  	if (mMicroChangedSignal.connected())  	{ +		LL_INFOS("Baker") << "[3555] ~LLFloaterIMContainer() - Disconnect from it" << LL_ENDL;  		mMicroChangedSignal.disconnect();  	} +	LL_INFOS("Baker") << "[3555] ~LLFloaterIMContainer() - Save off account settings (state of convo pane)" << LL_ENDL;  	gSavedPerAccountSettings.setBOOL("ConversationsListPaneCollapsed", mConversationsPane->isCollapsed()); +	 +	LL_INFOS("Baker") << "[3555] ~LLFloaterIMContainer() - Safe off account settings (state of message pane)" << LL_ENDL;  	gSavedPerAccountSettings.setBOOL("ConversationsMessagePaneCollapsed", mMessagesPane->isCollapsed()); +	 +	LL_INFOS("Baker") << "[3555] ~LLFloaterIMContainer() - Safe off account settings (state of participant list)" << LL_ENDL;  	gSavedPerAccountSettings.setBOOL("ConversationsParticipantListCollapsed", !isParticipantListExpanded()); +	LL_INFOS("Baker") << "[3555] ~LLFloaterIMContainer() - Checking if LLIMMgr is destroyed" << LL_ENDL;  	if (!LLSingleton<LLIMMgr>::destroyed())  	{ +		LL_INFOS("Baker") << "[3555] ~LLFloaterIMContainer() - It is not, so remove the session observer" << LL_ENDL;  		LLIMMgr::getInstance()->removeSessionObserver(this);  	} + +	LL_INFOS("Baker") << "[3555] Exiting ~LLFloaterIMContainer()" << LL_ENDL;  }  void LLFloaterIMContainer::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id, BOOL has_offline_msg) diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp index b0009fd94f..f0c010b545 100755 --- a/indra/newview/llfloaterpay.cpp +++ b/indra/newview/llfloaterpay.cpp @@ -135,6 +135,7 @@ LLFloaterPay::LLFloaterPay(const LLSD& key)  LLFloaterPay::~LLFloaterPay()  {  	std::for_each(mCallbackData.begin(), mCallbackData.end(), DeletePointer()); +	mCallbackData.clear();  	// Name callbacks will be automatically disconnected since LLFloater is trackable  	// In case this floater is currently waiting for a reply. diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index c339ee3beb..b50a2e6f85 100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -1823,7 +1823,7 @@ private:  	callback_t mCallback;  };  //---------------------------------------------------------------------------- -static LLRegisterPanelClassWrapper<LLPanelPreference> t_places("panel_preference"); +static LLPanelInjector<LLPanelPreference> t_places("panel_preference");  LLPanelPreference::LLPanelPreference()  : LLPanel(),    mBandWidthUpdater(NULL) @@ -2063,8 +2063,8 @@ private:  	std::list<std::string> mAccountIndependentSettings;  }; -static LLRegisterPanelClassWrapper<LLPanelPreferenceGraphics> t_pref_graph("panel_preference_graphics"); -static LLRegisterPanelClassWrapper<LLPanelPreferencePrivacy> t_pref_privacy("panel_preference_privacy"); +static LLPanelInjector<LLPanelPreferenceGraphics> t_pref_graph("panel_preference_graphics"); +static LLPanelInjector<LLPanelPreferencePrivacy> t_pref_privacy("panel_preference_privacy");  BOOL LLPanelPreferenceGraphics::postBuild()  { diff --git a/indra/newview/llfloatersocial.cpp b/indra/newview/llfloatersocial.cpp index 2a74c8e3ea..9490769d8c 100644 --- a/indra/newview/llfloatersocial.cpp +++ b/indra/newview/llfloatersocial.cpp @@ -47,10 +47,10 @@  #include "llviewercontrol.h"  #include "llviewermedia.h" -static LLRegisterPanelClassWrapper<LLSocialStatusPanel> t_panel_status("llsocialstatuspanel"); -static LLRegisterPanelClassWrapper<LLSocialPhotoPanel> t_panel_photo("llsocialphotopanel"); -static LLRegisterPanelClassWrapper<LLSocialCheckinPanel> t_panel_checkin("llsocialcheckinpanel"); -static LLRegisterPanelClassWrapper<LLSocialAccountPanel> t_panel_account("llsocialaccountpanel"); +static LLPanelInjector<LLSocialStatusPanel> t_panel_status("llsocialstatuspanel"); +static LLPanelInjector<LLSocialPhotoPanel> t_panel_photo("llsocialphotopanel"); +static LLPanelInjector<LLSocialCheckinPanel> t_panel_checkin("llsocialcheckinpanel"); +static LLPanelInjector<LLSocialAccountPanel> t_panel_account("llsocialaccountpanel");  const S32 MAX_POSTCARD_DATASIZE = 1024 * 1024; // one megabyte  const std::string DEFAULT_CHECKIN_LOCATION_URL = "http://maps.secondlife.com/"; diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp index 76b73fcf29..68dbb5ae33 100755 --- a/indra/newview/llfloaterwebcontent.cpp +++ b/indra/newview/llfloaterwebcontent.cpp @@ -372,7 +372,10 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent  	}  	else if(event == MEDIA_EVENT_GEOMETRY_CHANGE)  	{ -		geometryChanged(self->getGeometryX(), self->getGeometryY(), self->getGeometryWidth(), self->getGeometryHeight()); +		if (mCurrentURL.find("facebook.com/dialog/oauth") == std::string::npos) // HACK to fix ACME-1317 - Cho +		{ +			geometryChanged(self->getGeometryX(), self->getGeometryY(), self->getGeometryWidth(), self->getGeometryHeight()); +		}  	}  	else if(event == MEDIA_EVENT_STATUS_TEXT_CHANGED )  	{ diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 3dcf7cd8aa..9c0b486cc5 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -77,6 +77,7 @@ LLRoleActionSet::~LLRoleActionSet()  {  	delete mActionSetData;  	std::for_each(mActions.begin(), mActions.end(), DeletePointer()); +	mActions.clear();  }  // diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp index dd402de394..a92df8250e 100755 --- a/indra/newview/lllandmarklist.cpp +++ b/indra/newview/lllandmarklist.cpp @@ -46,6 +46,7 @@ LLLandmarkList gLandmarkList;  LLLandmarkList::~LLLandmarkList()  {  	std::for_each(mList.begin(), mList.end(), DeletePairedPointer()); +	mList.clear();  }  LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t cb) diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index c15b6bd0d3..ff8bfafb79 100755 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -343,7 +343,7 @@ private:  ////////////////////////////////////////////////////////////////////////// -static LLRegisterPanelClassWrapper<LLOutfitsList> t_outfits_list("outfits_list"); +static LLPanelInjector<LLOutfitsList> t_outfits_list("outfits_list");  LLOutfitsList::LLOutfitsList()  	:	LLPanelAppearanceTab() diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp index 115114bb53..9665314e75 100755 --- a/indra/newview/llpanelblockedlist.cpp +++ b/indra/newview/llpanelblockedlist.cpp @@ -48,7 +48,7 @@  #include "llsidetraypanelcontainer.h"  #include "llviewercontrol.h" -static LLRegisterPanelClassWrapper<LLPanelBlockedList> t_panel_blocked_list("panel_block_list_sidetray"); +static LLPanelInjector<LLPanelBlockedList> t_panel_blocked_list("panel_block_list_sidetray");  //  // Constants diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index e71dba5cae..0621cc8fad 100755 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -62,7 +62,7 @@  #include "llappearancemgr.h"  // register panel with appropriate XML -static LLRegisterPanelClassWrapper<LLPanelEditWearable> t_edit_wearable("panel_edit_wearable"); +static LLPanelInjector<LLPanelEditWearable> t_edit_wearable("panel_edit_wearable");  // subparts of the UI for focus, camera position, etc.  enum ESubpart { diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp index a0ca82da46..c872a15af7 100755 --- a/indra/newview/llpanelgroup.cpp +++ b/indra/newview/llpanelgroup.cpp @@ -56,7 +56,7 @@  #include "lltrans.h" -static LLRegisterPanelClassWrapper<LLPanelGroup> t_panel_group("panel_group_info_sidetray"); +static LLPanelInjector<LLPanelGroup> t_panel_group("panel_group_info_sidetray"); diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp index 68835ec5b8..eaf33c7108 100755 --- a/indra/newview/llpanelgroupgeneral.cpp +++ b/indra/newview/llpanelgroupgeneral.cpp @@ -53,7 +53,7 @@  #include "lltrans.h"  #include "llviewerwindow.h" -static LLRegisterPanelClassWrapper<LLPanelGroupGeneral> t_panel_group_general("panel_group_general"); +static LLPanelInjector<LLPanelGroupGeneral> t_panel_group_general("panel_group_general");  // consts  const S32 MATURE_CONTENT = 1; diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp index c927aeacb3..17707557bb 100755 --- a/indra/newview/llpanelgrouplandmoney.cpp +++ b/indra/newview/llpanelgrouplandmoney.cpp @@ -55,7 +55,7 @@  #include "llfloaterworldmap.h"  #include "llviewermessage.h" -static LLRegisterPanelClassWrapper<LLPanelGroupLandMoney> t_panel_group_money("panel_group_land_money"); +static LLPanelInjector<LLPanelGroupLandMoney> t_panel_group_money("panel_group_land_money"); diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp index 522ba5afae..0dfb8fef53 100755 --- a/indra/newview/llpanelgroupnotices.cpp +++ b/indra/newview/llpanelgroupnotices.cpp @@ -57,7 +57,7 @@  #include "llnotificationsutil.h"  #include "llgiveinventory.h" -static LLRegisterPanelClassWrapper<LLPanelGroupNotices> t_panel_group_notices("panel_group_notices"); +static LLPanelInjector<LLPanelGroupNotices> t_panel_group_notices("panel_group_notices");  ///////////////////////// diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index b89e7b8b73..c30c932c41 100755 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -55,7 +55,7 @@  #include "roles_constants.h" -static LLRegisterPanelClassWrapper<LLPanelGroupRoles> t_panel_group_roles("panel_group_roles"); +static LLPanelInjector<LLPanelGroupRoles> t_panel_group_roles("panel_group_roles");  bool agentCanRemoveFromRole(const LLUUID& group_id,  							const LLUUID& role_id) @@ -733,7 +733,7 @@ void LLPanelGroupSubTab::setFooterEnabled(BOOL enable)  //////////////////////////// -static LLRegisterPanelClassWrapper<LLPanelGroupMembersSubTab> t_panel_group_members_subtab("panel_group_members_subtab"); +static LLPanelInjector<LLPanelGroupMembersSubTab> t_panel_group_members_subtab("panel_group_members_subtab");  LLPanelGroupMembersSubTab::LLPanelGroupMembersSubTab()  : 	LLPanelGroupSubTab(), @@ -1755,7 +1755,7 @@ void LLPanelGroupMembersSubTab::updateMembers()  // LLPanelGroupRolesSubTab  //////////////////////////// -static LLRegisterPanelClassWrapper<LLPanelGroupRolesSubTab> t_panel_group_roles_subtab("panel_group_roles_subtab"); +static LLPanelInjector<LLPanelGroupRolesSubTab> t_panel_group_roles_subtab("panel_group_roles_subtab");  LLPanelGroupRolesSubTab::LLPanelGroupRolesSubTab()    : LLPanelGroupSubTab(), @@ -2469,7 +2469,7 @@ void LLPanelGroupRolesSubTab::saveRoleChanges(bool select_saved_role)  // LLPanelGroupActionsSubTab  //////////////////////////// -static LLRegisterPanelClassWrapper<LLPanelGroupActionsSubTab> t_panel_group_actions_subtab("panel_group_actions_subtab"); +static LLPanelInjector<LLPanelGroupActionsSubTab> t_panel_group_actions_subtab("panel_group_actions_subtab");  LLPanelGroupActionsSubTab::LLPanelGroupActionsSubTab() diff --git a/indra/newview/llpanelhome.cpp b/indra/newview/llpanelhome.cpp index b03bab3127..ab0ccffae4 100755 --- a/indra/newview/llpanelhome.cpp +++ b/indra/newview/llpanelhome.cpp @@ -31,7 +31,7 @@  #include "llmediactrl.h"  #include "llviewerhome.h" -static LLRegisterPanelClassWrapper<LLPanelHome> t_home("panel_sidetray_home"); +static LLPanelInjector<LLPanelHome> t_home("panel_sidetray_home");  LLPanelHome::LLPanelHome() :  	LLPanel(), diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index 5c9b968ac9..934f8ed8c7 100755 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -53,7 +53,7 @@ typedef std::pair<LLUUID, std::string> folder_pair_t;  static bool cmp_folders(const folder_pair_t& left, const folder_pair_t& right);  static void collectLandmarkFolders(LLInventoryModel::cat_array_t& cats); -static LLRegisterPanelClassWrapper<LLPanelLandmarkInfo> t_landmark_info("panel_landmark_info"); +static LLPanelInjector<LLPanelLandmarkInfo> t_landmark_info("panel_landmark_info");  // Statics for textures filenames  static std::string icon_pg; diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index bd173fadc7..68c22c12fd 100755 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -58,7 +58,7 @@  const std::string FILTERS_FILENAME("filters.xml"); -static LLRegisterPanelClassWrapper<LLPanelMainInventory> t_inventory("panel_main_inventory"); +static LLPanelInjector<LLPanelMainInventory> t_inventory("panel_main_inventory");  void on_file_loaded_for_save(BOOL success,   							 LLViewerFetchedTexture *src_vi, diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp index dcecce6fe4..79e079f6bd 100755 --- a/indra/newview/llpanelmarketplaceinbox.cpp +++ b/indra/newview/llpanelmarketplaceinbox.cpp @@ -38,7 +38,7 @@  #include "llviewercontrol.h" -static LLRegisterPanelClassWrapper<LLPanelMarketplaceInbox> t_panel_marketplace_inbox("panel_marketplace_inbox"); +static LLPanelInjector<LLPanelMarketplaceInbox> t_panel_marketplace_inbox("panel_marketplace_inbox");  const LLPanelMarketplaceInbox::Params& LLPanelMarketplaceInbox::getDefaultParams()   {  diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp index a9af56f750..7a408e736f 100755 --- a/indra/newview/llpanelme.cpp +++ b/indra/newview/llpanelme.cpp @@ -48,7 +48,7 @@  #include "lltabcontainer.h"  #include "lltexturectrl.h" -static LLRegisterPanelClassWrapper<LLPanelMe> t_panel_me_profile("panel_me"); +static LLPanelInjector<LLPanelMe> t_panel_me_profile("panel_me");  LLPanelMe::LLPanelMe(void)    : LLPanelProfile() diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index c09d4393c8..f75d76da94 100755 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -74,7 +74,7 @@  #include "llwearabletype.h"  #include "llweb.h" -static LLRegisterPanelClassWrapper<LLPanelOutfitEdit> t_outfit_edit("panel_outfit_edit"); +static LLPanelInjector<LLPanelOutfitEdit> t_outfit_edit("panel_outfit_edit");  const U64 WEARABLE_MASK = (1LL << LLInventoryType::IT_WEARABLE);  const U64 ATTACHMENT_MASK = (1LL << LLInventoryType::IT_ATTACHMENT) | (1LL << LLInventoryType::IT_OBJECT); diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index f90236f6f2..e0132d20fb 100755 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -46,7 +46,7 @@  static const std::string OUTFITS_TAB_NAME = "outfitslist_tab";  static const std::string COF_TAB_NAME = "cof_tab"; -static LLRegisterPanelClassWrapper<LLPanelOutfitsInventory> t_inventory("panel_outfits_inventory"); +static LLPanelInjector<LLPanelOutfitsInventory> t_inventory("panel_outfits_inventory");  LLPanelOutfitsInventory::LLPanelOutfitsInventory() :  	mMyOutfitsPanel(NULL), diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index f551fc96ee..f5542ee7a6 100755 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -216,7 +216,7 @@ static const LLAvatarItemStatusComparator STATUS_COMPARATOR;  static LLAvatarItemDistanceComparator DISTANCE_COMPARATOR;  static const LLAvatarItemRecentSpeakerComparator RECENT_SPEAKER_COMPARATOR; -static LLRegisterPanelClassWrapper<LLPanelPeople> t_people("panel_people"); +static LLPanelInjector<LLPanelPeople> t_people("panel_people");  //============================================================================= diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index cfbc8f1a94..f0617266db 100755 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -69,7 +69,7 @@ static const std::string CLASSIFIED_ID("classified_id");  static const std::string CLASSIFIED_NAME("classified_name"); -static LLRegisterPanelClassWrapper<LLPanelPicks> t_panel_picks("panel_picks"); +static LLPanelInjector<LLPanelPicks> t_panel_picks("panel_picks");  class LLPickHandler : public LLCommandHandler, diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index 5d9971c16c..14b5d9af47 100755 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -53,7 +53,7 @@  #include "llviewerparcelmgr.h"  #include "llviewerregion.h" -static LLRegisterPanelClassWrapper<LLPanelPlaceProfile> t_place_profile("panel_place_profile"); +static LLPanelInjector<LLPanelPlaceProfile> t_place_profile("panel_place_profile");  // Statics for textures filenames  static std::string icon_pg; diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 8bb3ace2d9..499b9ab62e 100755 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -229,7 +229,7 @@ private:  }; -static LLRegisterPanelClassWrapper<LLPanelPlaces> t_places("panel_places"); +static LLPanelInjector<LLPanelPlaces> t_places("panel_places");  LLPanelPlaces::LLPanelPlaces()  	:	LLPanel(), diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp index 381c11348d..47e46a968f 100755 --- a/indra/newview/llpanelsnapshotinventory.cpp +++ b/indra/newview/llpanelsnapshotinventory.cpp @@ -60,7 +60,7 @@ private:  	void onSend();  }; -static LLRegisterPanelClassWrapper<LLPanelSnapshotInventory> panel_class("llpanelsnapshotinventory"); +static LLPanelInjector<LLPanelSnapshotInventory> panel_class("llpanelsnapshotinventory");  LLPanelSnapshotInventory::LLPanelSnapshotInventory()  { diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp index d153ff598d..43e38b95e2 100755 --- a/indra/newview/llpanelsnapshotlocal.cpp +++ b/indra/newview/llpanelsnapshotlocal.cpp @@ -63,7 +63,7 @@ private:  	void onSaveFlyoutCommit(LLUICtrl* ctrl);  }; -static LLRegisterPanelClassWrapper<LLPanelSnapshotLocal> panel_class("llpanelsnapshotlocal"); +static LLPanelInjector<LLPanelSnapshotLocal> panel_class("llpanelsnapshotlocal");  LLPanelSnapshotLocal::LLPanelSnapshotLocal()  { diff --git a/indra/newview/llpanelsnapshotoptions.cpp b/indra/newview/llpanelsnapshotoptions.cpp index 554fabe5b3..455c1c9e5f 100755 --- a/indra/newview/llpanelsnapshotoptions.cpp +++ b/indra/newview/llpanelsnapshotoptions.cpp @@ -56,7 +56,7 @@ private:  	void onSaveToComputer();  }; -static LLRegisterPanelClassWrapper<LLPanelSnapshotOptions> panel_class("llpanelsnapshotoptions"); +static LLPanelInjector<LLPanelSnapshotOptions> panel_class("llpanelsnapshotoptions");  LLPanelSnapshotOptions::LLPanelSnapshotOptions()  { diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp index f2bb8f530b..aa109e9a51 100755 --- a/indra/newview/llpanelsnapshotpostcard.cpp +++ b/indra/newview/llpanelsnapshotpostcard.cpp @@ -79,7 +79,7 @@ private:  	std::string mAgentEmail;  }; -static LLRegisterPanelClassWrapper<LLPanelSnapshotPostcard> panel_class("llpanelsnapshotpostcard"); +static LLPanelInjector<LLPanelSnapshotPostcard> panel_class("llpanelsnapshotpostcard");  LLPanelSnapshotPostcard::LLPanelSnapshotPostcard()  :	mHasFirstMsgFocus(false) diff --git a/indra/newview/llpanelsnapshotprofile.cpp b/indra/newview/llpanelsnapshotprofile.cpp index a706318369..8949eb73eb 100755 --- a/indra/newview/llpanelsnapshotprofile.cpp +++ b/indra/newview/llpanelsnapshotprofile.cpp @@ -64,7 +64,7 @@ private:  	void onSend();  }; -static LLRegisterPanelClassWrapper<LLPanelSnapshotProfile> panel_class("llpanelsnapshotprofile"); +static LLPanelInjector<LLPanelSnapshotProfile> panel_class("llpanelsnapshotprofile");  LLPanelSnapshotProfile::LLPanelSnapshotProfile()  { diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp index 6be2ea6481..6f0a1624a7 100755 --- a/indra/newview/llpanelvoicedevicesettings.cpp +++ b/indra/newview/llpanelvoicedevicesettings.cpp @@ -40,7 +40,7 @@  #include "lluictrlfactory.h" -static LLRegisterPanelClassWrapper<LLPanelVoiceDeviceSettings> t_panel_group_general("panel_voice_device_settings"); +static LLPanelInjector<LLPanelVoiceDeviceSettings> t_panel_group_general("panel_voice_device_settings");  static const std::string DEFAULT_DEVICE("Default"); diff --git a/indra/newview/llpanelvoiceeffect.cpp b/indra/newview/llpanelvoiceeffect.cpp index 5fec6d967d..7da553801a 100755 --- a/indra/newview/llpanelvoiceeffect.cpp +++ b/indra/newview/llpanelvoiceeffect.cpp @@ -36,7 +36,7 @@  #include "lltransientfloatermgr.h"  #include "llvoiceclient.h" -static LLRegisterPanelClassWrapper<LLPanelVoiceEffect> t_panel_voice_effect("panel_voice_effect"); +static LLPanelInjector<LLPanelVoiceEffect> t_panel_voice_effect("panel_voice_effect");  LLPanelVoiceEffect::LLPanelVoiceEffect()  	: mVoiceEffectCombo(NULL) diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp index aa3ed22bee..edb624e3aa 100755 --- a/indra/newview/llpanelwearing.cpp +++ b/indra/newview/llpanelwearing.cpp @@ -151,7 +151,7 @@ protected:  std::string LLPanelAppearanceTab::sFilterSubString = LLStringUtil::null; -static LLRegisterPanelClassWrapper<LLPanelWearing> t_panel_wearing("panel_wearing"); +static LLPanelInjector<LLPanelWearing> t_panel_wearing("panel_wearing");  LLPanelWearing::LLPanelWearing()  	:	LLPanelAppearanceTab() diff --git a/indra/newview/llpopupview.cpp b/indra/newview/llpopupview.cpp index 08829c1184..153f0930c2 100755 --- a/indra/newview/llpopupview.cpp +++ b/indra/newview/llpopupview.cpp @@ -27,7 +27,7 @@  #include "llpopupview.h" -static LLRegisterPanelClassWrapper<LLPopupView> r("popup_holder"); +static LLPanelInjector<LLPopupView> r("popup_holder");  bool view_visible_and_enabled(LLView* viewp)  { diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp index 989f0b0e60..1257ee7f94 100755 --- a/indra/newview/llprogressview.cpp +++ b/indra/newview/llprogressview.cpp @@ -59,7 +59,7 @@ S32 gStartImageWidth = 1;  S32 gStartImageHeight = 1;  const F32 FADE_TO_WORLD_TIME = 1.0f; -static LLRegisterPanelClassWrapper<LLProgressView> r("progress_view"); +static LLPanelInjector<LLProgressView> r("progress_view");  // XUI: Translate  LLProgressView::LLProgressView()  diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index df413ab849..ec6a1d9bdc 100755 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -49,7 +49,7 @@  #include "llvoavatarself.h"  #include "llviewerwearable.h" -static LLRegisterPanelClassWrapper<LLSidepanelAppearance> t_appearance("sidepanel_appearance"); +static LLPanelInjector<LLSidepanelAppearance> t_appearance("sidepanel_appearance");  class LLCurrentlyWornFetchObserver : public LLInventoryFetchItemsObserver  { diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index fe844ce5e4..1ce691f696 100755 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -59,7 +59,7 @@  #include "llviewernetwork.h"  #include "llweb.h" -static LLRegisterPanelClassWrapper<LLSidepanelInventory> t_inventory("sidepanel_inventory"); +static LLPanelInjector<LLSidepanelInventory> t_inventory("sidepanel_inventory");  //  // Constants diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp index 92c2863ffd..e52b2f2559 100755 --- a/indra/newview/llsidepaneliteminfo.cpp +++ b/indra/newview/llsidepaneliteminfo.cpp @@ -127,7 +127,7 @@ void LLObjectInventoryObserver::inventoryChanged(LLViewerObject* object,  /// Class LLSidepanelItemInfo  ///---------------------------------------------------------------------------- -static LLRegisterPanelClassWrapper<LLSidepanelItemInfo> t_item_info("sidepanel_item_info"); +static LLPanelInjector<LLSidepanelItemInfo> t_item_info("sidepanel_item_info");  // Default constructor  LLSidepanelItemInfo::LLSidepanelItemInfo(const LLPanel::Params& p) diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp index 9be6d0c5f1..4428098929 100755 --- a/indra/newview/llsidepaneltaskinfo.cpp +++ b/indra/newview/llsidepaneltaskinfo.cpp @@ -71,7 +71,7 @@  LLSidepanelTaskInfo* LLSidepanelTaskInfo::sActivePanel = NULL; -static LLRegisterPanelClassWrapper<LLSidepanelTaskInfo> t_task_info("sidepanel_task_info"); +static LLPanelInjector<LLSidepanelTaskInfo> t_task_info("sidepanel_task_info");  // Default constructor  LLSidepanelTaskInfo::LLSidepanelTaskInfo() diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 7d48634381..9824f2dd38 100755 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -131,6 +131,7 @@ LLToastNotifyPanel::~LLToastNotifyPanel()  	mButtonClickConnection.disconnect();  	std::for_each(mBtnCallbackData.begin(), mBtnCallbackData.end(), DeletePointer()); +	mBtnCallbackData.clear();  	if (mIsTip)  		{  			LLNotifications::getInstance()->cancel(mNotification); diff --git a/indra/newview/lltool.h b/indra/newview/lltool.h index ecc435d844..c5bad9d532 100755 --- a/indra/newview/lltool.h +++ b/indra/newview/lltool.h @@ -39,7 +39,7 @@ class LLView;  class LLPanel;  class LLTool -:	public LLMouseHandler +:	public LLMouseHandler, public LLThreadSafeRefCount  {  public:  	LLTool( const std::string& name, LLToolComposite* composite = NULL ); diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp index 5270c3d33f..b75d6b3dcb 100755 --- a/indra/newview/lltoolcomp.cpp +++ b/indra/newview/lltoolcomp.cpp @@ -61,7 +61,7 @@ extern LLControlGroup gSavedSettings;  // we use this in various places instead of NULL -static LLTool* sNullTool = new LLTool(std::string("null"), NULL);  +static LLPointer<LLTool> sNullTool(new LLTool(std::string("null"), NULL));   //-----------------------------------------------------------------------  // LLToolComposite diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp index 485b0dc8ad..600b44d371 100755 --- a/indra/newview/llvograss.cpp +++ b/indra/newview/llvograss.cpp @@ -241,6 +241,7 @@ void LLVOGrass::initClass()  void LLVOGrass::cleanupClass()  {  	for_each(sSpeciesTable.begin(), sSpeciesTable.end(), DeletePairedPointer()); +	sSpeciesTable.clear();  }  U32 LLVOGrass::processUpdateMessage(LLMessageSystem *mesgsys, diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index 6a89100bf5..b82c4fe769 100755 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -269,6 +269,7 @@ void LLVOTree::initClass()  void LLVOTree::cleanupClass()  {  	std::for_each(sSpeciesTable.begin(), sSpeciesTable.end(), DeletePairedPointer()); +	sSpeciesTable.clear();  }  U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys, diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 103668d051..85614f397c 100755 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -143,23 +143,24 @@ LLViewerRegion* LLWorld::addRegion(const U64 ®ion_handle, const LLHost &host)  	std::string seedUrl;  	if (regionp)  	{ -		llinfos << "Region exists, removing it " << llendl;  		LLHost old_host = regionp->getHost();  		// region already exists!  		if (host == old_host && regionp->isAlive())  		{  			// This is a duplicate for the same host and it's alive, don't bother. +			llinfos << "Region already exists and is alive, using existing region" << llendl;  			return regionp;  		}  		if (host != old_host)  		{  			llwarns << "LLWorld::addRegion exists, but old host " << old_host -					<< " does not match new host " << host << llendl; +					<< " does not match new host " << host  +					<< ", removing old region and creating new" << llendl;  		}  		if (!regionp->isAlive())  		{ -			llwarns << "LLWorld::addRegion exists, but isn't alive" << llendl; +			llwarns << "LLWorld::addRegion exists, but isn't alive. Removing old region and creating new" << llendl;  		}  		// Save capabilities seed URL @@ -169,14 +170,18 @@ LLViewerRegion* LLWorld::addRegion(const U64 ®ion_handle, const LLHost &host)  		// matches, because all the agent state for the new camera is completely different.  		removeRegion(old_host);  	} +	else +	{ +		llinfos << "Region does not exist, creating new one" << llendl; +	}  	U32 iindex = 0;  	U32 jindex = 0;  	from_region_handle(region_handle, &iindex, &jindex);  	S32 x = (S32)(iindex/mWidth);  	S32 y = (S32)(jindex/mWidth); -	llinfos << "Adding new region (" << x << ":" << y << ")" << llendl; -	llinfos << "Host: " << host << llendl; +	llinfos << "Adding new region (" << x << ":" << y << ")"  +		<< " on host: " << host << llendl;  	LLVector3d origin_global;  | 
