diff options
145 files changed, 1575 insertions, 1800 deletions
| diff --git a/indra/llcommon/llapp.h b/indra/llcommon/llapp.h index 27a52cdd99..e5b8edf9c3 100644 --- a/indra/llcommon/llapp.h +++ b/indra/llcommon/llapp.h @@ -235,7 +235,7 @@ public:  	// Child process handling (Unix only for now)  	//  	// Set a callback to be run on exit of a child process -	// WARNING!  This callback is run from the signal handler due to the extreme crappiness of +	// WARNING!  This callback is run from the signal handler due to  	// Linux threading requiring waitpid() to be called from the thread that spawned the process.  	// At some point I will make this more behaved, but I'm not going to fix this right now - djs  	void setChildCallback(pid_t pid, LLAppChildCallback callback); diff --git a/indra/llcommon/lluuid.h b/indra/llcommon/lluuid.h index c78fb12018..3a0d66e4a5 100644 --- a/indra/llcommon/lluuid.h +++ b/indra/llcommon/lluuid.h @@ -133,6 +133,7 @@ public:  	U8 mData[UUID_BYTES];  }; +typedef std::vector<LLUUID> uuid_vec_t;  // Construct  inline LLUUID::LLUUID() diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp index ec21ae40e7..b08cb28218 100644 --- a/indra/llinventory/llparcel.cpp +++ b/indra/llinventory/llparcel.cpp @@ -452,7 +452,7 @@ BOOL LLParcel::allowTerraformBy(const LLUUID &agent_id) const  bool LLParcel::isAgentBlockedFromParcel(LLParcel* parcelp,                                          const LLUUID& agent_id, -                                        const std::vector<LLUUID>& group_ids, +                                        const uuid_vec_t& group_ids,                                          const BOOL is_agent_identified,                                          const BOOL is_agent_transacted,                                          const BOOL is_agent_ageverified) diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h index 2a9a596912..4ee9d9b40f 100644 --- a/indra/llinventory/llparcel.h +++ b/indra/llinventory/llparcel.h @@ -258,7 +258,7 @@ public:  	void setMediaURLResetTimer(F32 time);  	virtual void	setLocalID(S32 local_id); -	// blow away all the extra crap lurking in parcels, including urls, access lists, etc +	// blow away all the extra stuff lurking in parcels, including urls, access lists, etc  	void clearParcel();  	// This value is not persisted out to the parcel file, it is only @@ -538,7 +538,7 @@ public:  	static bool isAgentBlockedFromParcel(LLParcel* parcelp,   									const LLUUID& agent_id, -									const std::vector<LLUUID>& group_ids, +									const uuid_vec_t& group_ids,  									const BOOL is_agent_identified,  									const BOOL is_agent_transacted,  									const BOOL is_agent_ageverified); diff --git a/indra/llmessage/lltransfersourceasset.cpp b/indra/llmessage/lltransfersourceasset.cpp index 8f36d516d7..abfb432020 100644 --- a/indra/llmessage/lltransfersourceasset.cpp +++ b/indra/llmessage/lltransfersourceasset.cpp @@ -131,7 +131,7 @@ LLTSCode LLTransferSourceAsset::dataCallback(const S32 packet_id,  	*data_handle = tmpp;  	if (!vf.read(tmpp, max_bytes))		/* Flawfinder: Ignore */  	{ -		// Crap, read failure, need to deal with it. +		// Read failure, need to deal with it.  		delete[] tmpp;  		*data_handle = NULL;  		returned_bytes = 0; diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp index 2e5aeec41d..bc34012267 100644 --- a/indra/llui/llflatlistview.cpp +++ b/indra/llui/llflatlistview.cpp @@ -243,7 +243,7 @@ LLUUID LLFlatListView::getSelectedUUID() const  	}  } -void LLFlatListView::getSelectedUUIDs(std::vector<LLUUID>& selected_uuids) const +void LLFlatListView::getSelectedUUIDs(uuid_vec_t& selected_uuids) const  {  	if (mSelectedItemPairs.empty()) return; diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h index 5a1ddc2c59..dc6400c926 100644 --- a/indra/llui/llflatlistview.h +++ b/indra/llui/llflatlistview.h @@ -224,7 +224,7 @@ public:  	 * Get LLUUIDs associated with selected items  	 * @param selected_uuids An std::vector being populated with LLUUIDs associated with selected items  	 */ -	virtual void getSelectedUUIDs(std::vector<LLUUID>& selected_uuids) const; +	virtual void getSelectedUUIDs(uuid_vec_t& selected_uuids) const;  	/** Get the top selected item */  	virtual LLPanel* getSelectedItem() const; diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h index 39d1986461..6f0f83d4b9 100644 --- a/indra/llui/llmenugl.h +++ b/indra/llui/llmenugl.h @@ -295,7 +295,7 @@ private:  // class, by allowing another method to be specified which determines  // if the menu item should consider itself checked as true or not.  Be  // careful that the provided callback is fast - it needs to be VERY -// FUCKING EFFICIENT, because it may need to be checked a lot. +// EFFICIENT because it may need to be checked a lot.  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  class LLMenuItemCheckGL  diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 77caaaa425..bf0866a655 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -957,14 +957,14 @@ void LLScrollListCtrl::mouseOverHighlightNthItem(S32 target_index)  	}  } -S32	LLScrollListCtrl::selectMultiple( std::vector<LLUUID> ids ) +S32	LLScrollListCtrl::selectMultiple( uuid_vec_t ids )  {  	item_list::iterator iter;  	S32 count = 0;  	for (iter = mItemList.begin(); iter != mItemList.end(); iter++)  	{  		LLScrollListItem* item = *iter; -		std::vector<LLUUID>::iterator iditr; +		uuid_vec_t::iterator iditr;  		for(iditr = ids.begin(); iditr != ids.end(); ++iditr)  		{  			if (item->getEnabled() && (item->getUUID() == (*iditr))) diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index ebdc82115f..1f0ef585db 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -379,7 +379,7 @@ public:  	BOOL			getSortAscending() { return mSortColumns.empty() ? TRUE : mSortColumns.back().second; }  	BOOL			hasSortOrder() const; -	S32		selectMultiple( std::vector<LLUUID> ids ); +	S32		selectMultiple( uuid_vec_t ids );  	// conceptually const, but mutates mItemList  	void			updateSort() const;  	// sorts a list without affecting the permanent sort order (so further list insertions can be unsorted, for example) diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h index 55b221e716..52132c38d3 100644 --- a/indra/llwindow/llwindow.h +++ b/indra/llwindow/llwindow.h @@ -160,7 +160,7 @@ public:  	virtual void setLanguageTextInput( const LLCoordGL & pos ) {};  	virtual void updateLanguageTextInputArea() {}  	virtual void interruptLanguageTextInput() {} -	virtual void spawnWebBrowser(const std::string& escaped_url) {}; +	virtual void spawnWebBrowser(const std::string& escaped_url, bool async) {};  	static std::vector<std::string> getDynamicFallbackFontList(); diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 022b97f481..7026a3f7a6 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -3178,7 +3178,7 @@ S32 OSMessageBoxMacOSX(const std::string& text, const std::string& caption, U32  // Open a URL with the user's default web browser.  // Must begin with protocol identifier. -void LLWindowMacOSX::spawnWebBrowser(const std::string& escaped_url) +void LLWindowMacOSX::spawnWebBrowser(const std::string& escaped_url, bool async)  {  	bool found = false;  	S32 i; diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 7c6b324029..5ac74bb004 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -116,7 +116,7 @@ public:  	/*virtual*/ void allowLanguageTextInput(LLPreeditor *preeditor, BOOL b);  	/*virtual*/ void interruptLanguageTextInput(); -	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url); +	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url, bool async);  	static std::vector<std::string> getDynamicFallbackFontList(); diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp index 1f705f9e60..4d25b4134e 100644 --- a/indra/llwindow/llwindowsdl.cpp +++ b/indra/llwindow/llwindowsdl.cpp @@ -2465,7 +2465,7 @@ void exec_cmd(const std::string& cmd, const std::string& arg)  // Open a URL with the user's default web browser.  // Must begin with protocol identifier. -void LLWindowSDL::spawnWebBrowser(const std::string& escaped_url) +void LLWindowSDL::spawnWebBrowser(const std::string& escaped_url, bool async)  {  	llinfos << "spawn_web_browser: " << escaped_url << llendl; @@ -2543,6 +2543,7 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()  	// Use libfontconfig to find us a nice ordered list of fallback fonts  	// specific to this system.  	std::string final_fallback("/usr/share/fonts/truetype/kochi/kochi-gothic.ttf"); +	const int max_font_count_cutoff = 40; // fonts are expensive in the current system, don't enumerate an arbitrary number of them  	// Our 'ideal' font properties which define the sorting results.  	// slant=0 means Roman, index=0 means the first face in a font file  	// (the one we actually use), weight=80 means medium weight, @@ -2558,7 +2559,6 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()  	std::vector<std::string> rtns;  	FcFontSet *fs = NULL;  	FcPattern *sortpat = NULL; -	int font_count = 0;  	llinfos << "Getting system font list from FontConfig..." << llendl; @@ -2602,12 +2602,13 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()  		FcPatternDestroy(sortpat);  	} +	int found_font_count = 0;  	if (fs)  	{  		// Get the full pathnames to the fonts, where available,  		// which is what we really want. -		int i; -		for (i=0; i<fs->nfont; ++i) +		found_font_count = fs->nfont; +		for (int i=0; i<fs->nfont; ++i)  		{  			FcChar8 *filename;  			if (FcResultMatch == FcPatternGetString(fs->fonts[i], @@ -2616,7 +2617,8 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()  			    && filename)  			{  				rtns.push_back(std::string((const char*)filename)); -				++font_count; +				if (rtns.size() >= max_font_count_cutoff) +					break; // hit limit  			}  		}  		FcFontSetDestroy (fs); @@ -2629,7 +2631,7 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()  	{  		lldebugs << "  file: " << *it << llendl;  	} -	llinfos << "Using " << font_count << " system font(s)." << llendl; +	llinfos << "Using " << rtns.size() << "/" << found_font_count << " system fonts." << llendl;  	rtns.push_back(final_fallback);  	return rtns; diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h index e6bdd46a77..8e65a2f324 100644 --- a/indra/llwindow/llwindowsdl.h +++ b/indra/llwindow/llwindowsdl.h @@ -125,7 +125,7 @@ public:  	/*virtual*/ void *getPlatformWindow();  	/*virtual*/ void bringToFront(); -	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url); +	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url, bool async);  	static std::vector<std::string> getDynamicFallbackFontList(); diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 8df9dad581..d726c60018 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -2959,7 +2959,7 @@ S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 t  } -void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url ) +void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url, bool async)  {  	bool found = false;  	S32 i; @@ -2989,7 +2989,12 @@ void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url )  	// let the OS decide what to use to open the URL  	SHELLEXECUTEINFO sei = { sizeof( sei ) }; -	sei.fMask = SEE_MASK_FLAG_DDEWAIT; +	// NOTE: this assumes that SL will stick around long enough to complete the DDE message exchange +	// necessary for ShellExecuteEx to complete +	if (async) +	{ +		sei.fMask = SEE_MASK_ASYNCOK; +	}  	sei.nShow = SW_SHOWNORMAL;  	sei.lpVerb = L"open";  	sei.lpFile = url_utf16.c_str(); diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index 9d57735772..d4a3446515 100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -114,7 +114,7 @@ public:  	/*virtual*/ void setLanguageTextInput( const LLCoordGL & pos );  	/*virtual*/ void updateLanguageTextInputArea();  	/*virtual*/ void interruptLanguageTextInput(); -	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url); +	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url, bool async);  	LLWindowCallbacks::DragNDropResult completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url ); diff --git a/indra/lscript/lscript_execute/lscript_execute.cpp b/indra/lscript/lscript_execute/lscript_execute.cpp index e849fa9a6e..8de54aeda5 100644 --- a/indra/lscript/lscript_execute/lscript_execute.cpp +++ b/indra/lscript/lscript_execute/lscript_execute.cpp @@ -520,7 +520,7 @@ void LLScriptExecuteLSL2::callNextQueuedEventHandler(U64 event_register, const L  		}  		else  		{ -			llwarns << "Shit, somehow got an event that we're not registered for!" << llendl; +			llwarns << "Somehow got an event that we're not registered for!" << llendl;  		}  		delete eventdata;  	} diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index 85d6b2f5ff..436e077e9b 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -89,6 +89,7 @@ private:  	std::string mProfileDir;  	std::string mHostLanguage; +	std::string mUserAgent;  	bool mCookiesEnabled;  	bool mJavascriptEnabled;  	bool mPluginsEnabled; @@ -300,7 +301,7 @@ private:  		LLQtWebKit::getInstance()->addObserver( mBrowserWindowId, this );  		// append details to agent string -		LLQtWebKit::getInstance()->setBrowserAgentId( "LLPluginMedia Web Browser" ); +		LLQtWebKit::getInstance()->setBrowserAgentId( mUserAgent );  #if !LL_QTWEBKIT_USES_PIXMAPS  		// don't flip bitmap @@ -688,6 +689,7 @@ MediaPluginWebKit::MediaPluginWebKit(LLPluginInstance::sendMessageFunction host_  	mHostLanguage = "en";		// default to english  	mJavascriptEnabled = true;	// default to on  	mPluginsEnabled = true;		// default to on +	mUserAgent = "LLPluginMedia Web Browser";  }  MediaPluginWebKit::~MediaPluginWebKit() @@ -1103,8 +1105,8 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)  			}  			else if(message_name == "set_user_agent")  			{ -				std::string user_agent = message_in.getValue("user_agent"); -				LLQtWebKit::getInstance()->setBrowserAgentId( user_agent ); +				mUserAgent = message_in.getValue("user_agent"); +				LLQtWebKit::getInstance()->setBrowserAgentId( mUserAgent );  			}  			else if(message_name == "init_history")  			{ diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 9f474a39bc..73fb24e4eb 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -10369,7 +10369,7 @@        <key>Type</key>        <string>Boolean</string>        <key>Value</key> -      <integer>1</integer> +      <integer>0</integer>      </map>      <key>VivoxDebugLevel</key>      <map> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 4189ca20b9..a764932815 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -159,11 +159,11 @@ bool handleSlowMotionAnimation(const LLSD& newvalue)  {  	if (newvalue.asBoolean())  	{ -		gAgent.getAvatarObject()->setAnimTimeFactor(0.2f); +		gAgentAvatarp->setAnimTimeFactor(0.2f);  	}  	else  	{ -		gAgent.getAvatarObject()->setAnimTimeFactor(1.0f); +		gAgentAvatarp->setAnimTimeFactor(1.0f);  	}  	return true;  } @@ -207,8 +207,6 @@ LLAgent::LLAgent() :  	mDistanceTraveled(0.F),  	mLastPositionGlobal(LLVector3d::zero), -	mAvatarObject(NULL), -  	mRenderState(0),  	mTypingTimer(), @@ -294,7 +292,6 @@ void LLAgent::init()  //-----------------------------------------------------------------------------  void LLAgent::cleanup()  { -	mAvatarObject = NULL;  	mRegionp = NULL;  } @@ -315,7 +312,7 @@ LLAgent::~LLAgent()  //-----------------------------------------------------------------------------  void LLAgent::onAppFocusGained()  { -	if (CAMERA_MODE_MOUSELOOK == gAgentCamera.mCameraMode) +	if (CAMERA_MODE_MOUSELOOK == gAgentCamera.getCameraMode())  	{  		gAgentCamera.changeCameraToDefault();  		LLToolMgr::getInstance()->clearSavedTool(); @@ -325,12 +322,12 @@ void LLAgent::onAppFocusGained()  void LLAgent::ageChat()  { -	if (mAvatarObject.notNull()) +	if (isAgentAvatarValid())  	{  		// get amount of time since I last chatted -		F64 elapsed_time = (F64)mAvatarObject->mChatTimer.getElapsedTimeF32(); +		F64 elapsed_time = (F64)gAgentAvatarp->mChatTimer.getElapsedTimeF32();  		// add in frame time * 3 (so it ages 4x) -		mAvatarObject->mChatTimer.setAge(elapsed_time + (F64)gFrameDTClamped * (CHAT_AGE_FAST_RATE - 1.0)); +		gAgentAvatarp->mChatTimer.setAge(elapsed_time + (F64)gFrameDTClamped * (CHAT_AGE_FAST_RATE - 1.0));  	}  } @@ -517,20 +514,20 @@ BOOL LLAgent::getFlying() const  //-----------------------------------------------------------------------------  void LLAgent::setFlying(BOOL fly)  { -	if (mAvatarObject.notNull()) +	if (isAgentAvatarValid())  	{  		// *HACK: Don't allow to start the flying mode if we got ANIM_AGENT_STANDUP signal  		// because in this case we won't get a signal to start avatar flying animation and  		// it will be walking with flying mode "ON" indication. However we allow to switch  		// the flying mode off if we get ANIM_AGENT_STANDUP signal. See process_avatar_animation().  		// See EXT-2781. -		if(fly && mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_STANDUP) != mAvatarObject->mSignaledAnimations.end()) +		if(fly && gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_STANDUP) != gAgentAvatarp->mSignaledAnimations.end())  		{  			return;  		}  		// don't allow taking off while sitting -		if (fly && mAvatarObject->isSitting()) +		if (fly && gAgentAvatarp->isSitting())  		{  			return;  		} @@ -583,9 +580,9 @@ void LLAgent::toggleFlying()  bool LLAgent::enableFlying()  {  	BOOL sitting = FALSE; -	if (gAgent.getAvatarObject()) +	if (isAgentAvatarValid())  	{ -		sitting = gAgent.getAvatarObject()->isSitting(); +		sitting = gAgentAvatarp->isSitting();  	}  	return !sitting;  } @@ -755,9 +752,9 @@ void LLAgent::sendReliableMessage()  //-----------------------------------------------------------------------------  LLVector3 LLAgent::getVelocity() const  { -	if (mAvatarObject.notNull()) +	if (isAgentAvatarValid())  	{ -		return mAvatarObject->getVelocity(); +		return gAgentAvatarp->getVelocity();  	}  	else  	{ @@ -776,13 +773,13 @@ void LLAgent::setPositionAgent(const LLVector3 &pos_agent)  		llerrs << "setPositionAgent is not a number" << llendl;  	} -	if (mAvatarObject.notNull() && mAvatarObject->getParent()) +	if (isAgentAvatarValid() && gAgentAvatarp->getParent())  	{  		LLVector3 pos_agent_sitting;  		LLVector3d pos_agent_d; -		LLViewerObject *parent = (LLViewerObject*)mAvatarObject->getParent(); +		LLViewerObject *parent = (LLViewerObject*)gAgentAvatarp->getParent(); -		pos_agent_sitting = mAvatarObject->getPosition() * parent->getRotation() + parent->getPositionAgent(); +		pos_agent_sitting = gAgentAvatarp->getPosition() * parent->getRotation() + parent->getPositionAgent();  		pos_agent_d.setVec(pos_agent_sitting);  		mFrameAgent.setOrigin(pos_agent_sitting); @@ -803,9 +800,9 @@ void LLAgent::setPositionAgent(const LLVector3 &pos_agent)  //-----------------------------------------------------------------------------  const LLVector3d &LLAgent::getPositionGlobal() const  { -	if (mAvatarObject.notNull() && !mAvatarObject->mDrawable.isNull()) +	if (isAgentAvatarValid() && !gAgentAvatarp->mDrawable.isNull())  	{ -		mPositionGlobal = getPosGlobalFromAgent(mAvatarObject->getRenderPosition()); +		mPositionGlobal = getPosGlobalFromAgent(gAgentAvatarp->getRenderPosition());  	}  	else  	{ @@ -820,9 +817,9 @@ const LLVector3d &LLAgent::getPositionGlobal() const  //-----------------------------------------------------------------------------  const LLVector3 &LLAgent::getPositionAgent()  { -	if(mAvatarObject.notNull() && !mAvatarObject->mDrawable.isNull()) +	if (isAgentAvatarValid() && !gAgentAvatarp->mDrawable.isNull())  	{ -		mFrameAgent.setOrigin(mAvatarObject->getRenderPosition());	 +		mFrameAgent.setOrigin(gAgentAvatarp->getRenderPosition());	  	}  	return mFrameAgent.getOrigin(); @@ -948,21 +945,21 @@ LLVector3 LLAgent::getReferenceUpVector()  {  	// this vector is in the coordinate frame of the avatar's parent object, or the world if none  	LLVector3 up_vector = LLVector3::z_axis; -	if (mAvatarObject.notNull() &&  -		mAvatarObject->getParent() && -		mAvatarObject->mDrawable.notNull()) +	if (isAgentAvatarValid() &&  +		gAgentAvatarp->getParent() && +		gAgentAvatarp->mDrawable.notNull())  	{ -		U32 camera_mode = gAgentCamera.mCameraAnimating ? gAgentCamera.mLastCameraMode : gAgentCamera.mCameraMode; +		U32 camera_mode = gAgentCamera.getCameraAnimating() ? gAgentCamera.getLastCameraMode() : gAgentCamera.getCameraMode();  		// and in third person...  		if (camera_mode == CAMERA_MODE_THIRD_PERSON)  		{  			// make the up vector point to the absolute +z axis -			up_vector = up_vector * ~((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation(); +			up_vector = up_vector * ~((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();  		}  		else if (camera_mode == CAMERA_MODE_MOUSELOOK)  		{  			// make the up vector point to the avatar's +z axis -			up_vector = up_vector * mAvatarObject->mDrawable->getRotation(); +			up_vector = up_vector * gAgentAvatarp->mDrawable->getRotation();  		}  	} @@ -998,7 +995,7 @@ F32 LLAgent::clampPitchToLimits(F32 angle)  	F32 angle_from_skyward = acos( mFrameAgent.getAtAxis() * skyward ); -	if (mAvatarObject.notNull() && mAvatarObject->isSitting()) +	if (isAgentAvatarValid() && gAgentAvatarp->isSitting())  	{  		look_down_limit = 130.f * DEG_TO_RAD;  	} @@ -1076,17 +1073,6 @@ void LLAgent::setKey(const S32 direction, S32 &key)  //-----------------------------------------------------------------------------  U32 LLAgent::getControlFlags()  { -/* -	// HACK -- avoids maintenance of control flags when camera mode is turned on or off, -	// only worries about it when the flags are measured -	if (mCameraMode == CAMERA_MODE_MOUSELOOK)  -	{ -		if ( !(mControlFlags & AGENT_CONTROL_MOUSELOOK) ) -		{ -			mControlFlags |= AGENT_CONTROL_MOUSELOOK; -		} -	} -*/  	return mControlFlags;  } @@ -1182,10 +1168,9 @@ void LLAgent::clearAFK()  	// Gods can sometimes get into away state (via gestures)  	// without setting the appropriate control flag. JC -	LLVOAvatar* av = mAvatarObject;  	if (mControlFlags & AGENT_CONTROL_AWAY -		|| (av -			&& (av->mSignaledAnimations.find(ANIM_AGENT_AWAY) != av->mSignaledAnimations.end()))) +		|| (isAgentAvatarValid() +			&& (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AWAY) != gAgentAvatarp->mSignaledAnimations.end())))  	{  		sendAnimationRequest(ANIM_AGENT_AWAY, ANIM_REQUEST_STOP);  		clearControlFlags(AGENT_CONTROL_AWAY); @@ -1246,7 +1231,7 @@ BOOL LLAgent::getBusy() const  //-----------------------------------------------------------------------------  void LLAgent::startAutoPilotGlobal(const LLVector3d &target_global, const std::string& behavior_name, const LLQuaternion *target_rotation, void (*finish_callback)(BOOL, void *),  void *callback_data, F32 stop_distance, F32 rot_threshold)  { -	if (!gAgent.getAvatarObject()) +	if (!isAgentAvatarValid())  	{  		return;  	} @@ -1307,7 +1292,7 @@ void LLAgent::startAutoPilotGlobal(const LLVector3d &target_global, const std::s  	LLViewerObject *obj;  	LLWorld::getInstance()->resolveStepHeightGlobal(NULL, target_global, traceEndPt, targetOnGround, groundNorm, &obj); -	F64 target_height = llmax((F64)gAgent.getAvatarObject()->getPelvisToFoot(), target_global.mdV[VZ] - targetOnGround.mdV[VZ]); +	F64 target_height = llmax((F64)gAgentAvatarp->getPelvisToFoot(), target_global.mdV[VZ] - targetOnGround.mdV[VZ]);  	// clamp z value of target to minimum height above ground  	mAutoPilotTargetGlobal.mdV[VZ] = targetOnGround.mdV[VZ] + target_height; @@ -1407,12 +1392,9 @@ void LLAgent::autoPilot(F32 *delta_yaw)  			mAutoPilotTargetGlobal = object->getPositionGlobal();  		} -		if (mAvatarObject.isNull()) -		{ -			return; -		} +		if (!isAgentAvatarValid()) return; -		if (mAvatarObject->mInAir) +		if (gAgentAvatarp->mInAir)  		{  			setFlying(TRUE);  		} @@ -1488,9 +1470,9 @@ void LLAgent::autoPilot(F32 *delta_yaw)  		// If we're flying, handle autopilot points above or below you.  		if (getFlying() && xy_distance < AUTOPILOT_HEIGHT_ADJUST_DISTANCE)  		{ -			if (mAvatarObject.notNull()) +			if (isAgentAvatarValid())  			{ -				F64 current_height = mAvatarObject->getPositionGlobal().mdV[VZ]; +				F64 current_height = gAgentAvatarp->getPositionGlobal().mdV[VZ];  				F32 delta_z = (F32)(mAutoPilotTargetGlobal.mdV[VZ] - current_height);  				F32 slope = delta_z / xy_distance;  				if (slope > 0.45f && delta_z > 6.f) @@ -1571,9 +1553,9 @@ void LLAgent::propagate(const F32 dt)  	pitch(PITCH_RATE * mPitchKey * dt);  	// handle auto-land behavior -	if (mAvatarObject.notNull()) +	if (isAgentAvatarValid())  	{ -		BOOL in_air = mAvatarObject->mInAir; +		BOOL in_air = gAgentAvatarp->mInAir;  		LLVector3 land_vel = getVelocity();  		land_vel.mV[VZ] = 0.f; @@ -1626,29 +1608,6 @@ std::ostream& operator<<(std::ostream &s, const LLAgent &agent)  	return s;  } - -// ------------------- Beginning of legacy LLCamera hack ---------------------- -// This section is included for legacy LLCamera support until -// it is no longer needed.  Some legacy code must exist in  -// non-legacy functions, and is labeled with "// legacy" comments. - -//----------------------------------------------------------------------------- -// setAvatarObject() -//----------------------------------------------------------------------------- -void LLAgent::setAvatarObject(LLVOAvatarSelf *avatar)			 -{  -	mAvatarObject = avatar; - -	if (!avatar) -	{ -		llinfos << "Setting LLAgent::mAvatarObject to NULL" << llendl; -		return; -	} -	 -	gAgentCamera.setAvatarObject(avatar); -	gAgentWearables.setAvatarObject(avatar); -} -  // TRUE if your own avatar needs to be rendered.  Usually only  // in third person and build.  //----------------------------------------------------------------------------- @@ -1768,14 +1727,14 @@ U8 LLAgent::getRenderState()  //-----------------------------------------------------------------------------  void LLAgent::endAnimationUpdateUI()  { -	if (gAgentCamera.mCameraMode == gAgentCamera.mLastCameraMode) +	if (gAgentCamera.getCameraMode() == gAgentCamera.getLastCameraMode())  	{  		// We're already done endAnimationUpdateUI for this transition.  		return;  	}  	// clean up UI from mode we're leaving -	if (gAgentCamera.mLastCameraMode == CAMERA_MODE_MOUSELOOK ) +	if (gAgentCamera.getLastCameraMode() == CAMERA_MODE_MOUSELOOK )  	{  		// show mouse cursor  		gViewerWindow->showCursor(); @@ -1820,26 +1779,26 @@ void LLAgent::endAnimationUpdateUI()  		}  		// Disable mouselook-specific animations -		if (mAvatarObject.notNull()) +		if (isAgentAvatarValid())  		{ -			if( mAvatarObject->isAnyAnimationSignaled(AGENT_GUN_AIM_ANIMS, NUM_AGENT_GUN_AIM_ANIMS) ) +			if( gAgentAvatarp->isAnyAnimationSignaled(AGENT_GUN_AIM_ANIMS, NUM_AGENT_GUN_AIM_ANIMS) )  			{ -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AIM_RIFLE_R) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AIM_RIFLE_R) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_AIM_RIFLE_R, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_HOLD_RIFLE_R, ANIM_REQUEST_START);  				} -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AIM_HANDGUN_R) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AIM_HANDGUN_R) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_AIM_HANDGUN_R, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_HOLD_HANDGUN_R, ANIM_REQUEST_START);  				} -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AIM_BAZOOKA_R) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AIM_BAZOOKA_R) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_AIM_BAZOOKA_R, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_HOLD_BAZOOKA_R, ANIM_REQUEST_START);  				} -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AIM_BOW_L) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AIM_BOW_L) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_AIM_BOW_L, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_HOLD_BOW_L, ANIM_REQUEST_START); @@ -1847,7 +1806,7 @@ void LLAgent::endAnimationUpdateUI()  			}  		}  	} -	else if(gAgentCamera.mLastCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR) +	else if (gAgentCamera.getLastCameraMode() == CAMERA_MODE_CUSTOMIZE_AVATAR)  	{  		// make sure we ask to save changes @@ -1858,7 +1817,7 @@ void LLAgent::endAnimationUpdateUI()  			gMorphView->setVisible( FALSE );  		} -		if (mAvatarObject.notNull()) +		if (isAgentAvatarValid())  		{  			if(mCustomAnim)  			{ @@ -1875,7 +1834,7 @@ void LLAgent::endAnimationUpdateUI()  	//---------------------------------------------------------------------  	// Set up UI for mode we're entering  	//--------------------------------------------------------------------- -	if (gAgentCamera.mCameraMode == CAMERA_MODE_MOUSELOOK) +	if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK)  	{  		// hide menus  		gMenuBarView->setVisible(FALSE); @@ -1890,7 +1849,7 @@ void LLAgent::endAnimationUpdateUI()  		LLPanelStandStopFlying::getInstance()->setVisible(FALSE);  		// clear out camera lag effect -		gAgentCamera.mCameraLag.clearVec(); +		gAgentCamera.clearCameraLag();  		// JC - Added for always chat in third person option  		gFocusMgr.setKeyboardFocus(NULL); @@ -1918,49 +1877,49 @@ void LLAgent::endAnimationUpdateUI()  		gConsole->setVisible( TRUE ); -		if (mAvatarObject.notNull()) +		if (isAgentAvatarValid())  		{  			// Trigger mouselook-specific animations -			if( mAvatarObject->isAnyAnimationSignaled(AGENT_GUN_HOLD_ANIMS, NUM_AGENT_GUN_HOLD_ANIMS) ) +			if( gAgentAvatarp->isAnyAnimationSignaled(AGENT_GUN_HOLD_ANIMS, NUM_AGENT_GUN_HOLD_ANIMS) )  			{ -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_HOLD_RIFLE_R) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_HOLD_RIFLE_R) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_HOLD_RIFLE_R, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_AIM_RIFLE_R, ANIM_REQUEST_START);  				} -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_HOLD_HANDGUN_R) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_HOLD_HANDGUN_R) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_HOLD_HANDGUN_R, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_AIM_HANDGUN_R, ANIM_REQUEST_START);  				} -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_HOLD_BAZOOKA_R) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_HOLD_BAZOOKA_R) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_HOLD_BAZOOKA_R, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_AIM_BAZOOKA_R, ANIM_REQUEST_START);  				} -				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_HOLD_BOW_L) != mAvatarObject->mSignaledAnimations.end()) +				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_HOLD_BOW_L) != gAgentAvatarp->mSignaledAnimations.end())  				{  					sendAnimationRequest(ANIM_AGENT_HOLD_BOW_L, ANIM_REQUEST_STOP);  					sendAnimationRequest(ANIM_AGENT_AIM_BOW_L, ANIM_REQUEST_START);  				}  			} -			if (mAvatarObject->getParent()) +			if (gAgentAvatarp->getParent())  			{  				LLVector3 at_axis = LLViewerCamera::getInstance()->getAtAxis(); -				LLViewerObject* root_object = (LLViewerObject*)mAvatarObject->getRoot(); +				LLViewerObject* root_object = (LLViewerObject*)gAgentAvatarp->getRoot();  				if (root_object->flagCameraDecoupled())  				{  					resetAxes(at_axis);  				}  				else  				{ -					resetAxes(at_axis * ~((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation()); +					resetAxes(at_axis * ~((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation());  				}  			}  		}  	} -	else if (gAgentCamera.mCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR) +	else if (gAgentCamera.getCameraMode() == CAMERA_MODE_CUSTOMIZE_AVATAR)  	{  		LLToolMgr::getInstance()->setCurrentToolset(gFaceEditToolset); @@ -1970,23 +1929,22 @@ void LLAgent::endAnimationUpdateUI()  		}  		// freeze avatar -		if (mAvatarObject.notNull()) +		if (isAgentAvatarValid())  		{ -			mPauseRequest = mAvatarObject->requestPause(); +			mPauseRequest = gAgentAvatarp->requestPause();  		}  	} -	if (getAvatarObject()) +	if (isAgentAvatarValid())  	{ -		getAvatarObject()->updateAttachmentVisibility(gAgentCamera.mCameraMode); +		gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());  	}  	gFloaterTools->dirty();  	// Don't let this be called more than once if the camera  	// mode hasn't changed.  --JC -	gAgentCamera.mLastCameraMode = gAgentCamera.mCameraMode; - +	gAgentCamera.updateLastCamera();  }  //----------------------------------------------------------------------------- @@ -2055,10 +2013,10 @@ void LLAgent::setStartPosition( U32 location_id )      LLVector3 agent_pos = getPositionAgent(); -    if (mAvatarObject.notNull()) +    if (isAgentAvatarValid())      {          // the z height is at the agent's feet -        agent_pos.mV[VZ] -= 0.5f * mAvatarObject->mBodySize.mV[VZ]; +        agent_pos.mV[VZ] -= 0.5f * gAgentAvatarp->mBodySize.mV[VZ];      }      agent_pos.mV[VX] = llclamp( agent_pos.mV[VX], INSET, REGION_WIDTH - INSET ); @@ -2165,7 +2123,7 @@ void LLAgent::onAnimStop(const LLUUID& id)  		setControlFlags(AGENT_CONTROL_FINISH_ANIM);  		// now trigger dusting self off animation -		if (mAvatarObject.notNull() && !mAvatarObject->mBelowWater && rand() % 3 == 0) +		if (isAgentAvatarValid() && !gAgentAvatarp->mBelowWater && rand() % 3 == 0)  			sendAnimationRequest( ANIM_AGENT_BRUSH, ANIM_REQUEST_START );  	}  	else if (id == ANIM_AGENT_PRE_JUMP || id == ANIM_AGENT_LAND || id == ANIM_AGENT_MEDIUM_LAND) @@ -2364,9 +2322,9 @@ void LLAgent::buildFullnameAndTitle(std::string& name) const  		name.erase(0, name.length());  	} -	if (mAvatarObject.notNull()) +	if (isAgentAvatarValid())  	{ -		name += mAvatarObject->getFullname(); +		name += gAgentAvatarp->getFullname();  	}  } @@ -2512,14 +2470,14 @@ BOOL LLAgent::canJoinGroups() const  LLQuaternion LLAgent::getHeadRotation()  { -	if (mAvatarObject.isNull() || !mAvatarObject->mPelvisp || !mAvatarObject->mHeadp) +	if (!isAgentAvatarValid() || !gAgentAvatarp->mPelvisp || !gAgentAvatarp->mHeadp)  	{  		return LLQuaternion::DEFAULT;  	}  	if (!gAgentCamera.cameraMouselook())  	{ -		return mAvatarObject->getRotation(); +		return gAgentAvatarp->getRotation();  	}  	// We must be in mouselook @@ -2528,9 +2486,9 @@ LLQuaternion LLAgent::getHeadRotation()  	LLVector3 left = up % look_dir;  	LLQuaternion rot(look_dir, left, up); -	if (mAvatarObject->getParent()) +	if (gAgentAvatarp->getParent())  	{ -		rot = rot * ~mAvatarObject->getParent()->getRotation(); +		rot = rot * ~gAgentAvatarp->getParent()->getRotation();  	}  	return rot; @@ -3153,8 +3111,7 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *  {  	gAgentQueryManager.mNumPendingQueries--; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp || avatarp->isDead()) +	if (!isAgentAvatarValid() || gAgentAvatarp->isDead())  	{  		llwarns << "No avatar for user in cached texture update!" << llendl;  		return; @@ -3187,27 +3144,27 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *  			if (texture_id.notNull())  			{  				//llinfos << "Received cached texture " << (U32)texture_index << ": " << texture_id << llendl; -				avatarp->setCachedBakedTexture(LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)texture_index), texture_id); -				//avatarp->setTETexture( LLVOAvatar::sBakedTextureIndices[texture_index], texture_id ); +				gAgentAvatarp->setCachedBakedTexture(LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)texture_index), texture_id); +				//gAgentAvatarp->setTETexture( LLVOAvatar::sBakedTextureIndices[texture_index], texture_id );  				gAgentQueryManager.mActiveCacheQueries[texture_index] = 0;  				num_results++;  			}  			else  			{  				// no cache of this bake. request upload. -				avatarp->requestLayerSetUpload((EBakedTextureIndex)texture_index); +				gAgentAvatarp->requestLayerSetUpload((EBakedTextureIndex)texture_index);  			}  		}  	}  	llinfos << "Received cached texture response for " << num_results << " textures." << llendl; -	avatarp->updateMeshTextures(); +	gAgentAvatarp->updateMeshTextures();  	if (gAgentQueryManager.mNumPendingQueries == 0)  	{  		// RN: not sure why composites are disabled at this point -		avatarp->setCompositeUpdatesEnabled(TRUE); +		gAgentAvatarp->setCompositeUpdatesEnabled(TRUE);  		gAgent.sendAgentSetAppearance();  	}  } @@ -3260,11 +3217,10 @@ BOOL LLAgent::getHomePosGlobal( LLVector3d* pos_global )  void LLAgent::clearVisualParams(void *data)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		avatarp->clearVisualParamWeights(); -		avatarp->updateVisualParams(); +		gAgentAvatarp->clearVisualParamWeights(); +		gAgentAvatarp->updateVisualParams();  	}  } @@ -3288,16 +3244,15 @@ bool LLAgent::teleportCore(bool is_local)  	// sync with other viewers. Discuss in DEV-14145/VWR-6744 before reenabling.  	// Stop all animation before actual teleporting  -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -        if (avatarp) +        if (isAgentAvatarValid())  	{ -		for ( LLVOAvatar::AnimIterator anim_it= avatarp->mPlayingAnimations.begin(); -		      anim_it != avatarp->mPlayingAnimations.end(); +		for ( LLVOAvatar::AnimIterator anim_it= gAgentAvatarp->mPlayingAnimations.begin(); +		      anim_it != gAgentAvatarp->mPlayingAnimations.end();  		      ++anim_it)                 { -                       avatarp->stopMotion(anim_it->first); +                       gAgentAvatarp->stopMotion(anim_it->first);                 } -               avatarp->processAnimationStateChanges(); +               gAgentAvatarp->processAnimationStateChanges();         }  #endif @@ -3490,13 +3445,11 @@ void LLAgent::stopCurrentAnimations()  {  	// This function stops all current overriding animations on this  	// avatar, propagating this change back to the server. - -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{  		for ( LLVOAvatar::AnimIterator anim_it = -			      avatarp->mPlayingAnimations.begin(); -		      anim_it != avatarp->mPlayingAnimations.end(); +			      gAgentAvatarp->mPlayingAnimations.begin(); +		      anim_it != gAgentAvatarp->mPlayingAnimations.end();  		      anim_it++)  		{  			if (anim_it->first == @@ -3509,7 +3462,7 @@ void LLAgent::stopCurrentAnimations()  			else  			{  				// stop this animation locally -				avatarp->stopMotion(anim_it->first, TRUE); +				gAgentAvatarp->stopMotion(anim_it->first, TRUE);  				// ...and tell the server to tell everyone.  				sendAnimationRequest(anim_it->first, ANIM_REQUEST_STOP);  			} @@ -3616,7 +3569,7 @@ void LLAgent::requestLeaveGodMode()  //-----------------------------------------------------------------------------  void LLAgent::sendAgentSetAppearance()  { -	if (mAvatarObject.isNull()) return; +	if (!isAgentAvatarValid()) return;  	if (gAgentQueryManager.mNumPendingQueries > 0 && !gAgentCamera.cameraCustomizeAvatar())   	{ @@ -3624,7 +3577,7 @@ void LLAgent::sendAgentSetAppearance()  	} -	llinfos << "TAT: Sent AgentSetAppearance: " << mAvatarObject->getBakedStatusForPrintout() << llendl; +	llinfos << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << llendl;  	//dumpAvatarTEs( "sendAgentSetAppearance()" );  	LLMessageSystem* msg = gMessageSystem; @@ -3638,7 +3591,7 @@ void LLAgent::sendAgentSetAppearance()  	// NOTE -- when we start correcting all of the other Havok geometry   	// to compensate for the COLLISION_TOLERANCE ugliness we will have   	// to tweak this number again -	const LLVector3 body_size = mAvatarObject->mBodySize; +	const LLVector3 body_size = gAgentAvatarp->mBodySize;  	msg->addVector3Fast(_PREHASH_Size, body_size);	  	// To guard against out of order packets @@ -3648,20 +3601,20 @@ void LLAgent::sendAgentSetAppearance()  	// is texture data current relative to wearables?  	// KLW - TAT this will probably need to check the local queue. -	BOOL textures_current = mAvatarObject->areTexturesCurrent(); +	BOOL textures_current = gAgentAvatarp->areTexturesCurrent();  	for(U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++ )  	{  		const ETextureIndex texture_index = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index);  		// if we're not wearing a skirt, we don't need the texture to be baked -		if (texture_index == TEX_SKIRT_BAKED && !mAvatarObject->isWearingWearableType(WT_SKIRT)) +		if (texture_index == TEX_SKIRT_BAKED && !gAgentAvatarp->isWearingWearableType(WT_SKIRT))  		{  			continue;  		}  		// IMG_DEFAULT_AVATAR means not baked. 0 index should be ignored for baked textures -		if (!mAvatarObject->isTextureDefined(texture_index, 0)) +		if (!gAgentAvatarp->isTextureDefined(texture_index, 0))  		{  			textures_current = FALSE;  			break; @@ -3699,7 +3652,7 @@ void LLAgent::sendAgentSetAppearance()  			msg->addU8Fast(_PREHASH_TextureIndex, (U8)texture_index);  		}  		msg->nextBlockFast(_PREHASH_ObjectData); -		mAvatarObject->sendAppearanceMessage( gMessageSystem ); +		gAgentAvatarp->sendAppearanceMessage( gMessageSystem );  	}  	else  	{ @@ -3712,9 +3665,9 @@ void LLAgent::sendAgentSetAppearance()  	S32 transmitted_params = 0; -	for (LLViewerVisualParam* param = (LLViewerVisualParam*)mAvatarObject->getFirstVisualParam(); +	for (LLViewerVisualParam* param = (LLViewerVisualParam*)gAgentAvatarp->getFirstVisualParam();  		 param; -		 param = (LLViewerVisualParam*)mAvatarObject->getNextVisualParam()) +		 param = (LLViewerVisualParam*)gAgentAvatarp->getNextVisualParam())  	{  		if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE)  		{ diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index b59a49be13..55d9b292d7 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -51,7 +51,6 @@ extern const U8 	AGENT_STATE_TYPING;  // Typing indication  extern const U8 	AGENT_STATE_EDITING; // Set when agent has objects selected  class LLChat; -class LLVOAvatarSelf;  class LLViewerRegion;  class LLMotion;  class LLToolset; @@ -109,7 +108,6 @@ public:  	virtual 		~LLAgent();  	void			init();  	void			cleanup(); -	void			setAvatarObject(LLVOAvatarSelf *avatar);  	//--------------------------------------------------------------------  	// Login @@ -173,20 +171,6 @@ private:  /********************************************************************************   **                                                                            ** - **                    GENERAL ACCESSORS - **/ - -public: - 	LLVOAvatarSelf* getAvatarObject() const		{ return mAvatarObject; } -private: -	LLPointer<LLVOAvatarSelf> mAvatarObject; 	// NULL until avatar object sent down from simulator - -/**                    General Accessors - **                                                                            ** - *******************************************************************************/ - -/******************************************************************************** - **                                                                            **   **                    POSITION   **/ diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 8eee53363e..8ff55cafca 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -372,10 +372,9 @@ void LLAgentCamera::unlockView()  {  	if (getFocusOnAvatar())  	{ -		LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -		if (avatarp) +		if (isAgentAvatarValid())  		{ -			setFocusGlobal(LLVector3d::zero, avatarp->mID); +			setFocusGlobal(LLVector3d::zero, gAgentAvatarp->mID);  		}  		setFocusOnAvatar(FALSE, FALSE);	// no animation  	} @@ -1092,30 +1091,25 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y)  {  	static LLVector3 last_at_axis; -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); +	if (!isAgentAvatarValid()) return; -	if (!avatarp) -	{ -		return; -	} - -	LLQuaternion av_inv_rot = ~avatarp->mRoot.getWorldRotation(); -	LLVector3 root_at = LLVector3::x_axis * avatarp->mRoot.getWorldRotation(); +	LLQuaternion av_inv_rot = ~gAgentAvatarp->mRoot.getWorldRotation(); +	LLVector3 root_at = LLVector3::x_axis * gAgentAvatarp->mRoot.getWorldRotation();  	if 	((gViewerWindow->getMouseVelocityStat()->getCurrent() < 0.01f) &&  		 (root_at * last_at_axis > 0.95f))  	{ -		LLVector3 vel = avatarp->getVelocity(); +		LLVector3 vel = gAgentAvatarp->getVelocity();  		if (vel.magVecSquared() > 4.f)  		{ -			setLookAt(LOOKAT_TARGET_IDLE, avatarp, vel * av_inv_rot); +			setLookAt(LOOKAT_TARGET_IDLE, gAgentAvatarp, vel * av_inv_rot);  		}  		else  		{  			// *FIX: rotate mframeagent by sit object's rotation? -			LLQuaternion look_rotation = avatarp->isSitting() ? avatarp->getRenderRotation() : gAgent.getFrameAgent().getQuaternion(); // use camera's current rotation +			LLQuaternion look_rotation = gAgentAvatarp->isSitting() ? gAgentAvatarp->getRenderRotation() : gAgent.getFrameAgent().getQuaternion(); // use camera's current rotation  			LLVector3 look_offset = LLVector3(2.f, 0.f, 0.f) * look_rotation * av_inv_rot; -			setLookAt(LOOKAT_TARGET_IDLE, avatarp, look_offset); +			setLookAt(LOOKAT_TARGET_IDLE, gAgentAvatarp, look_offset);  		}  		last_at_axis = root_at;  		return; @@ -1125,7 +1119,7 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y)  	if (CAMERA_MODE_CUSTOMIZE_AVATAR == getCameraMode())  	{ -		setLookAt(LOOKAT_TARGET_NONE, avatarp, LLVector3(-2.f, 0.f, 0.f));	 +		setLookAt(LOOKAT_TARGET_NONE, gAgentAvatarp, LLVector3(-2.f, 0.f, 0.f));	  	}  	else  	{ @@ -1154,7 +1148,7 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y)  		headLookAxis = frameCamera.getAtAxis();  		// RN: we use world-space offset for mouselook and freelook  		//headLookAxis = headLookAxis * av_inv_rot; -		setLookAt(lookAtType, avatarp, headLookAxis); +		setLookAt(lookAtType, gAgentAvatarp, headLookAxis);  	}  } @@ -1175,15 +1169,13 @@ void LLAgentCamera::updateCamera()  	validateFocusObject(); -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); - -	if (avatarp &&  -		avatarp->isSitting() && +	if (isAgentAvatarValid() &&  +		gAgentAvatarp->isSitting() &&  		camera_mode == CAMERA_MODE_MOUSELOOK)  	{  		//Ventrella  		//changed camera_skyward to the new global "mCameraUpVector" -		mCameraUpVector = mCameraUpVector * avatarp->getRenderRotation(); +		mCameraUpVector = mCameraUpVector * gAgentAvatarp->getRenderRotation();  		//end Ventrella  	} @@ -1291,7 +1283,7 @@ void LLAgentCamera::updateCamera()  	//Ventrella  	if ( mCameraMode == CAMERA_MODE_FOLLOW )  	{ -		if (avatarp) +		if (isAgentAvatarValid())  		{  			//--------------------------------------------------------------------------------  			// this is where the avatar's position and rotation are given to followCam, and  @@ -1299,13 +1291,13 @@ void LLAgentCamera::updateCamera()  			// (2) focus, and (3) upvector. They can then be queried elsewhere in llAgent.  			//--------------------------------------------------------------------------------  			// *TODO: use combined rotation of frameagent and sit object -			LLQuaternion avatarRotationForFollowCam = avatarp->isSitting() ? avatarp->getRenderRotation() : gAgent.getFrameAgent().getQuaternion(); +			LLQuaternion avatarRotationForFollowCam = gAgentAvatarp->isSitting() ? gAgentAvatarp->getRenderRotation() : gAgent.getFrameAgent().getQuaternion();  			LLFollowCamParams* current_cam = LLFollowCamMgr::getActiveFollowCamParams();  			if (current_cam)  			{  				mFollowCam.copyParams(*current_cam); -				mFollowCam.setSubjectPositionAndRotation( avatarp->getRenderPosition(), avatarRotationForFollowCam ); +				mFollowCam.setSubjectPositionAndRotation( gAgentAvatarp->getRenderPosition(), avatarRotationForFollowCam );  				mFollowCam.update();  				LLViewerJoystick::getInstance()->setCameraNeedsUpdate(true);  			} @@ -1380,9 +1372,9 @@ void LLAgentCamera::updateCamera()  			gAgent.setShowAvatar(TRUE);  		} -		if (avatarp && (mCameraMode != CAMERA_MODE_MOUSELOOK)) +		if (isAgentAvatarValid() && (mCameraMode != CAMERA_MODE_MOUSELOOK))  		{ -			avatarp->updateAttachmentVisibility(mCameraMode); +			gAgentAvatarp->updateAttachmentVisibility(mCameraMode);  		}  	}  	else  @@ -1480,40 +1472,40 @@ void LLAgentCamera::updateCamera()  	}  	gAgent.setLastPositionGlobal(global_pos); -	if (LLVOAvatar::sVisibleInFirstPerson && avatarp && !avatarp->isSitting() && cameraMouselook()) +	if (LLVOAvatar::sVisibleInFirstPerson && isAgentAvatarValid() && !gAgentAvatarp->isSitting() && cameraMouselook())  	{ -		LLVector3 head_pos = avatarp->mHeadp->getWorldPosition() +  -			LLVector3(0.08f, 0.f, 0.05f) * avatarp->mHeadp->getWorldRotation() +  -			LLVector3(0.1f, 0.f, 0.f) * avatarp->mPelvisp->getWorldRotation(); +		LLVector3 head_pos = gAgentAvatarp->mHeadp->getWorldPosition() +  +			LLVector3(0.08f, 0.f, 0.05f) * gAgentAvatarp->mHeadp->getWorldRotation() +  +			LLVector3(0.1f, 0.f, 0.f) * gAgentAvatarp->mPelvisp->getWorldRotation();  		LLVector3 diff = mCameraPositionAgent - head_pos; -		diff = diff * ~avatarp->mRoot.getWorldRotation(); +		diff = diff * ~gAgentAvatarp->mRoot.getWorldRotation(); -		LLJoint* torso_joint = avatarp->mTorsop; -		LLJoint* chest_joint = avatarp->mChestp; +		LLJoint* torso_joint = gAgentAvatarp->mTorsop; +		LLJoint* chest_joint = gAgentAvatarp->mChestp;  		LLVector3 torso_scale = torso_joint->getScale();  		LLVector3 chest_scale = chest_joint->getScale();  		// shorten avatar skeleton to avoid foot interpenetration -		if (!avatarp->mInAir) +		if (!gAgentAvatarp->mInAir)  		{  			LLVector3 chest_offset = LLVector3(0.f, 0.f, chest_joint->getPosition().mV[VZ]) * torso_joint->getWorldRotation();  			F32 z_compensate = llclamp(-diff.mV[VZ], -0.2f, 1.f);  			F32 scale_factor = llclamp(1.f - ((z_compensate * 0.5f) / chest_offset.mV[VZ]), 0.5f, 1.2f);  			torso_joint->setScale(LLVector3(1.f, 1.f, scale_factor)); -			LLJoint* neck_joint = avatarp->mNeckp; +			LLJoint* neck_joint = gAgentAvatarp->mNeckp;  			LLVector3 neck_offset = LLVector3(0.f, 0.f, neck_joint->getPosition().mV[VZ]) * chest_joint->getWorldRotation();  			scale_factor = llclamp(1.f - ((z_compensate * 0.5f) / neck_offset.mV[VZ]), 0.5f, 1.2f);  			chest_joint->setScale(LLVector3(1.f, 1.f, scale_factor));  			diff.mV[VZ] = 0.f;  		} -		avatarp->mPelvisp->setPosition(avatarp->mPelvisp->getPosition() + diff); +		gAgentAvatarp->mPelvisp->setPosition(gAgentAvatarp->mPelvisp->getPosition() + diff); -		avatarp->mRoot.updateWorldMatrixChildren(); +		gAgentAvatarp->mRoot.updateWorldMatrixChildren(); -		for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -			 iter != avatarp->mAttachmentPoints.end(); ) +		for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +			 iter != gAgentAvatarp->mAttachmentPoints.end(); )  		{  			LLVOAvatar::attachment_map_t::iterator curiter = iter++;  			LLViewerJointAttachment* attachment = curiter->second; @@ -1537,6 +1529,11 @@ void LLAgentCamera::updateCamera()  	}  } +void LLAgentCamera::updateLastCamera() +{ +	mLastCameraMode = mCameraMode; +} +  void LLAgentCamera::updateFocusOffset()  {  	validateFocusObject(); @@ -1600,8 +1597,6 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()  		clearFocusObject();  	} -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -  	// Ventrella  	if (mCameraMode == CAMERA_MODE_FOLLOW && mFocusOnAvatar)  	{ @@ -1612,12 +1607,12 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()  	{  		LLVector3d at_axis(1.0, 0.0, 0.0);  		LLQuaternion agent_rot = gAgent.getFrameAgent().getQuaternion(); -		if (avatarp && avatarp->getParent()) +		if (isAgentAvatarValid() && gAgentAvatarp->getParent())  		{ -			LLViewerObject* root_object = (LLViewerObject*)avatarp->getRoot(); +			LLViewerObject* root_object = (LLViewerObject*)gAgentAvatarp->getRoot();  			if (!root_object->flagCameraDecoupled())  			{ -				agent_rot *= ((LLViewerObject*)(avatarp->getParent()))->getRenderRotation(); +				agent_rot *= ((LLViewerObject*)(gAgentAvatarp->getParent()))->getRenderRotation();  			}  		}  		at_axis = at_axis * agent_rot; @@ -1667,7 +1662,7 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()  		}  		return mFocusTargetGlobal;  	} -	else if (mSitCameraEnabled && avatarp && avatarp->isSitting() && mSitCameraReferenceObject.notNull()) +	else if (mSitCameraEnabled && isAgentAvatarValid() && gAgentAvatarp->isSitting() && mSitCameraReferenceObject.notNull())  	{  		// sit camera  		LLVector3 object_pos = mSitCameraReferenceObject->getRenderPosition(); @@ -1686,12 +1681,10 @@ LLVector3d LLAgentCamera::calcThirdPersonFocusOffset()  {  	// ...offset from avatar  	LLVector3d focus_offset; - -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();  	LLQuaternion agent_rot = gAgent.getFrameAgent().getQuaternion(); -	if (avatarp && avatarp->getParent()) +	if (isAgentAvatarValid() && gAgentAvatarp->getParent())  	{ -		agent_rot *= ((LLViewerObject*)(avatarp->getParent()))->getRenderRotation(); +		agent_rot *= ((LLViewerObject*)(gAgentAvatarp->getParent()))->getRenderRotation();  	}  	focus_offset = mFocusOffsetInitial[mCameraPreset] * agent_rot; @@ -1700,12 +1693,10 @@ LLVector3d LLAgentCamera::calcThirdPersonFocusOffset()  void LLAgentCamera::setupSitCamera()  { -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -  	// agent frame entering this function is in world coordinates -	if (avatarp && avatarp->getParent()) +	if (isAgentAvatarValid() && gAgentAvatarp->getParent())  	{ -		LLQuaternion parent_rot = ((LLViewerObject*)avatarp->getParent())->getRenderRotation(); +		LLQuaternion parent_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();  		// slam agent coordinate frame to proper parent local version  		LLVector3 at_axis = gAgent.getFrameAgent().getAtAxis();  		at_axis.mV[VZ] = 0.f; @@ -1768,13 +1759,11 @@ F32	LLAgentCamera::calcCameraFOVZoomFactor()  //-----------------------------------------------------------------------------  LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  { -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -  	// Compute base camera position and look-at points.  	F32			camera_land_height; -	LLVector3d	frame_center_global = !avatarp ?  +	LLVector3d	frame_center_global = !isAgentAvatarValid() ?   		gAgent.getPositionGlobal() : -		gAgent.getPosGlobalFromAgent(avatarp->mRoot.getWorldPosition()); +		gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot.getWorldPosition());  	BOOL		isConstrained = FALSE;  	LLVector3d	head_offset; @@ -1789,32 +1778,32 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  	}// End Ventrella  	else if (mCameraMode == CAMERA_MODE_MOUSELOOK)  	{ -		if (!avatarp || avatarp->mDrawable.isNull()) +		if (!isAgentAvatarValid() || gAgentAvatarp->mDrawable.isNull())  		{  			llwarns << "Null avatar drawable!" << llendl;  			return LLVector3d::zero;  		}  		head_offset.clearVec(); -		if (avatarp->isSitting() && avatarp->getParent()) +		if (gAgentAvatarp->isSitting() && gAgentAvatarp->getParent())  		{ -			avatarp->updateHeadOffset(); -			head_offset.mdV[VX] = avatarp->mHeadOffset.mV[VX]; -			head_offset.mdV[VY] = avatarp->mHeadOffset.mV[VY]; -			head_offset.mdV[VZ] = avatarp->mHeadOffset.mV[VZ] + 0.1f; -			const LLMatrix4& mat = ((LLViewerObject*) avatarp->getParent())->getRenderMatrix(); +			gAgentAvatarp->updateHeadOffset(); +			head_offset.mdV[VX] = gAgentAvatarp->mHeadOffset.mV[VX]; +			head_offset.mdV[VY] = gAgentAvatarp->mHeadOffset.mV[VY]; +			head_offset.mdV[VZ] = gAgentAvatarp->mHeadOffset.mV[VZ] + 0.1f; +			const LLMatrix4& mat = ((LLViewerObject*) gAgentAvatarp->getParent())->getRenderMatrix();  			camera_position_global = gAgent.getPosGlobalFromAgent -								((avatarp->getPosition()+ -								 LLVector3(head_offset)*avatarp->getRotation()) * mat); +								((gAgentAvatarp->getPosition()+ +								 LLVector3(head_offset)*gAgentAvatarp->getRotation()) * mat);  		}  		else  		{ -			head_offset.mdV[VZ] = avatarp->mHeadOffset.mV[VZ]; -			if (avatarp->isSitting()) +			head_offset.mdV[VZ] = gAgentAvatarp->mHeadOffset.mV[VZ]; +			if (gAgentAvatarp->isSitting())  			{  				head_offset.mdV[VZ] += 0.1;  			} -			camera_position_global = gAgent.getPosGlobalFromAgent(avatarp->getRenderPosition());//frame_center_global; -			head_offset = head_offset * avatarp->getRenderRotation(); +			camera_position_global = gAgent.getPosGlobalFromAgent(gAgentAvatarp->getRenderPosition());//frame_center_global; +			head_offset = head_offset * gAgentAvatarp->getRenderRotation();  			camera_position_global = camera_position_global + head_offset;  		}  	} @@ -1824,8 +1813,8 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  		F32 camera_distance = 0.f;  		if (mSitCameraEnabled  -			&& avatarp  -			&& avatarp->isSitting()  +			&& isAgentAvatarValid()  +			&& gAgentAvatarp->isSitting()   			&& mSitCameraReferenceObject.notNull())  		{  			// sit camera @@ -1841,9 +1830,9 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  			local_camera_offset = mCameraZoomFraction * getCameraOffsetInitial() * gSavedSettings.getF32("CameraOffsetScale");  			// are we sitting down? -			if (avatarp && avatarp->getParent()) +			if (isAgentAvatarValid() && gAgentAvatarp->getParent())  			{ -				LLQuaternion parent_rot = ((LLViewerObject*)avatarp->getParent())->getRenderRotation(); +				LLQuaternion parent_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();  				// slam agent coordinate frame to proper parent local version  				LLVector3 at_axis = gAgent.getFrameAgent().getAtAxis() * parent_rot;  				at_axis.mV[VZ] = 0.f; @@ -1857,7 +1846,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  				local_camera_offset = gAgent.getFrameAgent().rotateToAbsolute( local_camera_offset );  			} -			if (!mCameraCollidePlane.isExactlyZero() && (!avatarp || !avatarp->isSitting())) +			if (!mCameraCollidePlane.isExactlyZero() && (!isAgentAvatarValid() || !gAgentAvatarp->isSitting()))  			{  				LLVector3 plane_normal;  				plane_normal.setVec(mCameraCollidePlane.mV); @@ -1910,11 +1899,11 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  			// set the global camera position  			LLVector3d camera_offset; -			LLVector3 av_pos = !avatarp ? LLVector3::zero : avatarp->getRenderPosition(); +			LLVector3 av_pos = !isAgentAvatarValid() ? LLVector3::zero : gAgentAvatarp->getRenderPosition();  			camera_offset.setVec( local_camera_offset );  			camera_position_global = frame_center_global + head_offset + camera_offset; -			if (avatarp) +			if (isAgentAvatarValid())  			{  				LLVector3d camera_lag_d;  				F32 lag_interp = LLCriticalDamp::getInterpolant(CAMERA_LAG_HALF_LIFE); @@ -1922,8 +1911,8 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  				LLVector3 vel = gAgent.getVelocity();  				// lag by appropriate amount for flying -				F32 time_in_air = avatarp->mTimeInAir.getElapsedTimeF32(); -				if(!mCameraAnimating && avatarp->mInAir && time_in_air > GROUND_TO_AIR_CAMERA_TRANSITION_START_TIME) +				F32 time_in_air = gAgentAvatarp->mTimeInAir.getElapsedTimeF32(); +				if(!mCameraAnimating && gAgentAvatarp->mInAir && time_in_air > GROUND_TO_AIR_CAMERA_TRANSITION_START_TIME)  				{  					LLVector3 frame_at_axis = gAgent.getFrameAgent().getAtAxis();  					frame_at_axis -= projected_vec(frame_at_axis, gAgent.getReferenceUpVector()); @@ -1935,7 +1924,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  					lag_interp *= u; -					if (gViewerWindow->getLeftMouseDown() && gViewerWindow->getLastPick().mObjectID == avatarp->getID()) +					if (gViewerWindow->getLeftMouseDown() && gViewerWindow->getLastPick().mObjectID == gAgentAvatarp->getID())  					{  						// disable camera lag when using mouse-directed steering  						target_lag.clearVec(); @@ -2136,8 +2125,6 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)  		return;  	} -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -  	// visibility changes at end of animation  	gViewerWindow->getWindow()->resetBusyCount(); @@ -2146,10 +2133,10 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)  	LLToolMgr::getInstance()->setCurrentToolset(gMouselookToolset); -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		avatarp->stopMotion(ANIM_AGENT_BODY_NOISE); -		avatarp->stopMotion(ANIM_AGENT_BREATHE_ROT); +		gAgentAvatarp->stopMotion(ANIM_AGENT_BODY_NOISE); +		gAgentAvatarp->stopMotion(ANIM_AGENT_BREATHE_ROT);  	}  	//gViewerWindow->stopGrab(); @@ -2161,7 +2148,7 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)  	{  		gFocusMgr.setKeyboardFocus(NULL); -		mLastCameraMode = mCameraMode; +		updateLastCamera();  		mCameraMode = CAMERA_MODE_MOUSELOOK;  		const U32 old_flags = gAgent.getControlFlags();  		gAgent.setControlFlags(AGENT_CONTROL_MOUSELOOK); @@ -2223,7 +2210,7 @@ void LLAgentCamera::changeCameraToFollow(BOOL animate)  		}  		startCameraAnimation(); -		mLastCameraMode = mCameraMode; +		updateLastCamera();  		mCameraMode = CAMERA_MODE_FOLLOW;  		// bang-in the current focus, position, and up vector of the follow cam @@ -2234,12 +2221,11 @@ void LLAgentCamera::changeCameraToFollow(BOOL animate)  			LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset);  		} -		LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -		if (avatarp) +		if (isAgentAvatarValid())  		{ -			avatarp->mPelvisp->setPosition(LLVector3::zero); -			avatarp->startMotion( ANIM_AGENT_BODY_NOISE ); -			avatarp->startMotion( ANIM_AGENT_BREATHE_ROT ); +			gAgentAvatarp->mPelvisp->setPosition(LLVector3::zero); +			gAgentAvatarp->startMotion( ANIM_AGENT_BODY_NOISE ); +			gAgentAvatarp->startMotion( ANIM_AGENT_BREATHE_ROT );  		}  		// unpause avatar animation @@ -2278,15 +2264,14 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)  	mCameraZoomFraction = INITIAL_ZOOM_FRACTION; -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		if (!avatarp->isSitting()) +		if (!gAgentAvatarp->isSitting())  		{ -			avatarp->mPelvisp->setPosition(LLVector3::zero); +			gAgentAvatarp->mPelvisp->setPosition(LLVector3::zero);  		} -		avatarp->startMotion(ANIM_AGENT_BODY_NOISE); -		avatarp->startMotion(ANIM_AGENT_BREATHE_ROT); +		gAgentAvatarp->startMotion(ANIM_AGENT_BODY_NOISE); +		gAgentAvatarp->startMotion(ANIM_AGENT_BREATHE_ROT);  	}  	LLVector3 at_axis; @@ -2308,7 +2293,7 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)  			mTargetCameraDistance = MIN_CAMERA_DISTANCE;  			animate = FALSE;  		} -		mLastCameraMode = mCameraMode; +		updateLastCamera();  		mCameraMode = CAMERA_MODE_THIRD_PERSON;  		const U32 old_flags = gAgent.getControlFlags();  		gAgent.clearControlFlags(AGENT_CONTROL_MOUSELOOK); @@ -2320,9 +2305,9 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)  	}  	// Remove any pitch from the avatar -	if (avatarp && avatarp->getParent()) +	if (isAgentAvatarValid() && gAgentAvatarp->getParent())  	{ -		LLQuaternion obj_rot = ((LLViewerObject*)avatarp->getParent())->getRenderRotation(); +		LLQuaternion obj_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();  		at_axis = LLViewerCamera::getInstance()->getAtAxis();  		at_axis.mV[VZ] = 0.f;  		at_axis.normalize(); @@ -2379,7 +2364,7 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came  	if (mCameraMode != CAMERA_MODE_CUSTOMIZE_AVATAR)  	{ -		mLastCameraMode = mCameraMode; +		updateLastCamera();  		mCameraMode = CAMERA_MODE_CUSTOMIZE_AVATAR;  		const U32 old_flags = gAgent.getControlFlags();  		gAgent.clearControlFlags(AGENT_CONTROL_MOUSELOOK); @@ -2394,8 +2379,7 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came  		LLVOAvatarSelf::onCustomizeStart();  	} -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{  		if(avatar_animate)  		{ @@ -2407,8 +2391,8 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came  			gAgent.sendAnimationRequest(ANIM_AGENT_CUSTOMIZE, ANIM_REQUEST_START);  			gAgent.setCustomAnim(TRUE); -			avatarp->startMotion(ANIM_AGENT_CUSTOMIZE); -			LLMotion* turn_motion = avatarp->findMotion(ANIM_AGENT_CUSTOMIZE); +			gAgentAvatarp->startMotion(ANIM_AGENT_CUSTOMIZE); +			LLMotion* turn_motion = gAgentAvatarp->findMotion(ANIM_AGENT_CUSTOMIZE);  			if (turn_motion)  			{ @@ -2511,16 +2495,15 @@ void LLAgentCamera::setFocusGlobal(const LLVector3d& focus, const LLUUID &object  	setFocusObject(gObjectList.findObject(object_id));  	LLVector3d old_focus = mFocusTargetGlobal;  	LLViewerObject *focus_obj = mFocusObject; -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();  	// if focus has changed  	if (old_focus != focus)  	{  		if (focus.isExactlyZero())  		{ -			if (avatarp) +			if (isAgentAvatarValid())  			{ -				mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(avatarp->mHeadp->getWorldPosition()); +				mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(gAgentAvatarp->mHeadp->getWorldPosition());  			}  			else  			{ @@ -2563,9 +2546,9 @@ void LLAgentCamera::setFocusGlobal(const LLVector3d& focus, const LLUUID &object  	{  		if (focus.isExactlyZero())  		{ -			if (avatarp) +			if (isAgentAvatarValid())  			{ -				mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(avatarp->mHeadp->getWorldPosition()); +				mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(gAgentAvatarp->mHeadp->getWorldPosition());  			}  			else  			{ @@ -2702,10 +2685,9 @@ void LLAgentCamera::setFocusOnAvatar(BOOL focus_on_avatar, BOOL animate)  		if (mCameraMode == CAMERA_MODE_THIRD_PERSON)  		{  			LLVector3 at_axis; -			LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -			if (avatarp && avatarp->getParent()) +			if (isAgentAvatarValid() && gAgentAvatarp->getParent())  			{ -				LLQuaternion obj_rot = ((LLViewerObject*)avatarp->getParent())->getRenderRotation(); +				LLQuaternion obj_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();  				at_axis = LLViewerCamera::getInstance()->getAtAxis();  				at_axis.mV[VZ] = 0.f;  				at_axis.normalize(); @@ -2733,16 +2715,15 @@ void LLAgentCamera::setFocusOnAvatar(BOOL focus_on_avatar, BOOL animate)  BOOL LLAgentCamera::setLookAt(ELookAtType target_type, LLViewerObject *object, LLVector3 position)  { -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();  	if(object && object->isAttachment())  	{  		LLViewerObject* parent = object;  		while(parent)  		{ -			if (parent == avatarp) +			if (parent == gAgentAvatarp)  			{  				// looking at an attachment on ourselves, which we don't want to do -				object = avatarp; +				object = gAgentAvatarp;  				position.clearVec();  			}  			parent = (LLViewerObject*)parent->getParent(); @@ -2751,7 +2732,7 @@ BOOL LLAgentCamera::setLookAt(ELookAtType target_type, LLViewerObject *object, L  	if(!mLookAt || mLookAt->isDead())  	{  		mLookAt = (LLHUDEffectLookAt *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_LOOKAT); -		mLookAt->setSourceObject(avatarp); +		mLookAt->setSourceObject(gAgentAvatarp);  	}  	return mLookAt->setLookAt(target_type, object, position); @@ -2774,14 +2755,13 @@ void LLAgentCamera::lookAtLastChat()  		return;  	} -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();  	LLVector3 delta_pos;  	if (chatter->isAvatar())  	{  		LLVOAvatar *chatter_av = (LLVOAvatar*)chatter; -		if (avatarp && chatter_av->mHeadp) +		if (isAgentAvatarValid() && chatter_av->mHeadp)  		{ -			delta_pos = chatter_av->mHeadp->getWorldPosition() - avatarp->mHeadp->getWorldPosition(); +			delta_pos = chatter_av->mHeadp->getWorldPosition() - gAgentAvatarp->mHeadp->getWorldPosition();  		}  		else  		{ @@ -2793,7 +2773,7 @@ void LLAgentCamera::lookAtLastChat()  		changeCameraToThirdPerson(); -		LLVector3 new_camera_pos = avatarp->mHeadp->getWorldPosition(); +		LLVector3 new_camera_pos = gAgentAvatarp->mHeadp->getWorldPosition();  		LLVector3 left = delta_pos % LLVector3::z_axis;  		left.normalize();  		LLVector3 up = left % delta_pos; @@ -2822,7 +2802,7 @@ void LLAgentCamera::lookAtLastChat()  		changeCameraToThirdPerson(); -		LLVector3 new_camera_pos = avatarp->mHeadp->getWorldPosition(); +		LLVector3 new_camera_pos = gAgentAvatarp->mHeadp->getWorldPosition();  		LLVector3 left = delta_pos % LLVector3::z_axis;  		left.normalize();  		LLVector3 up = left % delta_pos; @@ -2847,8 +2827,7 @@ BOOL LLAgentCamera::setPointAt(EPointAtType target_type, LLViewerObject *object,  	if (!mPointAt || mPointAt->isDead())  	{  		mPointAt = (LLHUDEffectPointAt *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINTAT); -		LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -		mPointAt->setSourceObject(avatarp); +		mPointAt->setSourceObject(gAgentAvatarp);  	}  	return mPointAt->setPointAt(target_type, object, position);  } diff --git a/indra/newview/llagentcamera.h b/indra/newview/llagentcamera.h index 6fe645e7d1..2074864336 100644 --- a/indra/newview/llagentcamera.h +++ b/indra/newview/llagentcamera.h @@ -92,8 +92,6 @@ class LLAgentCamera  	LOG_CLASS(LLAgentCamera);  public: -	friend class LLAgent; -  	//--------------------------------------------------------------------  	// Constructors / Destructors  	//-------------------------------------------------------------------- @@ -121,8 +119,11 @@ public:  	BOOL			cameraCustomizeAvatar() const	{ return (mCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR /*&& !mCameraAnimating*/); }  	BOOL			cameraFollow() const			{ return (mCameraMode == CAMERA_MODE_FOLLOW && mLastCameraMode == CAMERA_MODE_FOLLOW); }  	ECameraMode		getCameraMode() const 			{ return mCameraMode; } +	ECameraMode		getLastCameraMode() const 		{ return mLastCameraMode; }  	void			updateCamera();					// Call once per frame to update camera location/orientation  	void			resetCamera(); 					// Slam camera into its default position +	void			updateLastCamera();				// Set last camera to current camera +  private:  	ECameraMode		mCameraMode;					// Target mode after transition animation is done  	ECameraMode		mLastCameraMode; @@ -157,6 +158,7 @@ public:  	BOOL			calcCameraMinDistance(F32 &obj_min_distance);  	F32				calcCustomizeAvatarUIOffset(const LLVector3d& camera_pos_global);  	F32				getCurrentCameraBuildOffset() 	{ return (F32)mCameraFocusOffset.length(); } +	void			clearCameraLag() { mCameraLag.clearVec(); }  private:  	F32				mCurrentCameraDistance;	 		// Current camera offset from avatar  	F32				mTargetCameraDistance;			// Target camera offset from avatar diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp index 4601e3241b..c4597ad6f8 100644 --- a/indra/newview/llagentui.cpp +++ b/indra/newview/llagentui.cpp @@ -49,12 +49,10 @@  void LLAgentUI::buildName(std::string& name)  {  	name.clear(); - -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		LLNameValue *first_nv = avatarp->getNVPair("FirstName"); -		LLNameValue *last_nv = avatarp->getNVPair("LastName"); +		LLNameValue *first_nv = gAgentAvatarp->getNVPair("FirstName"); +		LLNameValue *last_nv = gAgentAvatarp->getNVPair("LastName");  		if (first_nv && last_nv)  		{  			name = first_nv->printData() + " " + last_nv->printData(); @@ -73,7 +71,8 @@ void LLAgentUI::buildName(std::string& name)  //static  void LLAgentUI::buildFullname(std::string& name)  { -	if (gAgent.getAvatarObject()) name = gAgent.getAvatarObject()->getFullname(); +	if (isAgentAvatarValid()) +		name = gAgentAvatarp->getFullname();  }  //static diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 5eb943877a..1fb4cff31a 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -56,8 +56,6 @@  #include <boost/scoped_ptr.hpp> -#define USE_CURRENT_OUTFIT_FOLDER -  //--------------------------------------------------------------------  // Classes for fetching initial wearables data  //-------------------------------------------------------------------- @@ -120,9 +118,8 @@ protected:  	void importedFolderDone(void);  	void contentsDone(void);  	enum ELibraryOutfitFetchStep mCurrFetchStep; -	typedef std::vector<LLUUID> clothing_folder_vec_t; -	clothing_folder_vec_t mLibraryClothingFolders; -	clothing_folder_vec_t mImportedClothingFolders; +	uuid_vec_t mLibraryClothingFolders; +	uuid_vec_t mImportedClothingFolders;  	bool mOutfitsPopulated;  	LLUUID mClothingID;  	LLUUID mLibraryClothingID; @@ -291,7 +288,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i  	}  	if (mTodo & CALL_RECOVERDONE)  	{ -		LLAppearanceManager::instance().addCOFItemLink(inv_item,false); +		LLAppearanceMgr::instance().addCOFItemLink(inv_item,false);  		gAgentWearables.recoverMissingWearableDone();  	}  	/* @@ -299,7 +296,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i  	 */  	if (mTodo & CALL_CREATESTANDARDDONE)  	{ -		LLAppearanceManager::instance().addCOFItemLink(inv_item,false); +		LLAppearanceMgr::instance().addCOFItemLink(inv_item,false);  		gAgentWearables.createStandardWearablesDone(mType, mIndex);  	}  	if (mTodo & CALL_MAKENEWOUTFITDONE) @@ -308,7 +305,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i  	}  	if (mTodo & CALL_WEARITEM)  	{ -		LLAppearanceManager::instance().addCOFItemLink(inv_item, true); +		LLAppearanceMgr::instance().addCOFItemLink(inv_item, true);  	}  } @@ -485,7 +482,7 @@ void LLAgentWearables::saveWearable(const EWearableType type, const U32 index, B  			return;  		} -		gAgent.getAvatarObject()->wearableUpdated( type, TRUE ); +		gAgentAvatarp->wearableUpdated( type, TRUE );  		if (send_update)  		{ @@ -783,8 +780,7 @@ U32 LLAgentWearables::pushWearable(const EWearableType type, LLWearable *wearabl  void LLAgentWearables::wearableUpdated(LLWearable *wearable)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	avatarp->wearableUpdated(wearable->getType(), TRUE); +	gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE);  	wearable->refreshName();  	wearable->setLabelUpdated(); @@ -825,11 +821,10 @@ void LLAgentWearables::popWearable(LLWearable *wearable)  void LLAgentWearables::popWearable(const EWearableType type, U32 index)  {  	LLWearable *wearable = getWearable(type, index); -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();  	if (wearable)  	{  		mWearableDatas[type].erase(mWearableDatas[type].begin() + index); -		avatarp->wearableUpdated(wearable->getType(), TRUE); +		gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE);  		wearable->setLabelUpdated();  	}  } @@ -961,8 +956,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs  	LLUUID agent_id;  	gMessageSystem->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id); -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp && (agent_id == avatarp->getID())) +	if (isAgentAvatarValid() && (agent_id == gAgentAvatarp->getID()))  	{  		gMessageSystem->getU32Fast(_PREHASH_AgentData, _PREHASH_SerialNum, gAgentQueryManager.mUpdateSerialNum); @@ -1028,7 +1022,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs  		// Get the complete information on the items in the inventory and set up an observer  		// that will trigger when the complete information is fetched. -		LLInventoryFetchDescendentsObserver::folder_ref_t folders; +		uuid_vec_t folders;  		folders.push_back(current_outfit_id);  		outfit->fetchDescendents(folders);  		if(outfit->isEverythingComplete()) @@ -1046,64 +1040,6 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs  	}  } -// A single wearable that the avatar was wearing on start-up has arrived from the database. -// static -void LLAgentWearables::onInitialWearableAssetArrived(LLWearable* wearable, void* userdata) -{ -	boost::scoped_ptr<LLInitialWearablesFetch::InitialWearableData> wear_data((LLInitialWearablesFetch::InitialWearableData*)userdata);  -	const EWearableType type = wear_data->mType; -	U32 index = 0; - -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		return; -	} -		 -	if (wearable) -	{ -		llassert(type == wearable->getType()); -		wearable->setItemID(wear_data->mItemID); -		index = gAgentWearables.pushWearable(type, wearable); -		gAgentWearables.mItemsAwaitingWearableUpdate.erase(wear_data->mItemID); - -		// disable composites if initial textures are baked -		avatarp->setupComposites(); - -		avatarp->setCompositeUpdatesEnabled(TRUE); -		gInventory.addChangedMask(LLInventoryObserver::LABEL, wearable->getItemID()); -	} -	else -	{ -		// Somehow the asset doesn't exist in the database. -		gAgentWearables.recoverMissingWearable(type,index); -	} -	 - -	gInventory.notifyObservers(); - -	// Have all the wearables that the avatar was wearing at log-in arrived? -	// MULTI-WEARABLE: update when multiple wearables can arrive per type. - -	gAgentWearables.updateWearablesLoaded(); -	if (gAgentWearables.areWearablesLoaded()) -	{ - -		// Can't query cache until all wearables have arrived, so calling this earlier is a no-op. -		gAgentWearables.queryWearableCache(); - -		// Make sure that the server's idea of the avatar's wearables actually match the wearables. -		gAgent.sendAgentSetAppearance(); - -		// Check to see if there are any baked textures that we hadn't uploaded before we logged off last time. -		// If there are any, schedule them to be uploaded as soon as the layer textures they depend on arrive. -		if (gAgentCamera.cameraCustomizeAvatar()) -		{ -			avatarp->requestLayerSetUploads(); -		} -	} -} -  // Normally, all wearables referred to "AgentWearablesUpdate" will correspond to actual assets in the  // database.  If for some reason, we can't load one of those assets, we can try to reconstruct it so that  // the user isn't left without a shape, for example.  (We can do that only after the inventory has loaded.) @@ -1179,7 +1115,7 @@ public:  	{  		llinfos << "All items created" << llendl;  		LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy; -		LLAppearanceManager::instance().linkAll(LLAppearanceManager::instance().getCOF(), +		LLAppearanceMgr::instance().linkAll(LLAppearanceMgr::instance().getCOF(),  												mItemsToLink,  												link_waiter);  	} @@ -1239,13 +1175,9 @@ void LLAgentWearables::createStandardWearables(BOOL female)  	llwarns << "Creating Standard " << (female ? "female" : "male")  			<< " Wearables" << llendl; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		return; -	} +	if (!isAgentAvatarValid()) return; -	avatarp->setSex(female ? SEX_FEMALE : SEX_MALE); +	gAgentAvatarp->setSex(female ? SEX_FEMALE : SEX_MALE);  	const BOOL create[WT_COUNT] =   		{ @@ -1293,11 +1225,8 @@ void LLAgentWearables::createStandardWearablesDone(S32 type, U32 index)  {  	llinfos << "type " << type << " index " << index << llendl; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) -	{ -		avatarp->updateVisualParams(); -	} +	if (!isAgentAvatarValid()) return; +	gAgentAvatarp->updateVisualParams();  }  void LLAgentWearables::createStandardWearablesAllDone() @@ -1312,8 +1241,7 @@ void LLAgentWearables::createStandardWearablesAllDone()  	updateServer();  	// Treat this as the first texture entry message, if none received yet -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	avatarp->onFirstTEMessageReceived(); +	gAgentAvatarp->onFirstTEMessageReceived();  }  // MULTI-WEARABLE: Properly handle multiwearables later. @@ -1335,11 +1263,7 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name,  									 const LLDynamicArray<S32>& attachments_to_include,  									 BOOL rename_clothing)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		return; -	} +	if (!isAgentAvatarValid()) return;  	// First, make a folder in the Clothes directory.  	LLUUID folder_id = gInventory.createNewCategory( @@ -1437,7 +1361,7 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name,  		for (S32 i = 0; i < attachments_to_include.count(); i++)  		{  			S32 attachment_pt = attachments_to_include[i]; -			LLViewerJointAttachment* attachment = get_if_there(avatarp->mAttachmentPoints, attachment_pt, (LLViewerJointAttachment*)NULL); +			LLViewerJointAttachment* attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, attachment_pt, (LLViewerJointAttachment*)NULL);  			if (!attachment) continue;  			for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();  				 attachment_iter != attachment->mAttachedObjects.end(); @@ -1498,8 +1422,8 @@ public:  			tab_outfits->changeOpenClose(tab_outfits->getDisplayChildren());  		} -		LLAppearanceManager::instance().updateIsDirty(); -		LLAppearanceManager::instance().updatePanelOutfitName(""); +		LLAppearanceMgr::instance().updateIsDirty(); +		LLAppearanceMgr::instance().updatePanelOutfitName("");  	}  	virtual void fire(const LLUUID&) @@ -1512,11 +1436,7 @@ private:  LLUUID LLAgentWearables::makeNewOutfitLinks(const std::string& new_folder_name)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		return LLUUID::null; -	} +	if (!isAgentAvatarValid()) return LLUUID::null;  	// First, make a folder in the My Outfits directory.  	const LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS); @@ -1526,8 +1446,8 @@ LLUUID LLAgentWearables::makeNewOutfitLinks(const std::string& new_folder_name)  		new_folder_name);  	LLPointer<LLInventoryCallback> cb = new LLShowCreatedOutfit(folder_id); -	LLAppearanceManager::instance().shallowCopyCategoryContents(LLAppearanceManager::instance().getCOF(),folder_id, cb); -	LLAppearanceManager::instance().createBaseOutfitLink(folder_id, cb); +	LLAppearanceMgr::instance().shallowCopyCategoryContents(LLAppearanceMgr::instance().getCOF(),folder_id, cb); +	LLAppearanceMgr::instance().createBaseOutfitLink(folder_id, cb);  	return folder_id;  } @@ -1680,7 +1600,6 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it  										 BOOL remove)  {  	llinfos << "setWearableOutfit() start" << llendl; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();  	BOOL wearables_to_remove[WT_COUNT];  	wearables_to_remove[WT_SHAPE]		= FALSE; @@ -1784,11 +1703,11 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it  		}  	} -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		avatarp->setCompositeUpdatesEnabled(TRUE); -		avatarp->updateVisualParams(); -		avatarp->invalidateAll(); +		gAgentAvatarp->setCompositeUpdatesEnabled(TRUE); +		gAgentAvatarp->updateVisualParams(); +		gAgentAvatarp->invalidateAll();  	}  	// Start rendering & update the server @@ -2038,12 +1957,7 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj  	// already wearing and in request set -> leave alone.  	// not wearing and in request set -> put on. -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		llwarns << "No avatar found." << llendl; -		return; -	} +	if (!isAgentAvatarValid()) return;  	std::set<LLUUID> requested_item_ids;  	std::set<LLUUID> current_item_ids; @@ -2052,8 +1966,8 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj  	// Build up list of objects to be removed and items currently attached.  	llvo_vec_t objects_to_remove; -	for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -		 iter != avatarp->mAttachmentPoints.end();) +	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +		 iter != gAgentAvatarp->mAttachmentPoints.end();)  	{  		LLVOAvatar::attachment_map_t::iterator curiter = iter++;  		LLViewerJointAttachment* attachment = curiter->second; @@ -2109,12 +2023,7 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj  void LLAgentWearables::userRemoveMultipleAttachments(llvo_vec_t& objects_to_remove)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		llwarns << "No avatar found." << llendl; -		return; -	} +	if (!isAgentAvatarValid()) return;  	if (objects_to_remove.empty())  		return; @@ -2137,17 +2046,12 @@ void LLAgentWearables::userRemoveMultipleAttachments(llvo_vec_t& objects_to_remo  void LLAgentWearables::userRemoveAllAttachments()  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) -	{ -		llwarns << "No avatar found." << llendl; -		return; -	} +	if (!isAgentAvatarValid()) return;  	llvo_vec_t objects_to_remove; -	for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -		 iter != avatarp->mAttachmentPoints.end();) +	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +		 iter != gAgentAvatarp->mAttachmentPoints.end();)  	{  		LLVOAvatar::attachment_map_t::iterator curiter = iter++;  		LLViewerJointAttachment* attachment = curiter->second; @@ -2274,7 +2178,7 @@ void LLAgentWearables::populateMyOutfitsFolder(void)  	// Get the complete information on the items in the inventory and   	// setup an observer that will wait for that to happen. -	LLInventoryFetchDescendentsObserver::folder_ref_t folders; +	uuid_vec_t folders;  	outfits->mMyOutfitsID = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);  	folders.push_back(outfits->mMyOutfitsID); @@ -2365,7 +2269,7 @@ void LLLibraryOutfitsFetch::folderDone(void)  	mCompleteFolders.clear();  	// Get the complete information on the items in the inventory. -	LLInventoryFetchDescendentsObserver::folder_ref_t folders; +	uuid_vec_t folders;  	folders.push_back(mClothingID);  	folders.push_back(mLibraryClothingID);  	fetchDescendents(folders); @@ -2379,7 +2283,7 @@ void LLLibraryOutfitsFetch::outfitsDone(void)  {  	LLInventoryModel::cat_array_t cat_array;  	LLInventoryModel::item_array_t wearable_array; -	LLInventoryFetchDescendentsObserver::folder_ref_t folders; +	uuid_vec_t folders;  	// Collect the contents of the Library's Clothing folder  	gInventory.collectDescendents(mLibraryClothingID, cat_array, wearable_array,  @@ -2469,7 +2373,7 @@ void LLLibraryOutfitsFetch::libraryDone(void)  													   LLFolderType::FT_NONE,  													   mImportedClothingName);  	// Copy each folder from library into clothing unless it already exists. -	for (clothing_folder_vec_t::const_iterator iter = mLibraryClothingFolders.begin(); +	for (uuid_vec_t::const_iterator iter = mLibraryClothingFolders.begin();  		 iter != mLibraryClothingFolders.end();  		 ++iter)  	{ @@ -2481,7 +2385,7 @@ void LLLibraryOutfitsFetch::libraryDone(void)  			continue;  		} -		if (!LLAppearanceManager::getInstance()->getCanMakeFolderIntoOutfit(src_folder_id)) +		if (!LLAppearanceMgr::getInstance()->getCanMakeFolderIntoOutfit(src_folder_id))  		{  			llinfos << "Skipping non-outfit folder name:" << cat->getName() << llendl;  			continue; @@ -2503,14 +2407,14 @@ void LLLibraryOutfitsFetch::libraryDone(void)  		LLUUID dst_folder_id = gInventory.createNewCategory(mImportedClothingID,  															LLFolderType::FT_NONE,  															cat->getName()); -		LLAppearanceManager::getInstance()->shallowCopyCategoryContents(src_folder_id, dst_folder_id, copy_waiter); +		LLAppearanceMgr::getInstance()->shallowCopyCategoryContents(src_folder_id, dst_folder_id, copy_waiter);  	}  }  void LLLibraryOutfitsFetch::importedFolderFetch(void)  {  	// Fetch the contents of the Imported Clothing Folder -	LLInventoryFetchDescendentsObserver::folder_ref_t folders; +	uuid_vec_t folders;  	folders.push_back(mImportedClothingID);  	mCompleteFolders.clear(); @@ -2526,7 +2430,7 @@ void LLLibraryOutfitsFetch::importedFolderDone(void)  {  	LLInventoryModel::cat_array_t cat_array;  	LLInventoryModel::item_array_t wearable_array; -	LLInventoryFetchDescendentsObserver::folder_ref_t folders; +	uuid_vec_t folders;  	// Collect the contents of the Imported Clothing folder  	gInventory.collectDescendents(mImportedClothingID, cat_array, wearable_array,  @@ -2556,7 +2460,7 @@ void LLLibraryOutfitsFetch::contentsDone(void)  	LLInventoryModel::cat_array_t cat_array;  	LLInventoryModel::item_array_t wearable_array; -	for (clothing_folder_vec_t::const_iterator folder_iter = mImportedClothingFolders.begin(); +	for (uuid_vec_t::const_iterator folder_iter = mImportedClothingFolders.begin();  		 folder_iter != mImportedClothingFolders.end();  		 ++folder_iter)  	{ @@ -2625,15 +2529,15 @@ void LLInitialWearablesFetch::processContents()  	gInventory.collectDescendentsIf(mCompleteFolders.front(), cat_array, wearable_array,   									LLInventoryModel::EXCLUDE_TRASH, is_wearable); -	LLAppearanceManager::instance().setAttachmentInvLinkEnable(true); +	LLAppearanceMgr::instance().setAttachmentInvLinkEnable(true);  	if (wearable_array.count() > 0)  	{ -		LLAppearanceManager::instance().updateAppearanceFromCOF(); +		LLAppearanceMgr::instance().updateAppearanceFromCOF();  	}  	else  	{  		// if we're constructing the COF from the wearables message, we don't have a proper outfit link -		LLAppearanceManager::instance().setOutfitDirty(true); +		LLAppearanceMgr::instance().setOutfitDirty(true);  		processWearablesMessage();  	}  	delete this; @@ -2670,7 +2574,7 @@ public:  			link_inventory_item(gAgent.getID(),  								item->getLinkedUUID(), -								LLAppearanceManager::instance().getCOF(), +								LLAppearanceMgr::instance().getCOF(),  								item->getName(),  								LLAssetType::AT_LINK,  								link_waiter); @@ -2684,7 +2588,7 @@ void LLInitialWearablesFetch::processWearablesMessage()  {  	if (!mAgentInitialWearables.empty()) // We have an empty current outfit folder, use the message data instead.  	{ -		const LLUUID current_outfit_id = LLAppearanceManager::instance().getCOF(); +		const LLUUID current_outfit_id = LLAppearanceMgr::instance().getCOF();  		LLInventoryFetchObserver::item_ref_t ids;  		for (U8 i = 0; i < mAgentInitialWearables.size(); ++i)  		{ @@ -2693,16 +2597,7 @@ void LLInitialWearablesFetch::processWearablesMessage()  			if (wearable_data->mAssetID.notNull())  			{ -#ifdef USE_CURRENT_OUTFIT_FOLDER  				ids.push_back(wearable_data->mItemID); -#endif -#if 0 -// 				// Fetch the wearables -// 				LLWearableList::instance().getAsset(wearable_data->mAssetID, -// 													LLStringUtil::null, -// 													LLWearableDictionary::getAssetType(wearable_data->mType), -// 													LLAgentWearables::onInitialWearableAssetArrived, (void*)(wearable_data)); -#endif  			}  			else  			{ @@ -2713,11 +2608,10 @@ void LLInitialWearablesFetch::processWearablesMessage()  		}  		// Add all current attachments to the requested items as well. -		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -		if(avatarp) +		if (isAgentAvatarValid())  		{ -			for (LLVOAvatar::attachment_map_t::const_iterator iter = avatarp->mAttachmentPoints.begin();  -				 iter != avatarp->mAttachmentPoints.end(); ++iter) +			for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +				 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)  			{  				LLViewerJointAttachment* attachment = iter->second;  				if (!attachment) continue; diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index b3dfb8f141..80d24f75b9 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -119,7 +119,7 @@ protected:  		// If the inventory callback manager goes away, we're shutting down, no longer want the callback.  		if( LLInventoryCallbackManager::is_instantiated() )  		{ -			LLAppearanceManager::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend); +			LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend);  		}  		else  		{ @@ -228,7 +228,7 @@ void LLOutfitObserver::doWearCategory()  	else  	{  		// Wear the inventory category. -		LLAppearanceManager::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend); +		LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend);  	}  	delete this;  } @@ -312,7 +312,7 @@ LLUpdateAppearanceOnDestroy::~LLUpdateAppearanceOnDestroy()  	if (!LLApp::isExiting())  	{ -		LLAppearanceManager::instance().updateAppearanceFromCOF(); +		LLAppearanceMgr::instance().updateAppearanceFromCOF();  	}  } @@ -368,6 +368,7 @@ public:  	void recoverMissingWearable(EWearableType type);  	void clearCOFLinksForMissingWearables(); +	void onWearableAssetFetch(LLWearable *wearable);  	void onAllComplete();  	typedef std::list<LLFoundData> found_list_t; @@ -450,12 +451,12 @@ void LLWearableHoldingPattern::onAllComplete()  	{  		llinfos << "Activating " << mGestItems.count() << " gestures" << llendl; -		LLGestureManager::instance().activateGestures(mGestItems); +		LLGestureMgr::instance().activateGestures(mGestItems);  		// Update the inventory item labels to reflect the fact  		// they are active.  		LLViewerInventoryCategory* catp = -			gInventory.getCategory(LLAppearanceManager::instance().getCOF()); +			gInventory.getCategory(LLAppearanceMgr::instance().getCOF());  		if (catp)  		{ @@ -466,11 +467,10 @@ void LLWearableHoldingPattern::onAllComplete()  	// Update wearables.  	llinfos << "Updating agent wearables with " << mResolved << " wearable items " << llendl; -	LLAppearanceManager::instance().updateAgentWearables(this, false); +	LLAppearanceMgr::instance().updateAgentWearables(this, false);  	// Update attachments to match those requested. -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	if( avatar ) +	if (isAgentAvatarValid())  	{  		llinfos << "Updating " << mObjItems.count() << " attachments" << llendl;  		LLAgentWearables::userUpdateAttachments(mObjItems); @@ -581,7 +581,7 @@ public:  		{  			link_inventory_item( gAgent.getID(),  					     item_id, -					     LLAppearanceManager::instance().getCOF(), +					     LLAppearanceMgr::instance().getCOF(),  					     itemp->getName(),  					     LLAssetType::AT_LINK,  					     cb); @@ -632,7 +632,7 @@ void LLWearableHoldingPattern::clearCOFLinksForMissingWearables()  		{  			// Wearable link that was never resolved; remove links to it from COF  			llinfos << "removing link for unresolved item " << data.mItemID.asString() << llendl; -			LLAppearanceManager::instance().removeCOFItemLinks(data.mItemID,false); +			LLAppearanceMgr::instance().removeCOFItemLinks(data.mItemID,false);  		}  	}  } @@ -657,11 +657,10 @@ bool LLWearableHoldingPattern::pollMissingWearables()  	return done;  } -static void onWearableAssetFetch(LLWearable* wearable, void* data) +void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)  { -	LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data; -	holder->mResolved += 1;  // just counting callbacks, not successes. -	llinfos << "onWearableAssetFetch, resolved count " << holder->mResolved << " of requested " << holder->mFoundList.size() << llendl; +	mResolved += 1;  // just counting callbacks, not successes. +	llinfos << "onWearableAssetFetch, resolved count " << mResolved << " of requested " << mFoundList.size() << llendl;  	if (wearable)  	{  		llinfos << "wearable found, type " << wearable->getType() << " asset " << wearable->getAssetID() << llendl; @@ -671,7 +670,7 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)  		llwarns << "no wearable found" << llendl;  	} -	if (holder->mFired) +	if (mFired)  	{  		llwarns << "called after holder fired" << llendl;  		return; @@ -682,8 +681,8 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)  		return;  	} -	for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin(); -		 iter != holder->mFoundList.end(); ++iter) +	for (LLWearableHoldingPattern::found_list_t::iterator iter = mFoundList.begin(); +		 iter != mFoundList.end(); ++iter)  	{  		LLFoundData& data = *iter;  		if(wearable->getAssetID() == data.mAssetID) @@ -696,6 +695,12 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)  	}  } +static void onWearableAssetFetch(LLWearable* wearable, void* data) +{ +	LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data; +	holder->onWearableAssetFetch(wearable); +} +  static void removeDuplicateItems(LLInventoryModel::item_array_t& items)  { @@ -724,13 +729,13 @@ static void removeDuplicateItems(LLInventoryModel::item_array_t& items)  	items = new_items;  } -const LLUUID LLAppearanceManager::getCOF() const +const LLUUID LLAppearanceMgr::getCOF() const  {  	return gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);  } -const LLViewerInventoryItem* LLAppearanceManager::getBaseOutfitLink() +const LLViewerInventoryItem* LLAppearanceMgr::getBaseOutfitLink()  {  	const LLUUID& current_outfit_cat = getCOF();  	LLInventoryModel::cat_array_t cat_array; @@ -758,7 +763,7 @@ const LLViewerInventoryItem* LLAppearanceManager::getBaseOutfitLink()  	return NULL;  } -bool LLAppearanceManager::getBaseOutfitName(std::string& name) +bool LLAppearanceMgr::getBaseOutfitName(std::string& name)  {  	const LLViewerInventoryItem* outfit_link = getBaseOutfitLink();  	if(outfit_link) @@ -774,15 +779,15 @@ bool LLAppearanceManager::getBaseOutfitName(std::string& name)  }  // Update appearance from outfit folder. -void LLAppearanceManager::changeOutfit(bool proceed, const LLUUID& category, bool append) +void LLAppearanceMgr::changeOutfit(bool proceed, const LLUUID& category, bool append)  {  	if (!proceed)  		return; -	LLAppearanceManager::instance().updateCOF(category,append); +	LLAppearanceMgr::instance().updateCOF(category,append);  }  // Create a copy of src_id + contents as a subfolder of dst_id. -void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id, +void LLAppearanceMgr::shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id,  											  LLPointer<LLInventoryCallback> cb)  {  	LLInventoryCategory *src_cat = gInventory.getCategory(src_id); @@ -805,7 +810,7 @@ void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID  }  // Copy contents of src_id to dst_id. -void LLAppearanceManager::shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id, +void LLAppearanceMgr::shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id,  													  LLPointer<LLInventoryCallback> cb)  {  	LLInventoryModel::cat_array_t* cats; @@ -861,7 +866,7 @@ void LLAppearanceManager::shallowCopyCategoryContents(const LLUUID& src_id, cons  	}  } -BOOL LLAppearanceManager::getCanMakeFolderIntoOutfit(const LLUUID& folder_id) +BOOL LLAppearanceMgr::getCanMakeFolderIntoOutfit(const LLUUID& folder_id)  {  	// These are the wearable items that are required for considering this  	// folder as containing a complete outfit. @@ -893,7 +898,7 @@ BOOL LLAppearanceManager::getCanMakeFolderIntoOutfit(const LLUUID& folder_id)  } -void LLAppearanceManager::purgeBaseOutfitLink(const LLUUID& category) +void LLAppearanceMgr::purgeBaseOutfitLink(const LLUUID& category)  {  	LLInventoryModel::cat_array_t cats;  	LLInventoryModel::item_array_t items; @@ -915,7 +920,7 @@ void LLAppearanceManager::purgeBaseOutfitLink(const LLUUID& category)  	}  } -void LLAppearanceManager::purgeCategory(const LLUUID& category, bool keep_outfit_links) +void LLAppearanceMgr::purgeCategory(const LLUUID& category, bool keep_outfit_links)  {  	LLInventoryModel::cat_array_t cats;  	LLInventoryModel::item_array_t items; @@ -935,7 +940,7 @@ void LLAppearanceManager::purgeCategory(const LLUUID& category, bool keep_outfit  // Keep the last N wearables of each type.  For viewer 2.0, N is 1 for  // both body parts and clothing items. -void LLAppearanceManager::filterWearableItems( +void LLAppearanceMgr::filterWearableItems(  	LLInventoryModel::item_array_t& items, S32 max_per_type)  {  	// Divvy items into arrays by wearable type. @@ -971,7 +976,7 @@ void LLAppearanceManager::filterWearableItems(  }  // Create links to all listed items. -void LLAppearanceManager::linkAll(const LLUUID& category, +void LLAppearanceMgr::linkAll(const LLUUID& category,  								  LLInventoryModel::item_array_t& items,  								  LLPointer<LLInventoryCallback> cb)  { @@ -987,7 +992,7 @@ void LLAppearanceManager::linkAll(const LLUUID& category,  	}  } -void LLAppearanceManager::updateCOF(const LLUUID& category, bool append) +void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)  {  	LLViewerInventoryCategory *pcat = gInventory.getCategory(category);  	llinfos << "starting, cat " << (pcat ? pcat->getName() : "[UNKNOWN]") << llendl; @@ -1002,9 +1007,9 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)  		for(S32 i = 0; i  < gest_items.count(); ++i)  		{  			LLViewerInventoryItem *gest_item = gest_items.get(i); -			if ( LLGestureManager::instance().isGestureActive( gest_item->getLinkedUUID()) ) +			if ( LLGestureMgr::instance().isGestureActive( gest_item->getLinkedUUID()) )  			{ -				LLGestureManager::instance().deactivateGesture( gest_item->getLinkedUUID() ); +				LLGestureMgr::instance().deactivateGesture( gest_item->getLinkedUUID() );  			}  		}  	} @@ -1065,7 +1070,7 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)  	llinfos << "waiting for LLUpdateAppearanceOnDestroy" << llendl;  } -void LLAppearanceManager::updatePanelOutfitName(const std::string& name) +void LLAppearanceMgr::updatePanelOutfitName(const std::string& name)  {  	LLSidepanelAppearance* panel_appearance =  		dynamic_cast<LLSidepanelAppearance *>(LLSideTray::getInstance()->getPanel("sidepanel_appearance")); @@ -1075,7 +1080,7 @@ void LLAppearanceManager::updatePanelOutfitName(const std::string& name)  	}  } -void LLAppearanceManager::createBaseOutfitLink(const LLUUID& category, LLPointer<LLInventoryCallback> link_waiter) +void LLAppearanceMgr::createBaseOutfitLink(const LLUUID& category, LLPointer<LLInventoryCallback> link_waiter)  {  	const LLUUID cof = getCOF();  	LLViewerInventoryCategory* catp = gInventory.getCategory(category); @@ -1093,7 +1098,7 @@ void LLAppearanceManager::createBaseOutfitLink(const LLUUID& category, LLPointer  	updatePanelOutfitName(new_outfit_name);  } -void LLAppearanceManager::updateAgentWearables(LLWearableHoldingPattern* holder, bool append) +void LLAppearanceMgr::updateAgentWearables(LLWearableHoldingPattern* holder, bool append)  {  	lldebugs << "updateAgentWearables()" << llendl;  	LLInventoryItem::item_array_t items; @@ -1146,7 +1151,7 @@ static void remove_non_link_items(LLInventoryModel::item_array_t &items)  	items = pruned_items;  } -void LLAppearanceManager::updateAppearanceFromCOF() +void LLAppearanceMgr::updateAppearanceFromCOF()  {  	// update dirty flag to see if the state of the COF matches  	// the saved outfit stored as a folder link @@ -1160,7 +1165,7 @@ void LLAppearanceManager::updateAppearanceFromCOF()  	LLUUID current_outfit_id = getCOF();  	// Find all the wearables that are in the COF's subtree. -	lldebugs << "LLAppearanceManager::updateFromCOF()" << llendl; +	lldebugs << "LLAppearanceMgr::updateFromCOF()" << llendl;  	LLInventoryModel::item_array_t wear_items;  	LLInventoryModel::item_array_t obj_items;  	LLInventoryModel::item_array_t gest_items; @@ -1186,9 +1191,6 @@ void LLAppearanceManager::updateAppearanceFromCOF()  	// callback will be called (and this object deleted)  	// before the final getNextData(). -	// BAP future cleanup - no point having found_container when -	// mFoundList already has all the info. -	LLDynamicArray<LLFoundData> found_container;  	for(S32 i = 0; i  < wear_items.count(); ++i)  	{  		LLViewerInventoryItem *item = wear_items.get(i); @@ -1214,7 +1216,6 @@ void LLAppearanceManager::updateAppearanceFromCOF()  #endif  			holder->mFoundList.push_front(found); -			found_container.put(found);  		}  		else  		{ @@ -1229,9 +1230,10 @@ void LLAppearanceManager::updateAppearanceFromCOF()  		}  	} -	for(S32 i = 0; i < found_container.count(); ++i) +	for (LLWearableHoldingPattern::found_list_t::iterator it = holder->mFoundList.begin(); +		 it != holder->mFoundList.end(); ++it)  	{ -		LLFoundData& found = found_container.get(i); +		LLFoundData& found = *it;  		llinfos << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl; @@ -1248,10 +1250,9 @@ void LLAppearanceManager::updateAppearanceFromCOF()  	{  		doOnIdleRepeating(boost::bind(&LLWearableHoldingPattern::pollFetchCompletion,holder));  	} -  } -void LLAppearanceManager::getDescendentsOfAssetType(const LLUUID& category, +void LLAppearanceMgr::getDescendentsOfAssetType(const LLUUID& category,  													LLInventoryModel::item_array_t& items,  													LLAssetType::EType type,  													bool follow_folder_links) @@ -1266,7 +1267,7 @@ void LLAppearanceManager::getDescendentsOfAssetType(const LLUUID& category,  									follow_folder_links);  } -void LLAppearanceManager::getUserDescendents(const LLUUID& category,  +void LLAppearanceMgr::getUserDescendents(const LLUUID& category,   											 LLInventoryModel::item_array_t& wear_items,  											 LLInventoryModel::item_array_t& obj_items,  											 LLInventoryModel::item_array_t& gest_items, @@ -1301,7 +1302,7 @@ void LLAppearanceManager::getUserDescendents(const LLUUID& category,  									follow_folder_links);  } -void LLAppearanceManager::wearInventoryCategory(LLInventoryCategory* category, bool copy, bool append) +void LLAppearanceMgr::wearInventoryCategory(LLInventoryCategory* category, bool copy, bool append)  {  	if(!category) return; @@ -1312,7 +1313,7 @@ void LLAppearanceManager::wearInventoryCategory(LLInventoryCategory* category, b  	// the inventory, and set up an observer that will wait for that to  	// happen.  	LLOutfitFetch* outfit_fetcher = new LLOutfitFetch(copy, append); -	LLInventoryFetchDescendentsObserver::folder_ref_t folders; +	uuid_vec_t folders;  	folders.push_back(category->getUUID());  	outfit_fetcher->fetchDescendents(folders);  	//inc_busy_count(); @@ -1330,7 +1331,7 @@ void LLAppearanceManager::wearInventoryCategory(LLInventoryCategory* category, b  }  // *NOTE: hack to get from avatar inventory to avatar -void LLAppearanceManager::wearInventoryCategoryOnAvatar( LLInventoryCategory* category, bool append ) +void LLAppearanceMgr::wearInventoryCategoryOnAvatar( LLInventoryCategory* category, bool append )  {  	// Avoid unintentionally overwriting old wearables.  We have to do  	// this up front to avoid having to deal with the case of multiple @@ -1342,17 +1343,17 @@ void LLAppearanceManager::wearInventoryCategoryOnAvatar( LLInventoryCategory* ca  	if( gFloaterCustomize )  	{ -		gFloaterCustomize->askToSaveIfDirty(boost::bind(&LLAppearanceManager::changeOutfit, -														&LLAppearanceManager::instance(), +		gFloaterCustomize->askToSaveIfDirty(boost::bind(&LLAppearanceMgr::changeOutfit, +														&LLAppearanceMgr::instance(),  														_1, category->getUUID(), append));  	}  	else  	{ -		LLAppearanceManager::changeOutfit(TRUE, category->getUUID(), append); +		LLAppearanceMgr::changeOutfit(TRUE, category->getUUID(), append);  	}  } -void LLAppearanceManager::wearOutfitByName(const std::string& name) +void LLAppearanceMgr::wearOutfitByName(const std::string& name)  {  	llinfos << "Wearing category " << name << llendl;  	//inc_busy_count(); @@ -1388,7 +1389,7 @@ void LLAppearanceManager::wearOutfitByName(const std::string& name)  	if(cat)  	{ -		LLAppearanceManager::wearInventoryCategory(cat, copy_items, false); +		LLAppearanceMgr::wearInventoryCategory(cat, copy_items, false);  	}  	else  	{ @@ -1424,7 +1425,7 @@ public:  		if (item)  		{  			gInventory.removeObserver(this); -			LLAppearanceManager::instance().addCOFItemLink(item,mDoUpdate); +			LLAppearanceMgr::instance().addCOFItemLink(item,mDoUpdate);  			delete this;  		}  	} @@ -1435,7 +1436,7 @@ private:  }; -void LLAppearanceManager::addCOFItemLink(const LLUUID &item_id, bool do_update ) +void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update )  {  	const LLInventoryItem *item = gInventory.getItem(item_id);  	if (!item) @@ -1449,7 +1450,7 @@ void LLAppearanceManager::addCOFItemLink(const LLUUID &item_id, bool do_update )  	}  } -void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_update ) +void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update )  {		  	const LLViewerInventoryItem *vitem = dynamic_cast<const LLViewerInventoryItem*>(item);  	if (!vitem) @@ -1462,7 +1463,7 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up  	LLInventoryModel::cat_array_t cat_array;  	LLInventoryModel::item_array_t item_array; -	gInventory.collectDescendents(LLAppearanceManager::getCOF(), +	gInventory.collectDescendents(LLAppearanceMgr::getCOF(),  								  cat_array,  								  item_array,  								  LLInventoryModel::EXCLUDE_TRASH); @@ -1490,7 +1491,7 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up  	{  		if (do_update)  		{	 -			LLAppearanceManager::updateAppearanceFromCOF(); +			LLAppearanceMgr::updateAppearanceFromCOF();  		}  		return;  	} @@ -1507,7 +1508,8 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up  	return;  } -void LLAppearanceManager::addEnsembleLink( LLInventoryCategory* cat, bool do_update ) +// BAP remove ensemble code for 2.1? +void LLAppearanceMgr::addEnsembleLink( LLInventoryCategory* cat, bool do_update )  {  #if SUPPORT_ENSEMBLES  	// BAP add check for already in COF. @@ -1521,13 +1523,13 @@ void LLAppearanceManager::addEnsembleLink( LLInventoryCategory* cat, bool do_upd  #endif  } -void LLAppearanceManager::removeCOFItemLinks(const LLUUID& item_id, bool do_update) +void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, bool do_update)  {  	gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);  	LLInventoryModel::cat_array_t cat_array;  	LLInventoryModel::item_array_t item_array; -	gInventory.collectDescendents(LLAppearanceManager::getCOF(), +	gInventory.collectDescendents(LLAppearanceMgr::getCOF(),  								  cat_array,  								  item_array,  								  LLInventoryModel::EXCLUDE_TRASH); @@ -1541,11 +1543,11 @@ void LLAppearanceManager::removeCOFItemLinks(const LLUUID& item_id, bool do_upda  	}  	if (do_update)  	{ -		LLAppearanceManager::updateAppearanceFromCOF(); +		LLAppearanceMgr::updateAppearanceFromCOF();  	}  } -void LLAppearanceManager::updateIsDirty() +void LLAppearanceMgr::updateIsDirty()  {  	LLUUID cof = getCOF();  	LLUUID base_outfit; @@ -1614,7 +1616,7 @@ void LLAppearanceManager::updateIsDirty()  	}  } -void LLAppearanceManager::onFirstFullyVisible() +void LLAppearanceMgr::onFirstFullyVisible()  {  	// If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account)  	// then auto-populate outfits from the library into the My Outfits folder. @@ -1633,7 +1635,7 @@ void LLAppearanceManager::onFirstFullyVisible()  //#define DUMP_CAT_VERBOSE -void LLAppearanceManager::dumpCat(const LLUUID& cat_id, const std::string& msg) +void LLAppearanceMgr::dumpCat(const LLUUID& cat_id, const std::string& msg)  {  	LLInventoryModel::cat_array_t cats;  	LLInventoryModel::item_array_t items; @@ -1654,7 +1656,7 @@ void LLAppearanceManager::dumpCat(const LLUUID& cat_id, const std::string& msg)  	llinfos << msg << " count " << items.count() << llendl;  } -void LLAppearanceManager::dumpItemArray(const LLInventoryModel::item_array_t& items, +void LLAppearanceMgr::dumpItemArray(const LLInventoryModel::item_array_t& items,  										const std::string& msg)  {  	llinfos << msg << llendl; @@ -1666,17 +1668,17 @@ void LLAppearanceManager::dumpItemArray(const LLInventoryModel::item_array_t& it  	llinfos << llendl;  } -LLAppearanceManager::LLAppearanceManager(): +LLAppearanceMgr::LLAppearanceMgr():  	mAttachmentInvLinkEnabled(false),  	mOutfitIsDirty(false)  {  } -LLAppearanceManager::~LLAppearanceManager() +LLAppearanceMgr::~LLAppearanceMgr()  {  } -void LLAppearanceManager::setAttachmentInvLinkEnable(bool val) +void LLAppearanceMgr::setAttachmentInvLinkEnable(bool val)  {  	llinfos << "setAttachmentInvLinkEnable => " << (int) val << llendl;  	mAttachmentInvLinkEnabled = val; @@ -1699,7 +1701,7 @@ void dumpAttachmentSet(const std::set<LLUUID>& atts, const std::string& msg)         llinfos << llendl;  } -void LLAppearanceManager::registerAttachment(const LLUUID& item_id) +void LLAppearanceMgr::registerAttachment(const LLUUID& item_id)  {         mRegisteredAttachments.insert(item_id);  	   gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); @@ -1707,7 +1709,7 @@ void LLAppearanceManager::registerAttachment(const LLUUID& item_id)  	   if (mAttachmentInvLinkEnabled)  	   { -		   LLAppearanceManager::addCOFItemLink(item_id, false);  // Add COF link for item. +		   LLAppearanceMgr::addCOFItemLink(item_id, false);  // Add COF link for item.  	   }  	   else  	   { @@ -1715,7 +1717,7 @@ void LLAppearanceManager::registerAttachment(const LLUUID& item_id)  	   }  } -void LLAppearanceManager::unregisterAttachment(const LLUUID& item_id) +void LLAppearanceMgr::unregisterAttachment(const LLUUID& item_id)  {         mRegisteredAttachments.erase(item_id);  	   gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); @@ -1724,8 +1726,8 @@ void LLAppearanceManager::unregisterAttachment(const LLUUID& item_id)  	   if (mAttachmentInvLinkEnabled)  	   { -		   //LLAppearanceManager::dumpCat(LLAppearanceManager::getCOF(),"Removing attachment link:"); -		   LLAppearanceManager::removeCOFItemLinks(item_id, false); +		   //LLAppearanceMgr::dumpCat(LLAppearanceMgr::getCOF(),"Removing attachment link:"); +		   LLAppearanceMgr::removeCOFItemLinks(item_id, false);  	   }  	   else  	   { @@ -1733,7 +1735,7 @@ void LLAppearanceManager::unregisterAttachment(const LLUUID& item_id)  	   }  } -void LLAppearanceManager::linkRegisteredAttachments() +void LLAppearanceMgr::linkRegisteredAttachments()  {  	for (std::set<LLUUID>::iterator it = mRegisteredAttachments.begin();  		 it != mRegisteredAttachments.end(); @@ -1745,12 +1747,12 @@ void LLAppearanceManager::linkRegisteredAttachments()  	mRegisteredAttachments.clear();  } -BOOL LLAppearanceManager::getIsInCOF(const LLUUID& obj_id) const +BOOL LLAppearanceMgr::getIsInCOF(const LLUUID& obj_id) const  {  	return gInventory.isObjectDescendentOf(obj_id, getCOF());  } -BOOL LLAppearanceManager::getIsProtectedCOFItem(const LLUUID& obj_id) const +BOOL LLAppearanceMgr::getIsProtectedCOFItem(const LLUUID& obj_id) const  {  	if (!getIsInCOF(obj_id)) return FALSE; diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index 9d6cd34ad7..2d6a0a10ed 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -43,9 +43,9 @@ class LLWearable;  class LLWearableHoldingPattern;  class LLInventoryCallback; -class LLAppearanceManager: public LLSingleton<LLAppearanceManager> +class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>  { -	friend class LLSingleton<LLAppearanceManager>; +	friend class LLSingleton<LLAppearanceMgr>;  public:  	void updateAppearanceFromCOF(); @@ -120,8 +120,8 @@ public:  	void onFirstFullyVisible();  protected: -	LLAppearanceManager(); -	~LLAppearanceManager(); +	LLAppearanceMgr(); +	~LLAppearanceMgr();  private: @@ -324,7 +324,7 @@ template <class T>  void callAfterCategoryFetch(const LLUUID& cat_id, T callable)  {  	CallAfterCategoryFetchStage1<T> *stage1 = new CallAfterCategoryFetchStage1<T>(callable); -	LLInventoryFetchDescendentsObserver::folder_ref_t folders; +	uuid_vec_t folders;  	folders.push_back(cat_id);  	stage1->fetchDescendents(folders);  	if (stage1->isEverythingComplete()) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index a3d0b8d8d9..43c8c679c6 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -79,6 +79,7 @@  #include "lllocationhistory.h"  #include "llfasttimerview.h"  #include "llvoicechannel.h" +#include "llvoavatarself.h"  #include "llsidetray.h" @@ -356,7 +357,7 @@ void request_initial_instant_messages()  	if (!requested  		&& gMessageSystem  		&& LLMuteList::getInstance()->isLoaded() -		&& gAgent.getAvatarObject()) +		&& isAgentAvatarValid())  	{  		// Auto-accepted inventory items may require the avatar object  		// to build a correct name.  Likewise, inventory offers from @@ -1648,7 +1649,7 @@ bool LLAppViewer::cleanup()  		// HACK: Attempt to wait until the screen res. switch is complete.  		ms_sleep(1000); -		LLWeb::loadURLExternal( gLaunchFileOnQuit ); +		LLWeb::loadURLExternal( gLaunchFileOnQuit, false );  		llinfos << "File launched." << llendflush;  	} @@ -3619,7 +3620,7 @@ void LLAppViewer::idle()  		// Handle pending gesture processing  		static LLFastTimer::DeclareTimer ftm("Agent Position");  		LLFastTimer t(ftm); -		LLGestureManager::instance().update(); +		LLGestureMgr::instance().update();  		gAgent.updateAgentPosition(gFrameDTClamped, yaw, current_mouse.mX, current_mouse.mY);  	} diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index 63d9ed19ad..60a6d2f072 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -469,7 +469,7 @@ bool LLAppViewerWin32::initHardwareTest()  			if (OSBTN_NO== button)  			{  				LL_INFOS("AppInit") << "User quitting after failed DirectX 9 detection" << LL_ENDL; -				LLWeb::loadURLExternal(DIRECTX_9_URL); +				LLWeb::loadURLExternal(DIRECTX_9_URL, false);  				return false;  			}  			gWarningSettings.setBOOL("AboutDirectX9", FALSE); diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index 2bd3728ab7..370ecc0665 100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -487,10 +487,10 @@ void LLUpdateAgentInventoryResponder::uploadComplete(const LLSD& content)  	  {  		  // If this gesture is active, then we need to update the in-memory  		  // active map with the new pointer.				 -		  if (LLGestureManager::instance().isGestureActive(item_id)) +		  if (LLGestureMgr::instance().isGestureActive(item_id))  		  {  			  LLUUID asset_id = new_item->getAssetUUID(); -			  LLGestureManager::instance().replaceGesture(item_id, asset_id); +			  LLGestureMgr::instance().replaceGesture(item_id, asset_id);  			  gInventory.notifyObservers();  		  }				 diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 699916b0d6..c85c72837c 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -113,13 +113,13 @@ void LLAvatarActions::removeFriendDialog(const LLUUID& id)  	if (id.isNull())  		return; -	std::vector<LLUUID> ids; +	uuid_vec_t ids;  	ids.push_back(id);  	removeFriendsDialog(ids);  }  // static -void LLAvatarActions::removeFriendsDialog(const std::vector<LLUUID>& ids) +void LLAvatarActions::removeFriendsDialog(const uuid_vec_t& ids)  {  	if(ids.size() == 0)  		return; @@ -144,7 +144,7 @@ void LLAvatarActions::removeFriendsDialog(const std::vector<LLUUID>& ids)  	}  	LLSD payload; -	for (std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); ++it) +	for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)  	{  		payload["ids"].append(*it);  	} @@ -175,7 +175,7 @@ void LLAvatarActions::offerTeleport(const LLUUID& invitee)  }  // static -void LLAvatarActions::offerTeleport(const std::vector<LLUUID>& ids)  +void LLAvatarActions::offerTeleport(const uuid_vec_t& ids)   {  	if (ids.size() == 0)  		return; @@ -236,7 +236,7 @@ void LLAvatarActions::startCall(const LLUUID& id)  }  // static -void LLAvatarActions::startAdhocCall(const std::vector<LLUUID>& ids) +void LLAvatarActions::startAdhocCall(const uuid_vec_t& ids)  {  	if (ids.size() == 0)  	{ @@ -245,7 +245,7 @@ void LLAvatarActions::startAdhocCall(const std::vector<LLUUID>& ids)  	// convert vector into LLDynamicArray for addSession  	LLDynamicArray<LLUUID> id_array; -	for (std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); ++it) +	for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)  	{  		id_array.push_back(*it);  	} @@ -286,11 +286,11 @@ bool LLAvatarActions::canCall()  }  // static -void LLAvatarActions::startConference(const std::vector<LLUUID>& ids) +void LLAvatarActions::startConference(const uuid_vec_t& ids)  {  	// *HACK: Copy into dynamic array  	LLDynamicArray<LLUUID> id_array; -	for (std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); ++it) +	for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)  	{  		id_array.push_back(*it);  	} @@ -521,7 +521,7 @@ bool LLAvatarActions::handlePay(const LLSD& notification, const LLSD& response,  // static  void LLAvatarActions::callback_invite_to_group(LLUUID group_id, LLUUID id)  { -	std::vector<LLUUID> agent_ids; +	uuid_vec_t agent_ids;  	agent_ids.push_back(id);  	LLFloaterGroupInvite::showForGroup(group_id, &agent_ids); diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index 9adf6efec7..9d8b4b4e23 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -60,13 +60,13 @@ public:  	 * Show a friend removal dialog.  	 */  	static void removeFriendDialog(const LLUUID& id); -	static void removeFriendsDialog(const std::vector<LLUUID>& ids); +	static void removeFriendsDialog(const uuid_vec_t& ids);  	/**  	 * Show teleport offer dialog.  	 */  	static void offerTeleport(const LLUUID& invitee); -	static void offerTeleport(const std::vector<LLUUID>& ids); +	static void offerTeleport(const uuid_vec_t& ids);  	/**  	 * Start instant messaging session. @@ -86,12 +86,12 @@ public:  	/**  	 * Start an ad-hoc conference voice call with multiple users  	 */ -	static void startAdhocCall(const std::vector<LLUUID>& ids); +	static void startAdhocCall(const uuid_vec_t& ids);  	/**  	 * Start conference chat with the given avatars.  	 */ -	static void startConference(const std::vector<LLUUID>& ids); +	static void startConference(const uuid_vec_t& ids);  	/**  	 * Show avatar profile. diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index 91ebe910ce..6ec62a61a0 100644 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp @@ -204,17 +204,17 @@ void LLAvatarList::refresh()  	bool have_filter		= !mNameFilter.empty();  	// Save selection.	 -	std::vector<LLUUID> selected_ids; +	uuid_vec_t selected_ids;  	getSelectedUUIDs(selected_ids);  	LLUUID current_id = getSelectedUUID();  	// Determine what to add and what to remove. -	std::vector<LLUUID> added, removed; +	uuid_vec_t added, removed;  	LLAvatarList::computeDifference(getIDs(), added, removed);  	// Handle added items.  	unsigned nadded = 0; -	for (std::vector<LLUUID>::const_iterator it=added.begin(); it != added.end(); it++) +	for (uuid_vec_t::const_iterator it=added.begin(); it != added.end(); it++)  	{  		std::string name;  		const LLUUID& buddy_id = *it; @@ -236,7 +236,7 @@ void LLAvatarList::refresh()  	}  	// Handle removed items. -	for (std::vector<LLUUID>::const_iterator it=removed.begin(); it != removed.end(); it++) +	for (uuid_vec_t::const_iterator it=removed.begin(); it != removed.end(); it++)  	{  		removeItemByUUID(*it);  		modified = true; @@ -369,7 +369,7 @@ BOOL LLAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)  	BOOL handled = LLUICtrl::handleRightMouseDown(x, y, mask);  	if ( mContextMenu )  	{ -		std::vector<LLUUID> selected_uuids; +		uuid_vec_t selected_uuids;  		getSelectedUUIDs(selected_uuids);  		mContextMenu->show(this, selected_uuids, x, y);  	} @@ -377,12 +377,12 @@ BOOL LLAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)  }  void LLAvatarList::computeDifference( -	const std::vector<LLUUID>& vnew_unsorted, -	std::vector<LLUUID>& vadded, -	std::vector<LLUUID>& vremoved) +	const uuid_vec_t& vnew_unsorted, +	uuid_vec_t& vadded, +	uuid_vec_t& vremoved)  { -	std::vector<LLUUID> vcur; -	std::vector<LLUUID> vnew = vnew_unsorted; +	uuid_vec_t vcur; +	uuid_vec_t vnew = vnew_unsorted;  	// Convert LLSDs to LLUUIDs.  	{ @@ -396,7 +396,7 @@ void LLAvatarList::computeDifference(  	std::sort(vcur.begin(), vcur.end());  	std::sort(vnew.begin(), vnew.end()); -	std::vector<LLUUID>::iterator it; +	uuid_vec_t::iterator it;  	size_t maxsize = llmax(vcur.size(), vnew.size());  	vadded.resize(maxsize);  	vremoved.resize(maxsize); diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h index b9be1d0bdc..5a55975413 100644 --- a/indra/newview/llavatarlist.h +++ b/indra/newview/llavatarlist.h @@ -53,7 +53,7 @@ class LLAvatarList : public LLFlatListView  {  	LOG_CLASS(LLAvatarList);  public: -	typedef std::vector<LLUUID> uuid_vector_t; +	typedef uuid_vec_t uuid_vector_t;  	struct Params : public LLInitParam::Block<Params, LLFlatListView::Params>   	{ @@ -103,9 +103,9 @@ protected:  	void addNewItem(const LLUUID& id, const std::string& name, BOOL is_online, EAddPosition pos = ADD_BOTTOM);  	void computeDifference( -		const std::vector<LLUUID>& vnew, -		std::vector<LLUUID>& vadded, -		std::vector<LLUUID>& vremoved); +		const uuid_vec_t& vnew, +		uuid_vec_t& vadded, +		uuid_vec_t& vremoved);  	void updateLastInteractionTimes();  	void onItemDoucleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask); diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h index cecb64add7..2db6484a30 100644 --- a/indra/newview/llavatarlistitem.h +++ b/indra/newview/llavatarlistitem.h @@ -70,7 +70,7 @@ public:  	class ContextMenu  	{  	public: -		virtual void show(LLView* spawning_view, const std::vector<LLUUID>& selected_uuids, S32 x, S32 y) = 0; +		virtual void show(LLView* spawning_view, const uuid_vec_t& selected_uuids, S32 x, S32 y) = 0;  	};  	/** diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index c8552de66a..4ea3c61ab2 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -54,7 +54,7 @@  #include "llvoicechannel.h"  #include "llviewerparcelmgr.h" -static void get_voice_participants_uuids(std::vector<LLUUID>& speakers_uuids); +static void get_voice_participants_uuids(uuid_vec_t& speakers_uuids);  void reshape_floater(LLCallFloater* floater, S32 delta_height);  class LLNonAvatarCaller : public LLAvatarListItem @@ -213,9 +213,9 @@ void LLCallFloater::onChange()  	updateParticipantsVoiceState();  	// Add newly joined participants. -	std::vector<LLUUID> speakers_uuids; +	uuid_vec_t speakers_uuids;  	get_voice_participants_uuids(speakers_uuids); -	for (std::vector<LLUUID>::const_iterator it = speakers_uuids.begin(); it != speakers_uuids.end(); it++) +	for (uuid_vec_t::const_iterator it = speakers_uuids.begin(); it != speakers_uuids.end(); it++)  	{  		mParticipants->addAvatarIDExceptAgent(*it);  	} @@ -469,7 +469,7 @@ void LLCallFloater::updateAgentModeratorState()  	mAgentPanel->childSetValue("user_text", name);  } -static void get_voice_participants_uuids(std::vector<LLUUID>& speakers_uuids) +static void get_voice_participants_uuids(uuid_vec_t& speakers_uuids)  {  	// Get a list of participants from VoiceClient  	LLVoiceClient::participantMap *voice_map = gVoiceClient->getParticipantList(); @@ -494,7 +494,7 @@ void LLCallFloater::initParticipantsVoiceState()  		it_end = items.end(); -	std::vector<LLUUID> speakers_uuids; +	uuid_vec_t speakers_uuids;  	get_voice_participants_uuids(speakers_uuids);  	for(; it != it_end; ++it) @@ -505,7 +505,7 @@ void LLCallFloater::initParticipantsVoiceState()  		LLUUID speaker_id = item->getAvatarId(); -		std::vector<LLUUID>::const_iterator speaker_iter = std::find(speakers_uuids.begin(), speakers_uuids.end(), speaker_id); +		uuid_vec_t::const_iterator speaker_iter = std::find(speakers_uuids.begin(), speakers_uuids.end(), speaker_id);  		// If an avatarID assigned to a panel is found in a speakers list  		// obtained from VoiceClient we assign the JOINED status to the owner @@ -534,10 +534,10 @@ void LLCallFloater::initParticipantsVoiceState()  void LLCallFloater::updateParticipantsVoiceState()  { -	std::vector<LLUUID> speakers_list; +	uuid_vec_t speakers_list;  	// Get a list of participants from VoiceClient -	std::vector<LLUUID> speakers_uuids; +	uuid_vec_t speakers_uuids;  	get_voice_participants_uuids(speakers_uuids);  	// Updating the status for each participant already in list. @@ -555,7 +555,7 @@ void LLCallFloater::updateParticipantsVoiceState()  		const LLUUID participant_id = item->getAvatarId();  		bool found = false; -		std::vector<LLUUID>::iterator speakers_iter = std::find(speakers_uuids.begin(), speakers_uuids.end(), participant_id); +		uuid_vec_t::iterator speakers_iter = std::find(speakers_uuids.begin(), speakers_uuids.end(), participant_id);  		lldebugs << "processing speaker: " << item->getAvatarName() << ", " << item->getAvatarId() << llendl; @@ -695,7 +695,7 @@ bool LLCallFloater::validateSpeaker(const LLUUID& speaker_id)  	case  VC_LOCAL_CHAT:  		{  			// A nearby chat speaker is considered valid it it's known to LLVoiceClient (i.e. has enabled voice). -			std::vector<LLUUID> speakers; +			uuid_vec_t speakers;  			get_voice_participants_uuids(speakers);  			is_valid = std::find(speakers.begin(), speakers.end(), speaker_id) != speakers.end();  		} diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp index b32a955038..67d5d21b2a 100644 --- a/indra/newview/llchatbar.cpp +++ b/indra/newview/llchatbar.cpp @@ -107,7 +107,7 @@ LLChatBar::LLChatBar()  LLChatBar::~LLChatBar()  { -	LLGestureManager::instance().removeObserver(mObserver); +	LLGestureMgr::instance().removeObserver(mObserver);  	delete mObserver;  	mObserver = NULL;  	// LLView destructor cleans up children @@ -209,8 +209,8 @@ void LLChatBar::refreshGestures()  		// collect list of unique gestures  		std::map <std::string, BOOL> unique; -		LLGestureManager::item_map_t::const_iterator it; -		const LLGestureManager::item_map_t& active_gestures = LLGestureManager::instance().getActiveGestures(); +		LLGestureMgr::item_map_t::const_iterator it; +		const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures();  		for (it = active_gestures.begin(); it != active_gestures.end(); ++it)  		{  			LLMultiGesture* gesture = (*it).second; @@ -296,7 +296,7 @@ void LLChatBar::setGestureCombo(LLComboBox* combo)  		// now register observer since we have a place to put the results  		mObserver = new LLChatBarGestureObserver(this); -		LLGestureManager::instance().addObserver(mObserver); +		LLGestureMgr::instance().addObserver(mObserver);  		// refresh list from current active gestures  		refreshGestures(); @@ -377,7 +377,7 @@ void LLChatBar::sendChat( EChatType type )  			if (0 == channel)  			{  				// discard returned "found" boolean -				LLGestureManager::instance().triggerAndReviseString(utf8text, &utf8_revised_text); +				LLGestureMgr::instance().triggerAndReviseString(utf8text, &utf8_revised_text);  			}  			else  			{ @@ -516,7 +516,7 @@ void LLChatBar::onInputEditorKeystroke( LLLineEditor* caller, void* userdata )  		std::string utf8_trigger = wstring_to_utf8str(raw_text);  		std::string utf8_out_str(utf8_trigger); -		if (LLGestureManager::instance().matchPrefix(utf8_trigger, &utf8_out_str)) +		if (LLGestureMgr::instance().matchPrefix(utf8_trigger, &utf8_out_str))  		{  			if (self->mInputEditor)  			{ @@ -653,7 +653,7 @@ void LLChatBar::onCommitGesture(LLUICtrl* ctrl)  		// substitution and logging.  		std::string text(trigger);  		std::string revised_text; -		LLGestureManager::instance().triggerAndReviseString(text, &revised_text); +		LLGestureMgr::instance().triggerAndReviseString(text, &revised_text);  		revised_text = utf8str_trim(revised_text);  		if (!revised_text.empty()) diff --git a/indra/newview/lldriverparam.cpp b/indra/newview/lldriverparam.cpp index 830e975e8a..ebd767d654 100644 --- a/indra/newview/lldriverparam.cpp +++ b/indra/newview/lldriverparam.cpp @@ -118,13 +118,12 @@ void LLDriverParamInfo::toStream(std::ostream &out)  	out << std::endl; -	LLVOAvatarSelf *avatar = gAgent.getAvatarObject(); -	if(avatar) +	if(isAgentAvatarValid())  	{  		for (entry_info_list_t::iterator iter = mDrivenInfoList.begin(); iter != mDrivenInfoList.end(); iter++)  		{  			LLDrivenEntryInfo driven = *iter; -			LLViewerVisualParam *param = (LLViewerVisualParam*)avatar->getVisualParam(driven.mDrivenID); +			LLViewerVisualParam *param = (LLViewerVisualParam*)gAgentAvatarp->getVisualParam(driven.mDrivenID);  			if (param)  			{  				param->getInfo()->toStream(out); @@ -146,7 +145,7 @@ void LLDriverParamInfo::toStream(std::ostream &out)  			}  			else  			{ -				llwarns << "could not get parameter " << driven.mDrivenID << " from avatar " << avatar << " for driver parameter " << getID() << llendl; +				llwarns << "could not get parameter " << driven.mDrivenID << " from avatar " << gAgentAvatarp << " for driver parameter " << getID() << llendl;  			}  			out << std::endl;  		} @@ -626,13 +625,13 @@ F32 LLDriverParam::getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight  void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake)  { -	LLVOAvatarSelf *avatar_self = gAgent.getAvatarObject(); -	if(mWearablep &&  +	if(isAgentAvatarValid() && +	   mWearablep &&   	   driven->mParam->getCrossWearable() &&  	   mWearablep->isOnTop())  	{  		// call setWeight through LLVOAvatarSelf so other wearables can be updated with the correct values -		avatar_self->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight, upload_bake ); +		gAgentAvatarp->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight, upload_bake );  	}  	else  	{ diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp index feb18fe393..434c89e8ba 100644 --- a/indra/newview/llfloateranimpreview.cpp +++ b/indra/newview/llfloateranimpreview.cpp @@ -568,7 +568,7 @@ void LLFloaterAnimPreview::onBtnPlay(void* user_data)  	{  		LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); -		if(!avatarp->isMotionActive(previewp->mMotionID)) +		if (!avatarp->isMotionActive(previewp->mMotionID))  		{  			previewp->resetMotion();  			previewp->mPauseRequest = NULL; @@ -593,7 +593,7 @@ void LLFloaterAnimPreview::onBtnPause(void* user_data)  	{  		LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); -		if(avatarp->isMotionActive(previewp->mMotionID)) +		if (avatarp->isMotionActive(previewp->mMotionID))  		{  			if (!avatarp->areAnimationsPaused())  			{ diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index a0b2de85f0..2cb0cdf368 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -157,7 +157,7 @@ void LLFloaterAvatarPicker::onBtnFind()  	find();  } -static void getSelectedAvatarData(const LLScrollListCtrl* from, std::vector<std::string>& avatar_names, std::vector<LLUUID>& avatar_ids) +static void getSelectedAvatarData(const LLScrollListCtrl* from, std::vector<std::string>& avatar_names, uuid_vec_t& avatar_ids)  {  	std::vector<LLScrollListItem*> items = from->getAllSelected();  	for (std::vector<LLScrollListItem*>::iterator iter = items.begin(); iter != items.end(); ++iter) @@ -203,7 +203,7 @@ void LLFloaterAvatarPicker::onBtnSelect()  		if(list)  		{  			std::vector<std::string>	avatar_names; -			std::vector<LLUUID>			avatar_ids; +			uuid_vec_t			avatar_ids;  			getSelectedAvatarData(list, avatar_names, avatar_ids);  			mSelectionCallback(avatar_names, avatar_ids);  		} @@ -247,7 +247,7 @@ void LLFloaterAvatarPicker::populateNearMe()  	LLScrollListCtrl* near_me_scroller = getChild<LLScrollListCtrl>("NearMe");  	near_me_scroller->deleteAllItems(); -	std::vector<LLUUID> avatar_ids; +	uuid_vec_t avatar_ids;  	LLWorld::getInstance()->getAvatars(&avatar_ids, NULL, gAgent.getPositionGlobal(), gSavedSettings.getF32("NearMeRange"));  	for(U32 i=0; i<avatar_ids.size(); i++)  	{ @@ -499,7 +499,7 @@ bool LLFloaterAvatarPicker::isSelectBtnEnabled()  		if(list)  		{ -			std::vector<LLUUID> avatar_ids; +			uuid_vec_t avatar_ids;  			std::vector<std::string> avatar_names;  			getSelectedAvatarData(list, avatar_names, avatar_ids);  			return mOkButtonValidateSignal(avatar_ids); diff --git a/indra/newview/llfloateravatarpicker.h b/indra/newview/llfloateravatarpicker.h index e35466cec8..860f3930ef 100644 --- a/indra/newview/llfloateravatarpicker.h +++ b/indra/newview/llfloateravatarpicker.h @@ -40,11 +40,11 @@  class LLFloaterAvatarPicker : public LLFloater  {  public: -	typedef boost::signals2::signal<bool(const std::vector<LLUUID>&), boost_boolean_combiner> validate_signal_t; +	typedef boost::signals2::signal<bool(const uuid_vec_t&), boost_boolean_combiner> validate_signal_t;  	typedef validate_signal_t::slot_type validate_callback_t;  	// The callback function will be called with an avatar name and UUID. -	typedef boost::function<void (const std::vector<std::string>&, const std::vector<LLUUID>&)> select_callback_t; +	typedef boost::function<void (const std::vector<std::string>&, const uuid_vec_t&)> select_callback_t;  	// Call this to select an avatar.	  	static LLFloaterAvatarPicker* show(select_callback_t callback,   									   BOOL allow_multiple = FALSE, diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp index ac32319690..bea4013a61 100644 --- a/indra/newview/llfloatergesture.cpp +++ b/indra/newview/llfloatergesture.cpp @@ -106,7 +106,7 @@ LLFloaterGesture::LLFloaterGesture(const LLSD& key)  	: LLFloater(key)  {  	mObserver = new LLFloaterGestureObserver(this); -	LLGestureManager::instance().addObserver(mObserver); +	LLGestureMgr::instance().addObserver(mObserver);  	mCommitCallbackRegistrar.add("Gesture.Action.ToogleActiveState", boost::bind(&LLFloaterGesture::onActivateBtnClick, this));  	mCommitCallbackRegistrar.add("Gesture.Action.ShowPreview", boost::bind(&LLFloaterGesture::onClickEdit, this)); @@ -125,7 +125,7 @@ void LLFloaterGesture::done()  		// we load only gesture folder without childred.  		LLInventoryModel::cat_array_t* categories;  		LLInventoryModel::item_array_t* items; -		LLInventoryFetchDescendentsObserver::folder_ref_t unloaded_folders; +		uuid_vec_t unloaded_folders;  		LL_DEBUGS("Gesture")<< "Get subdirs of Gesture Folder...." << LL_ENDL;  		gInventory.getDirectDescendentsOf(mGestureFolderID, categories, items);  		if (categories->empty()) @@ -165,7 +165,7 @@ void LLFloaterGesture::done()  // virtual  LLFloaterGesture::~LLFloaterGesture()  { -	LLGestureManager::instance().removeObserver(mObserver); +	LLGestureMgr::instance().removeObserver(mObserver);  	delete mObserver;  	mObserver = NULL;  	gInventory.removeObserver(this); @@ -197,7 +197,7 @@ BOOL LLFloaterGesture::postBuild()  	setDefaultBtn("play_btn");  	mGestureFolderID = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE, false); -	folder_ref_t folders; +	uuid_vec_t folders;  	folders.push_back(mGestureFolderID);  	//perform loading Gesture directory anyway to make sure that all subdirectory are loaded too. See method done() for details.  	gInventory.addObserver(this); @@ -246,13 +246,13 @@ void LLFloaterGesture::refreshAll()  void LLFloaterGesture::buildGestureList()  {  	S32 scroll_pos = mGestureList->getScrollPos(); -	std::vector<LLUUID> selected_items; +	uuid_vec_t selected_items;  	getSelectedIds(selected_items);  	LL_DEBUGS("Gesture")<< "Rebuilding gesture list "<< LL_ENDL;  	mGestureList->deleteAllItems(); -	LLGestureManager::item_map_t::const_iterator it; -	const LLGestureManager::item_map_t& active_gestures = LLGestureManager::instance().getActiveGestures(); +	LLGestureMgr::item_map_t::const_iterator it; +	const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures();  	for (it = active_gestures.begin(); it != active_gestures.end(); ++it)  	{  		addGesture(it->first,it->second, mGestureList); @@ -278,7 +278,7 @@ void LLFloaterGesture::buildGestureList()  	// attempt to preserve scroll position through re-builds  	// since we do re-build whenever something gets dirty -	for(std::vector<LLUUID>::iterator it = selected_items.begin(); it != selected_items.end(); it++) +	for(uuid_vec_t::iterator it = selected_items.begin(); it != selected_items.end(); it++)  	{  		mGestureList->selectByID(*it);  	} @@ -371,13 +371,13 @@ void LLFloaterGesture::addGesture(const LLUUID& item_id , LLMultiGesture* gestur  	LLScrollListItem* sl_item = list->addElement(element, ADD_BOTTOM);  	if(sl_item)  	{ -		LLFontGL::StyleFlags style = LLGestureManager::getInstance()->isGestureActive(item_id) ? LLFontGL::BOLD : LLFontGL::NORMAL; +		LLFontGL::StyleFlags style = LLGestureMgr::getInstance()->isGestureActive(item_id) ? LLFontGL::BOLD : LLFontGL::NORMAL;  		// *TODO find out why ["font"]["style"] does not affect font style  		((LLScrollListText*)sl_item->getColumn(0))->setFontStyle(style);  	}  } -void LLFloaterGesture::getSelectedIds(std::vector<LLUUID>& ids) +void LLFloaterGesture::getSelectedIds(uuid_vec_t& ids)  {  	std::vector<LLScrollListItem*> items = mGestureList->getAllSelected();  	for(std::vector<LLScrollListItem*>::const_iterator it = items.begin(); it != items.end(); it++) @@ -421,17 +421,17 @@ void LLFloaterGesture::onClickPlay()  	if(item_id.isNull()) return;  	LL_DEBUGS("Gesture")<<" Trying to play gesture id: "<< item_id <<LL_ENDL; -	if(!LLGestureManager::instance().isGestureActive(item_id)) +	if(!LLGestureMgr::instance().isGestureActive(item_id))  	{  		// we need to inform server about gesture activating to be consistent with LLPreviewGesture and  LLGestureComboList.  		BOOL inform_server = TRUE;  		BOOL deactivate_similar = FALSE; -		LLGestureManager::instance().setGestureLoadedCallback(item_id, boost::bind(&LLFloaterGesture::playGesture, this, item_id)); +		LLGestureMgr::instance().setGestureLoadedCallback(item_id, boost::bind(&LLFloaterGesture::playGesture, this, item_id));  		LLViewerInventoryItem *item = gInventory.getItem(item_id);  		llassert(item);  		if (item)  		{ -			LLGestureManager::instance().activateGestureWithAsset(item_id, item->getAssetUUID(), inform_server, deactivate_similar); +			LLGestureMgr::instance().activateGestureWithAsset(item_id, item->getAssetUUID(), inform_server, deactivate_similar);  			LL_DEBUGS("Gesture")<< "Activating gesture with inventory ID: " << item_id <<LL_ENDL;  		}  	} @@ -451,13 +451,13 @@ void LLFloaterGesture::onClickNew()  void LLFloaterGesture::onActivateBtnClick()  { -	std::vector<LLUUID> ids; +	uuid_vec_t ids;  	getSelectedIds(ids);  	if(ids.empty())  		return; -	LLGestureManager* gm = LLGestureManager::getInstance(); -	std::vector<LLUUID>::const_iterator it = ids.begin(); +	LLGestureMgr* gm = LLGestureMgr::getInstance(); +	uuid_vec_t::const_iterator it = ids.begin();  	BOOL first_gesture_state = gm->isGestureActive(*it);  	BOOL is_mixed = FALSE;  	while( ++it != ids.end() ) @@ -468,7 +468,7 @@ void LLFloaterGesture::onActivateBtnClick()  			break;  		}  	} -	for(std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); it++) +	for(uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); it++)  	{  		if(is_mixed)  		{ @@ -494,11 +494,11 @@ void LLFloaterGesture::onCopyPasteAction(const LLSD& command)  	// since we select this comman inventory item had  already arrived .  	if("copy_gesture" == command_name)  	{ -		std::vector<LLUUID> ids; +		uuid_vec_t ids;  		getSelectedIds(ids);  		// make sure that clopboard is empty  		LLInventoryClipboard::instance().reset(); -		for(std::vector<LLUUID>::iterator it = ids.begin(); it != ids.end(); it++) +		for(uuid_vec_t::iterator it = ids.begin(); it != ids.end(); it++)  		{  			LLInventoryItem* item = gInventory.getItem(*it);  			if(item  && item->getInventoryType() == LLInventoryType::IT_GESTURE) @@ -558,7 +558,7 @@ void LLFloaterGesture::onCommitList()  	const LLUUID& item_id = mGestureList->getCurrentID();  	mSelectedID = item_id; -	if (LLGestureManager::instance().isGesturePlaying(item_id)) +	if (LLGestureMgr::instance().isGesturePlaying(item_id))  	{  		childSetVisible("play_btn", false);  		childSetVisible("stop_btn", true); @@ -572,14 +572,14 @@ void LLFloaterGesture::onCommitList()  void LLFloaterGesture::onDeleteSelected()  { -	std::vector<LLUUID> ids; +	uuid_vec_t ids;  	getSelectedIds(ids);  	if(ids.empty())  		return;  	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -	LLGestureManager* gm = LLGestureManager::getInstance(); -	for(std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); it++) +	LLGestureMgr* gm = LLGestureMgr::getInstance(); +	for(uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); it++)  	{  		const LLUUID& selected_item = *it;  		LLInventoryItem* inv_item = gInventory.getItem(selected_item); @@ -610,10 +610,10 @@ void LLFloaterGesture::onDeleteSelected()  void LLFloaterGesture::addToCurrentOutFit()  { -	std::vector<LLUUID> ids; +	uuid_vec_t ids;  	getSelectedIds(ids); -	LLAppearanceManager* am = LLAppearanceManager::getInstance(); -	for(std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); it++) +	LLAppearanceMgr* am = LLAppearanceMgr::getInstance(); +	for(uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); it++)  	{  		am->addCOFItemLink(*it);  	} @@ -623,12 +623,12 @@ void LLFloaterGesture::playGesture(LLUUID item_id)  {  	LL_DEBUGS("Gesture")<<"Playing gesture "<< item_id<<LL_ENDL; -	if (LLGestureManager::instance().isGesturePlaying(item_id)) +	if (LLGestureMgr::instance().isGesturePlaying(item_id))  	{ -		LLGestureManager::instance().stopGesture(item_id); +		LLGestureMgr::instance().stopGesture(item_id);  	}  	else  	{ -		LLGestureManager::instance().playGesture(item_id); +		LLGestureMgr::instance().playGesture(item_id);  	}  } diff --git a/indra/newview/llfloatergesture.h b/indra/newview/llfloatergesture.h index 629d77b949..1676542c77 100644 --- a/indra/newview/llfloatergesture.h +++ b/indra/newview/llfloatergesture.h @@ -85,7 +85,7 @@ private:  	 * Therefore we have to copy these items to avoid viewer crash.  	 * @see LLFloaterGesture::onActivateBtnClick  	 */ -	void getSelectedIds(std::vector<LLUUID>& ids); +	void getSelectedIds(uuid_vec_t& ids);  	bool isActionEnabled(const LLSD& command);  	/**  	 * @brief Activation rules: diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp index c08d891d2f..e7b2da043f 100644 --- a/indra/newview/llfloatergodtools.cpp +++ b/indra/newview/llfloatergodtools.cpp @@ -1150,7 +1150,7 @@ void LLPanelObjectTools::onClickSetBySelection(void* data)  	panelp->childSetValue("target_avatar_name", name);  } -void LLPanelObjectTools::callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids) +void LLPanelObjectTools::callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids)  {  	if (ids.empty() || names.empty()) return;  	mTargetAvatar = ids[0]; diff --git a/indra/newview/llfloatergodtools.h b/indra/newview/llfloatergodtools.h index b95d1a30e4..aee9db78a3 100644 --- a/indra/newview/llfloatergodtools.h +++ b/indra/newview/llfloatergodtools.h @@ -231,7 +231,7 @@ public:  	void onChangeAnything();  	void onApplyChanges();  	void onClickSet(); -	void callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids); +	void callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids);  	void onClickDeletePublicOwnedBy();  	void onClickDeleteAllScriptedOwnedBy();  	void onClickDeleteAllOwnedBy(); diff --git a/indra/newview/llfloatergroupinvite.cpp b/indra/newview/llfloatergroupinvite.cpp index bf484c6343..5d1864b4c8 100644 --- a/indra/newview/llfloatergroupinvite.cpp +++ b/indra/newview/llfloatergroupinvite.cpp @@ -112,7 +112,7 @@ LLFloaterGroupInvite::~LLFloaterGroupInvite()  }  // static -void LLFloaterGroupInvite::showForGroup(const LLUUID& group_id, std::vector<LLUUID> *agent_ids) +void LLFloaterGroupInvite::showForGroup(const LLUUID& group_id, uuid_vec_t *agent_ids)  {  	const LLFloater::Params& floater_params = LLFloater::getDefaultParams();  	S32 floater_header_size = floater_params.header_height; diff --git a/indra/newview/llfloatergroupinvite.h b/indra/newview/llfloatergroupinvite.h index b3f5d75ac1..68943724df 100644 --- a/indra/newview/llfloatergroupinvite.h +++ b/indra/newview/llfloatergroupinvite.h @@ -43,7 +43,7 @@ class LLFloaterGroupInvite  public:  	virtual ~LLFloaterGroupInvite(); -	static void showForGroup(const LLUUID &group_id, std::vector<LLUUID> *agent_ids = NULL); +	static void showForGroup(const LLUUID &group_id, uuid_vec_t *agent_ids = NULL);  protected:  	LLFloaterGroupInvite(const LLUUID& group_id = LLUUID::null); diff --git a/indra/newview/llfloaterlagmeter.cpp b/indra/newview/llfloaterlagmeter.cpp index 85186cee6b..100cbdb217 100644 --- a/indra/newview/llfloaterlagmeter.cpp +++ b/indra/newview/llfloaterlagmeter.cpp @@ -206,7 +206,7 @@ void LLFloaterLagMeter::determineNetwork()  	// *FIXME: We can't blame a large ping time on anything in  	// particular if the frame rate is low, because a low frame -	// rate is a sure recipe for crappy ping times right now until +	// rate is a sure recipe for bad ping times right now until  	// the network handlers are de-synched from the rendering.  	F32 client_frame_time_ms = 1000.0f * LLViewerStats::getInstance()->mFPSStat.getMeanDuration(); diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 5dc63b7ef2..02c83dcd09 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -2774,7 +2774,7 @@ void LLPanelLandAccess::onClickAddAccess()  	gFloaterView->getParentFloater(this)->addDependentFloater(LLFloaterAvatarPicker::show(boost::bind(&LLPanelLandAccess::callbackAvatarCBAccess, this, _1,_2)) );  } -void LLPanelLandAccess::callbackAvatarCBAccess(const std::vector<std::string>& names, const std::vector<LLUUID>& ids) +void LLPanelLandAccess::callbackAvatarCBAccess(const std::vector<std::string>& names, const uuid_vec_t& ids)  {  	if (!names.empty() && !ids.empty())  	{ @@ -2819,7 +2819,7 @@ void LLPanelLandAccess::onClickAddBanned()  }  // static -void LLPanelLandAccess::callbackAvatarCBBanned(const std::vector<std::string>& names, const std::vector<LLUUID>& ids) +void LLPanelLandAccess::callbackAvatarCBBanned(const std::vector<std::string>& names, const uuid_vec_t& ids)  {  	if (!names.empty() && !ids.empty())  	{ diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h index a4785e8f5b..fe80766a74 100644 --- a/indra/newview/llfloaterland.h +++ b/indra/newview/llfloaterland.h @@ -167,7 +167,7 @@ public:  	static void onClickSet(void* data);  	static void onClickClear(void* data);  	static void onClickShow(void* data); -	static void callbackAvatarPick(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data); +	static void callbackAvatarPick(const std::vector<std::string>& names, const uuid_vec_t& ids, void* data);  	static void finalizeAvatarPick(void* data);  	static void callbackHighlightTransferable(S32 option, void* userdata);  	static void onClickStartAuction(void*); @@ -374,8 +374,8 @@ public:  	void onClickAddAccess();  	void onClickAddBanned(); -	void callbackAvatarCBBanned(const std::vector<std::string>& names, const std::vector<LLUUID>& ids); -	void callbackAvatarCBAccess(const std::vector<std::string>& names, const std::vector<LLUUID>& ids); +	void callbackAvatarCBBanned(const std::vector<std::string>& names, const uuid_vec_t& ids); +	void callbackAvatarCBAccess(const std::vector<std::string>& names, const uuid_vec_t& ids);  protected:  	LLNameListCtrl*		mListAccess; diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index d54736e942..3758cbe74f 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -610,7 +610,7 @@ void LLPanelRegionGeneralInfo::onClickKick()  	parent_floater->addDependentFloater(child_floater);  } -void LLPanelRegionGeneralInfo::onKickCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids) +void LLPanelRegionGeneralInfo::onKickCommit(const std::vector<std::string>& names, const uuid_vec_t& ids)  {  	if (names.empty() || ids.empty()) return;  	if(ids[0].notNull()) @@ -848,7 +848,7 @@ void LLPanelRegionDebugInfo::onClickChooseAvatar()  } -void LLPanelRegionDebugInfo::callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids) +void LLPanelRegionDebugInfo::callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids)  {  	if (ids.empty() || names.empty()) return;  	mTargetAvatar = ids[0]; @@ -1531,7 +1531,7 @@ void LLPanelEstateInfo::onClickKickUser()  	parent_floater->addDependentFloater(child_floater);  } -void LLPanelEstateInfo::onKickUserCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids) +void LLPanelEstateInfo::onKickUserCommit(const std::vector<std::string>& names, const uuid_vec_t& ids)  {  	if (names.empty() || ids.empty()) return; @@ -1616,7 +1616,6 @@ bool LLPanelEstateInfo::isLindenEstate()  	return (estate_id <= ESTATE_LAST_LINDEN);  } -typedef std::vector<LLUUID> AgentOrGroupIDsVector;  struct LLEstateAccessChangeInfo  {  	LLEstateAccessChangeInfo(const LLSD& sd) @@ -1637,7 +1636,7 @@ struct LLEstateAccessChangeInfo  		LLSD sd;  		sd["name"] = mDialogName;  		sd["operation"] = (S32)mOperationFlag; -		for (AgentOrGroupIDsVector::const_iterator it = mAgentOrGroupIDs.begin(); +		for (uuid_vec_t::const_iterator it = mAgentOrGroupIDs.begin();  			it != mAgentOrGroupIDs.end();  			++it)  		{ @@ -1648,7 +1647,7 @@ struct LLEstateAccessChangeInfo  	U32 mOperationFlag;	// ESTATE_ACCESS_BANNED_AGENT_ADD, _REMOVE, etc.  	std::string mDialogName; -	AgentOrGroupIDsVector mAgentOrGroupIDs; // List of agent IDs to apply to this change +	uuid_vec_t mAgentOrGroupIDs; // List of agent IDs to apply to this change  };  // Special case callback for groups, since it has different callback format than names @@ -1716,7 +1715,7 @@ bool LLPanelEstateInfo::accessAddCore2(const LLSD& notification, const LLSD& res  }  // static -void LLPanelEstateInfo::accessAddCore3(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data) +void LLPanelEstateInfo::accessAddCore3(const std::vector<std::string>& names, const uuid_vec_t& ids, void* data)  {  	LLEstateAccessChangeInfo* change_info = (LLEstateAccessChangeInfo*)data;  	if (!change_info) return; diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h index 8d315bdb78..482ebb3303 100644 --- a/indra/newview/llfloaterregioninfo.h +++ b/indra/newview/llfloaterregioninfo.h @@ -168,7 +168,7 @@ public:  protected:  	virtual BOOL sendUpdate();  	void onClickKick(); -	void onKickCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids); +	void onKickCommit(const std::vector<std::string>& names, const uuid_vec_t& ids);  	static void onClickKickAll(void* userdata);  	bool onKickAllCommit(const LLSD& notification, const LLSD& response);  	static void onClickMessage(void* userdata); @@ -193,7 +193,7 @@ protected:  	virtual BOOL sendUpdate();  	void onClickChooseAvatar(); -	void callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids); +	void callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids);  	static void onClickReturn(void *);  	bool callbackReturn(const LLSD& notification, const LLSD& response);  	static void onClickTopColliders(void*); @@ -284,7 +284,7 @@ public:  	// Core methods for all above add/remove button clicks  	static void accessAddCore(U32 operation_flag, const std::string& dialog_name);  	static bool accessAddCore2(const LLSD& notification, const LLSD& response); -	static void accessAddCore3(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data); +	static void accessAddCore3(const std::vector<std::string>& names, const uuid_vec_t& ids, void* data);  	static void accessRemoveCore(U32 operation_flag, const std::string& dialog_name, const std::string& list_ctrl_name);  	static bool accessRemoveCore2(const LLSD& notification, const LLSD& response); @@ -296,7 +296,7 @@ public:  	// Send the actual EstateOwnerRequest "estateaccessdelta" message  	static void sendEstateAccessDelta(U32 flags, const LLUUID& agent_id); -	void onKickUserCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids); +	void onKickUserCommit(const std::vector<std::string>& names, const uuid_vec_t& ids);  	static void onClickMessageEstate(void* data);  	bool onMessageCommit(const LLSD& notification, const LLSD& response); diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index 42a7eeff26..b42b34835d 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -308,7 +308,7 @@ void LLFloaterReporter::onClickSelectAbuser()  	gFloaterView->getParentFloater(this)->addDependentFloater(LLFloaterAvatarPicker::show(boost::bind(&LLFloaterReporter::callbackAvatarID, this, _1, _2), FALSE, TRUE ));  } -void LLFloaterReporter::callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids) +void LLFloaterReporter::callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids)  {  	if (ids.empty() || names.empty()) return; diff --git a/indra/newview/llfloaterreporter.h b/indra/newview/llfloaterreporter.h index 7c6473f975..23784b7650 100644 --- a/indra/newview/llfloaterreporter.h +++ b/indra/newview/llfloaterreporter.h @@ -123,7 +123,7 @@ private:  	void setPosBox(const LLVector3d &pos);  	void enableControls(BOOL own_avatar);  	void getObjectInfo(const LLUUID& object_id); -	void callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids); +	void callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids);  	void setFromAvatar(const LLUUID& avatar_id, const std::string& avatar_name = LLStringUtil::null);  private: diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index daba3d8460..4792d761d8 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -644,7 +644,7 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)  	std::string msg_parcels = LLTrans::getString("ScriptLimitsParcelsOwned", args_parcels);  	childSetValue("parcels_listed", LLSD(msg_parcels)); -	std::vector<LLUUID> names_requested; +	uuid_vec_t names_requested;  	// This makes the assumption that all objects will have the same set  	// of attributes, ie they will all have, or none will have locations diff --git a/indra/newview/llfloatersellland.cpp b/indra/newview/llfloatersellland.cpp index eae6121e79..980b456497 100644 --- a/indra/newview/llfloatersellland.cpp +++ b/indra/newview/llfloatersellland.cpp @@ -96,7 +96,7 @@ private:  	static void doShowObjects(void *userdata);  	static bool callbackHighlightTransferable(const LLSD& notification, const LLSD& response); -	void callbackAvatarPick(const std::vector<std::string>& names, const std::vector<LLUUID>& ids); +	void callbackAvatarPick(const std::vector<std::string>& names, const uuid_vec_t& ids);  public:  	virtual BOOL postBuild(); @@ -391,7 +391,7 @@ void LLFloaterSellLandUI::doSelectAgent()  	addDependentFloater(LLFloaterAvatarPicker::show(boost::bind(&LLFloaterSellLandUI::callbackAvatarPick, this, _1, _2), FALSE, TRUE));  } -void LLFloaterSellLandUI::callbackAvatarPick(const std::vector<std::string>& names, const std::vector<LLUUID>& ids) +void LLFloaterSellLandUI::callbackAvatarPick(const std::vector<std::string>& names, const uuid_vec_t& ids)  {	  	LLParcel* parcel = mParcelSelection->getParcel(); diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp index 8ab050beaa..84ea353dab 100644 --- a/indra/newview/llfloatertopobjects.cpp +++ b/indra/newview/llfloatertopobjects.cpp @@ -315,7 +315,7 @@ void LLFloaterTopObjects::doToObjects(int action, bool all)  	LLCtrlListInterface *list = childGetListInterface("objects_list");  	if (!list || list->getItemCount() == 0) return; -	std::vector<LLUUID>::iterator id_itor; +	uuid_vec_t::iterator id_itor;  	bool start_message = true; diff --git a/indra/newview/llfloatertopobjects.h b/indra/newview/llfloatertopobjects.h index ee3c5d3cce..8fb89a3cc5 100644 --- a/indra/newview/llfloatertopobjects.h +++ b/indra/newview/llfloatertopobjects.h @@ -89,7 +89,7 @@ private:  	std::string mMethod;  	LLSD mObjectListData; -	std::vector<LLUUID> mObjectListIDs; +	uuid_vec_t mObjectListIDs;  	U32 mCurrentMode;  	U32 mFlags; diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 1472f490bb..90a100bd9b 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -865,7 +865,7 @@ BOOL LLFolderView::getSelectionList(std::set<LLUUID> &selection) const  BOOL LLFolderView::startDrag(LLToolDragAndDrop::ESource source)  {  	std::vector<EDragAndDropType> types; -	std::vector<LLUUID> cargo_ids; +	uuid_vec_t cargo_ids;  	selected_items_t::iterator item_it;  	BOOL can_drag = TRUE;  	if (!mSelectedItems.empty()) diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp index 18f81fe506..1a06bef6cb 100644 --- a/indra/newview/llfriendcard.cpp +++ b/indra/newview/llfriendcard.cpp @@ -322,7 +322,7 @@ void LLFriendCardsManager::collectFriendsLists(folderid_buddies_map_t& folderBud  		if (NULL == items)  			continue; -		std::vector<LLUUID> buddyUUIDs; +		uuid_vec_t buddyUUIDs;  		for (itBuddy = items->begin(); itBuddy != items->end(); ++itBuddy)  		{  			buddyUUIDs.push_back((*itBuddy)->getCreatorUUID()); @@ -409,7 +409,7 @@ void LLFriendCardsManager::fetchAndCheckFolderDescendents(const LLUUID& folder_i  	// This instance will be deleted in LLInitialFriendCardsFetch::done().  	LLInitialFriendCardsFetch* fetch = new LLInitialFriendCardsFetch(cb); -	LLInventoryFetchDescendentsObserver::folder_ref_t folders; +	uuid_vec_t folders;  	folders.push_back(folder_id);  	fetch->fetchDescendents(folders); diff --git a/indra/newview/llfriendcard.h b/indra/newview/llfriendcard.h index 1cda52c1d7..638a1eca84 100644 --- a/indra/newview/llfriendcard.h +++ b/indra/newview/llfriendcard.h @@ -49,7 +49,7 @@ class LLFriendCardsManager  	friend class CreateFriendCardCallback;  public: -	typedef std::map<LLUUID, std::vector<LLUUID> > folderid_buddies_map_t; +	typedef std::map<LLUUID, uuid_vec_t > folderid_buddies_map_t;  	// LLFriendObserver implementation  	void changed(U32 mask) diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp index 0ba7bdf613..fbacbd704f 100644 --- a/indra/newview/llgesturemgr.cpp +++ b/indra/newview/llgesturemgr.cpp @@ -67,7 +67,7 @@ static const LLUUID& get_linked_uuid(const LLUUID& item_id);  // Lightweight constructor.  // init() does the heavy lifting. -LLGestureManager::LLGestureManager() +LLGestureMgr::LLGestureMgr()  :	mValid(FALSE),  	mPlaying(),  	mActive(), @@ -79,7 +79,7 @@ LLGestureManager::LLGestureManager()  // We own the data for gestures, so clean them up. -LLGestureManager::~LLGestureManager() +LLGestureMgr::~LLGestureMgr()  {  	item_map_t::iterator it;  	for (it = mActive.begin(); it != mActive.end(); ++it) @@ -93,12 +93,12 @@ LLGestureManager::~LLGestureManager()  } -void LLGestureManager::init() +void LLGestureMgr::init()  {  	// TODO  } -void LLGestureManager::changed(U32 mask)  +void LLGestureMgr::changed(U32 mask)   {   	LLInventoryFetchObserver::changed(mask); @@ -136,7 +136,7 @@ void LLGestureManager::changed(U32 mask)  // Use this version when you have the item_id but not the asset_id,  // and you KNOW the inventory is loaded. -void LLGestureManager::activateGesture(const LLUUID& item_id) +void LLGestureMgr::activateGesture(const LLUUID& item_id)  {  	LLViewerInventoryItem* item = gInventory.getItem(item_id);  	if (!item) return; @@ -152,7 +152,7 @@ void LLGestureManager::activateGesture(const LLUUID& item_id)  } -void LLGestureManager::activateGestures(LLViewerInventoryItem::item_array_t& items) +void LLGestureMgr::activateGestures(LLViewerInventoryItem::item_array_t& items)  {  	// Load up the assets  	S32 count = 0; @@ -248,7 +248,7 @@ struct LLLoadInfo  /**   * It will load a gesture from remote storage   */ -void LLGestureManager::activateGestureWithAsset(const LLUUID& item_id, +void LLGestureMgr::activateGestureWithAsset(const LLUUID& item_id,  												const LLUUID& asset_id,  												BOOL inform_server,  												BOOL deactivate_similar) @@ -257,7 +257,7 @@ void LLGestureManager::activateGestureWithAsset(const LLUUID& item_id,  	if( !gAssetStorage )  	{ -		llwarns << "LLGestureManager::activateGestureWithAsset without valid gAssetStorage" << llendl; +		llwarns << "LLGestureMgr::activateGestureWithAsset without valid gAssetStorage" << llendl;  		return;  	}  	// If gesture is already active, nothing to do. @@ -299,7 +299,7 @@ void LLGestureManager::activateGestureWithAsset(const LLUUID& item_id,  } -void LLGestureManager::deactivateGesture(const LLUUID& item_id) +void LLGestureMgr::deactivateGesture(const LLUUID& item_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id);  	item_map_t::iterator it = mActive.find(base_item_id); @@ -338,16 +338,16 @@ void LLGestureManager::deactivateGesture(const LLUUID& item_id)  	gAgent.sendReliableMessage(); -	LLAppearanceManager::instance().removeCOFItemLinks(base_item_id, false); +	LLAppearanceMgr::instance().removeCOFItemLinks(base_item_id, false);  	notifyObservers();  } -void LLGestureManager::deactivateSimilarGestures(LLMultiGesture* in, const LLUUID& in_item_id) +void LLGestureMgr::deactivateSimilarGestures(LLMultiGesture* in, const LLUUID& in_item_id)  {  	const LLUUID& base_in_item_id = get_linked_uuid(in_item_id); -	std::vector<LLUUID> gest_item_ids; +	uuid_vec_t gest_item_ids;  	// Deactivate all gestures that match  	item_map_t::iterator it; @@ -386,7 +386,7 @@ void LLGestureManager::deactivateSimilarGestures(LLMultiGesture* in, const LLUUI  	// Inform database of the change  	LLMessageSystem* msg = gMessageSystem;  	BOOL start_message = TRUE; -	std::vector<LLUUID>::const_iterator vit = gest_item_ids.begin(); +	uuid_vec_t::const_iterator vit = gest_item_ids.begin();  	while (vit != gest_item_ids.end())  	{  		if (start_message) @@ -431,7 +431,7 @@ void LLGestureManager::deactivateSimilarGestures(LLMultiGesture* in, const LLUUI  } -BOOL LLGestureManager::isGestureActive(const LLUUID& item_id) +BOOL LLGestureMgr::isGestureActive(const LLUUID& item_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id);  	item_map_t::iterator it = mActive.find(base_item_id); @@ -439,7 +439,7 @@ BOOL LLGestureManager::isGestureActive(const LLUUID& item_id)  } -BOOL LLGestureManager::isGesturePlaying(const LLUUID& item_id) +BOOL LLGestureMgr::isGesturePlaying(const LLUUID& item_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id); @@ -452,7 +452,7 @@ BOOL LLGestureManager::isGesturePlaying(const LLUUID& item_id)  	return gesture->mPlaying;  } -BOOL LLGestureManager::isGesturePlaying(LLMultiGesture* gesture) +BOOL LLGestureMgr::isGesturePlaying(LLMultiGesture* gesture)  {  	if(!gesture)  	{ @@ -462,7 +462,7 @@ BOOL LLGestureManager::isGesturePlaying(LLMultiGesture* gesture)  	return gesture->mPlaying;  } -void LLGestureManager::replaceGesture(const LLUUID& item_id, LLMultiGesture* new_gesture, const LLUUID& asset_id) +void LLGestureMgr::replaceGesture(const LLUUID& item_id, LLMultiGesture* new_gesture, const LLUUID& asset_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id); @@ -504,11 +504,11 @@ void LLGestureManager::replaceGesture(const LLUUID& item_id, LLMultiGesture* new  	notifyObservers();  } -void LLGestureManager::replaceGesture(const LLUUID& item_id, const LLUUID& new_asset_id) +void LLGestureMgr::replaceGesture(const LLUUID& item_id, const LLUUID& new_asset_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id); -	item_map_t::iterator it = LLGestureManager::instance().mActive.find(base_item_id); +	item_map_t::iterator it = LLGestureMgr::instance().mActive.find(base_item_id);  	if (it == mActive.end())  	{  		llwarns << "replaceGesture for inactive gesture " << base_item_id << llendl; @@ -517,10 +517,10 @@ void LLGestureManager::replaceGesture(const LLUUID& item_id, const LLUUID& new_a  	// mActive owns this gesture pointer, so clean up memory.  	LLMultiGesture* gesture = (*it).second; -	LLGestureManager::instance().replaceGesture(base_item_id, gesture, new_asset_id); +	LLGestureMgr::instance().replaceGesture(base_item_id, gesture, new_asset_id);  } -void LLGestureManager::playGesture(LLMultiGesture* gesture) +void LLGestureMgr::playGesture(LLMultiGesture* gesture)  {  	if (!gesture) return; @@ -539,7 +539,7 @@ void LLGestureManager::playGesture(LLMultiGesture* gesture)  // Convenience function that looks up the item_id for you. -void LLGestureManager::playGesture(const LLUUID& item_id) +void LLGestureMgr::playGesture(const LLUUID& item_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id); @@ -556,7 +556,7 @@ void LLGestureManager::playGesture(const LLUUID& item_id)  // Iterates through space delimited tokens in string, triggering any gestures found.  // Generates a revised string that has the found tokens replaced by their replacement strings  // and (as a minor side effect) has multiple spaces in a row replaced by single spaces. -BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::string* revised_string) +BOOL LLGestureMgr::triggerAndReviseString(const std::string &utf8str, std::string* revised_string)  {  	std::string tokenized = utf8str; @@ -649,7 +649,7 @@ BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::s  } -BOOL LLGestureManager::triggerGesture(KEY key, MASK mask) +BOOL LLGestureMgr::triggerGesture(KEY key, MASK mask)  {  	std::vector <LLMultiGesture *> matching;  	item_map_t::iterator it; @@ -683,7 +683,7 @@ BOOL LLGestureManager::triggerGesture(KEY key, MASK mask)  } -S32 LLGestureManager::getPlayingCount() const +S32 LLGestureMgr::getPlayingCount() const  {  	return mPlaying.size();  } @@ -697,7 +697,7 @@ struct IsGesturePlaying : public std::unary_function<LLMultiGesture*, bool>  	}  }; -void LLGestureManager::update() +void LLGestureMgr::update()  {  	S32 i;  	for (i = 0; i < (S32)mPlaying.size(); ++i) @@ -740,14 +740,13 @@ void LLGestureManager::update()  // Run all steps until you're either done or hit a wait. -void LLGestureManager::stepGesture(LLMultiGesture* gesture) +void LLGestureMgr::stepGesture(LLMultiGesture* gesture)  {  	if (!gesture)  	{  		return;  	} -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	if (!avatar) return; +	if (!isAgentAvatarValid()) return;  	// Of the ones that started playing, have any stopped? @@ -758,8 +757,8 @@ void LLGestureManager::stepGesture(LLMultiGesture* gesture)  	{  		// look in signaled animations (simulator's view of what is  		// currently playing. -		LLVOAvatar::AnimIterator play_it = avatar->mSignaledAnimations.find(*gest_it); -		if (play_it != avatar->mSignaledAnimations.end()) +		LLVOAvatar::AnimIterator play_it = gAgentAvatarp->mSignaledAnimations.find(*gest_it); +		if (play_it != gAgentAvatarp->mSignaledAnimations.end())  		{  			++gest_it;  		} @@ -777,8 +776,8 @@ void LLGestureManager::stepGesture(LLMultiGesture* gesture)  		 gest_it != gesture->mRequestedAnimIDs.end();  		 )  	{ -	 LLVOAvatar::AnimIterator play_it = avatar->mSignaledAnimations.find(*gest_it); -		if (play_it != avatar->mSignaledAnimations.end()) +	 LLVOAvatar::AnimIterator play_it = gAgentAvatarp->mSignaledAnimations.find(*gest_it); +		if (play_it != gAgentAvatarp->mSignaledAnimations.end())  		{  			// Hooray, this animation has started playing!  			// Copy into playing. @@ -888,7 +887,7 @@ void LLGestureManager::stepGesture(LLMultiGesture* gesture)  } -void LLGestureManager::runStep(LLMultiGesture* gesture, LLGestureStep* step) +void LLGestureMgr::runStep(LLMultiGesture* gesture, LLGestureStep* step)  {  	switch(step->getType())  	{ @@ -975,7 +974,7 @@ void LLGestureManager::runStep(LLMultiGesture* gesture, LLGestureStep* step)  // static -void LLGestureManager::onLoadComplete(LLVFS *vfs, +void LLGestureMgr::onLoadComplete(LLVFS *vfs,  									   const LLUUID& asset_uuid,  									   LLAssetType::EType type,  									   void* user_data, S32 status, LLExtStat ext_status) @@ -988,7 +987,7 @@ void LLGestureManager::onLoadComplete(LLVFS *vfs,  	delete info;  	info = NULL; -	LLGestureManager& self = LLGestureManager::instance(); +	LLGestureMgr& self = LLGestureMgr::instance();  	self.mLoadingCount--;  	if (0 == status) @@ -1094,12 +1093,12 @@ void LLGestureManager::onLoadComplete(LLVFS *vfs,  		llwarns << "Problem loading gesture: " << status << llendl; -		LLGestureManager::instance().mActive.erase(item_id);			 +		LLGestureMgr::instance().mActive.erase(item_id);			  	}  } -void LLGestureManager::stopGesture(LLMultiGesture* gesture) +void LLGestureMgr::stopGesture(LLMultiGesture* gesture)  {  	if (!gesture) return; @@ -1139,7 +1138,7 @@ void LLGestureManager::stopGesture(LLMultiGesture* gesture)  } -void LLGestureManager::stopGesture(const LLUUID& item_id) +void LLGestureMgr::stopGesture(const LLUUID& item_id)  {  	const LLUUID& base_item_id = get_linked_uuid(item_id); @@ -1153,12 +1152,12 @@ void LLGestureManager::stopGesture(const LLUUID& item_id)  } -void LLGestureManager::addObserver(LLGestureManagerObserver* observer) +void LLGestureMgr::addObserver(LLGestureManagerObserver* observer)  {  	mObservers.push_back(observer);  } -void LLGestureManager::removeObserver(LLGestureManagerObserver* observer) +void LLGestureMgr::removeObserver(LLGestureManagerObserver* observer)  {  	std::vector<LLGestureManagerObserver*>::iterator it;  	it = std::find(mObservers.begin(), mObservers.end(), observer); @@ -1171,9 +1170,9 @@ void LLGestureManager::removeObserver(LLGestureManagerObserver* observer)  // Call this method when it's time to update everyone on a new state.  // Copy the list because an observer could respond by removing itself  // from the list. -void LLGestureManager::notifyObservers() +void LLGestureMgr::notifyObservers()  { -	lldebugs << "LLGestureManager::notifyObservers" << llendl; +	lldebugs << "LLGestureMgr::notifyObservers" << llendl;  	std::vector<LLGestureManagerObserver*> observers = mObservers; @@ -1185,7 +1184,7 @@ void LLGestureManager::notifyObservers()  	}  } -BOOL LLGestureManager::matchPrefix(const std::string& in_str, std::string* out_str) +BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str)  {  	S32 in_len = in_str.length(); @@ -1216,7 +1215,7 @@ BOOL LLGestureManager::matchPrefix(const std::string& in_str, std::string* out_s  } -void LLGestureManager::getItemIDs(std::vector<LLUUID>* ids) +void LLGestureMgr::getItemIDs(uuid_vec_t* ids)  {  	item_map_t::const_iterator it;  	for (it = mActive.begin(); it != mActive.end(); ++it) @@ -1225,7 +1224,7 @@ void LLGestureManager::getItemIDs(std::vector<LLUUID>* ids)  	}  } -void LLGestureManager::done() +void LLGestureMgr::done()  {  	bool notify = false;  	for(item_map_t::iterator it = mActive.begin(); it != mActive.end(); ++it) diff --git a/indra/newview/llgesturemgr.h b/indra/newview/llgesturemgr.h index 3dd184ddc7..081ca983a9 100644 --- a/indra/newview/llgesturemgr.h +++ b/indra/newview/llgesturemgr.h @@ -54,7 +54,7 @@ public:  	virtual void changed() = 0;  }; -class LLGestureManager : public LLSingleton<LLGestureManager>, public LLInventoryFetchObserver +class LLGestureMgr : public LLSingleton<LLGestureMgr>, public LLInventoryFetchObserver  {  public: @@ -63,8 +63,8 @@ public:  	typedef std::map<LLUUID, LLMultiGesture*> item_map_t;  	typedef std::map<LLUUID, gesture_loaded_callback_t> callback_map_t; -	LLGestureManager(); -	~LLGestureManager(); +	LLGestureMgr(); +	~LLGestureMgr();  	void init(); @@ -146,7 +146,7 @@ public:  	BOOL matchPrefix(const std::string& in_str, std::string* out_str);  	// Copy item ids into the vector -	void getItemIDs(std::vector<LLUUID>* ids); +	void getItemIDs(uuid_vec_t* ids);  protected:  	// Handle the processing of a single gesture diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 7f93a357de..996553ccf7 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -160,7 +160,7 @@ LLGroupRoleData::~LLGroupRoleData()  {	  } -S32 LLGroupRoleData::getMembersInRole(std::vector<LLUUID> members, +S32 LLGroupRoleData::getMembersInRole(uuid_vec_t members,  									  BOOL needs_sort)  {  	if (mRoleID.isNull()) @@ -184,8 +184,8 @@ S32 LLGroupRoleData::getMembersInRole(std::vector<LLUUID> members,  	// Return the number of members in the intersection.  	S32 max_size = llmin( members.size(), mMemberIDs.size() ); -	std::vector<LLUUID> in_role( max_size ); -	std::vector<LLUUID>::iterator in_role_end; +	uuid_vec_t in_role( max_size ); +	uuid_vec_t::iterator in_role_end;  	in_role_end = std::set_intersection(mMemberIDs.begin(), mMemberIDs.end(),  									members.begin(), members.end(),  									in_role.begin()); @@ -200,7 +200,7 @@ void LLGroupRoleData::addMember(const LLUUID& member)  bool LLGroupRoleData::removeMember(const LLUUID& member)  { -	std::vector<LLUUID>::iterator it = std::find(mMemberIDs.begin(),mMemberIDs.end(),member); +	uuid_vec_t::iterator it = std::find(mMemberIDs.begin(),mMemberIDs.end(),member);  	if (it != mMemberIDs.end())  	{ @@ -1736,7 +1736,7 @@ void LLGroupMgr::sendGroupMemberInvites(const LLUUID& group_id, std::map<LLUUID,  //static  void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, -									   std::vector<LLUUID>& member_ids) +									   uuid_vec_t& member_ids)  {  	bool start_message = true;  	LLMessageSystem* msg = gMessageSystem; @@ -1746,7 +1746,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,  	LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id);  	if (!group_datap) return; -	for (std::vector<LLUUID>::iterator it = member_ids.begin(); +	for (uuid_vec_t::iterator it = member_ids.begin();  		 it != member_ids.end(); ++it)  	{  		LLUUID& ejected_member_id = (*it); diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h index 2c86de8b97..82df631b8c 100644 --- a/indra/newview/llgroupmgr.h +++ b/indra/newview/llgroupmgr.h @@ -139,8 +139,8 @@ public:  	const LLUUID& getID() const { return mRoleID; } -	const std::vector<LLUUID>& getRoleMembers() const { return mMemberIDs; } -	S32 getMembersInRole(std::vector<LLUUID> members, BOOL needs_sort = TRUE); +	const uuid_vec_t& getRoleMembers() const { return mMemberIDs; } +	S32 getMembersInRole(uuid_vec_t members, BOOL needs_sort = TRUE);  	S32 getTotalMembersInRole() { return mMemberIDs.size(); }  	LLRoleData getRoleData() const { return mRoleData; } @@ -150,10 +150,10 @@ public:  	bool removeMember(const LLUUID& member);  	void clearMembers(); -	const std::vector<LLUUID>::const_iterator getMembersBegin() const +	const uuid_vec_t::const_iterator getMembersBegin() const  	{ return mMemberIDs.begin(); } -	const std::vector<LLUUID>::const_iterator getMembersEnd() const +	const uuid_vec_t::const_iterator getMembersEnd() const  	{ return mMemberIDs.end(); } @@ -164,7 +164,7 @@ protected:  	LLUUID mRoleID;  	LLRoleData	mRoleData; -	std::vector<LLUUID> mMemberIDs; +	uuid_vec_t mMemberIDs;  	S32	mMemberCount;  private: @@ -340,7 +340,7 @@ public:  	static void sendGroupMemberJoin(const LLUUID& group_id);  	static void sendGroupMemberInvites(const LLUUID& group_id, std::map<LLUUID,LLUUID>& role_member_pairs);  	static void sendGroupMemberEjects(const LLUUID& group_id, -									  std::vector<LLUUID>& member_ids); +									  uuid_vec_t& member_ids);  	void cancelGroupRoleChanges(const LLUUID& group_id); diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 91f4f57e54..9c477791b3 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -922,7 +922,7 @@ BOOL LLIMFloater::dropCallingCard(LLInventoryItem* item, BOOL drop)  	{  		if(drop)  		{ -			std::vector<LLUUID> ids; +			uuid_vec_t ids;  			ids.push_back(item->getCreatorUUID());  			inviteToSession(ids);  		} @@ -955,7 +955,7 @@ BOOL LLIMFloater::dropCategory(LLInventoryCategory* category, BOOL drop)  		}  		else if(drop)  		{ -			std::vector<LLUUID> ids; +			uuid_vec_t ids;  			ids.reserve(count);  			for(S32 i = 0; i < count; ++i)  			{ @@ -992,7 +992,7 @@ private:  	LLUUID mSessionID;  }; -BOOL LLIMFloater::inviteToSession(const std::vector<LLUUID>& ids) +BOOL LLIMFloater::inviteToSession(const uuid_vec_t& ids)  {  	LLViewerRegion* region = gAgent.getRegion();  	if (!region) diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h index 2f034d02b8..763dd5655b 100644 --- a/indra/newview/llimfloater.h +++ b/indra/newview/llimfloater.h @@ -129,7 +129,7 @@ private:  	BOOL dropCategory(LLInventoryCategory* category, BOOL drop);  	BOOL isInviteAllowed() const; -	BOOL inviteToSession(const std::vector<LLUUID>& agent_ids); +	BOOL inviteToSession(const uuid_vec_t& agent_ids);  	static void		onInputEditorFocusReceived( LLFocusableElement* caller, void* userdata );  	static void		onInputEditorFocusLost(LLFocusableElement* caller, void* userdata); diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 389917a6f7..a6473fb34b 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -162,7 +162,7 @@ LLIMModel::LLIMModel()  	addNewMsgCallback(toast_callback);  } -LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, const std::vector<LLUUID>& ids, bool voice) +LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, const uuid_vec_t& ids, bool voice)  :	mSessionID(session_id),  	mName(name),  	mType(type), @@ -444,7 +444,7 @@ LLIMModel::LLIMSession* LLIMModel::findIMSession(const LLUUID& session_id) const  }  //*TODO consider switching to using std::set instead of std::list for holding LLUUIDs across the whole code -LLIMModel::LLIMSession* LLIMModel::findAdHocIMSession(const std::vector<LLUUID>& ids) +LLIMModel::LLIMSession* LLIMModel::findAdHocIMSession(const uuid_vec_t& ids)  {  	S32 num = ids.size();  	if (!num) return NULL; @@ -461,7 +461,7 @@ LLIMModel::LLIMSession* LLIMModel::findAdHocIMSession(const std::vector<LLUUID>&  		std::list<LLUUID> tmp_list(session->mInitialTargetIDs.begin(), session->mInitialTargetIDs.end()); -		std::vector<LLUUID>::const_iterator iter = ids.begin(); +		uuid_vec_t::const_iterator iter = ids.begin();  		while (iter != ids.end())  		{  			tmp_list.remove(*iter); @@ -592,7 +592,7 @@ void LLIMModel::testMessages()  //session name should not be empty  bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type,  -						   const LLUUID& other_participant_id, const std::vector<LLUUID>& ids, bool voice) +						   const LLUUID& other_participant_id, const uuid_vec_t& ids, bool voice)  {  	if (name.empty())  	{ @@ -617,7 +617,7 @@ bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, co  bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, bool voice)  { -	std::vector<LLUUID> no_ids; +	uuid_vec_t no_ids;  	return newSession(session_id, name, type, other_participant_id, no_ids, voice);  } @@ -1023,7 +1023,7 @@ void LLIMModel::sendMessage(const std::string& utf8_text,  		}  		else  		{ -			for(std::vector<LLUUID>::iterator it = session->mInitialTargetIDs.begin(); +			for(uuid_vec_t::iterator it = session->mInitialTargetIDs.begin();  				it!=session->mInitialTargetIDs.end();++it)  			{  				const LLUUID id = *it; @@ -1155,7 +1155,7 @@ private:  bool LLIMModel::sendStartSession(  	const LLUUID& temp_session_id,  	const LLUUID& other_participant_id, -	const std::vector<LLUUID>& ids, +	const uuid_vec_t& ids,  	EInstantMessage dialog)  {  	if ( dialog == IM_SESSION_GROUP_START ) diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index fac8f4954c..ffa8a16797 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -79,7 +79,7 @@ public:  		} SType;  		LLIMSession(const LLUUID& session_id, const std::string& name,  -			const EInstantMessage& type, const LLUUID& other_participant_id, const std::vector<LLUUID>& ids, bool voice); +			const EInstantMessage& type, const LLUUID& other_participant_id, const uuid_vec_t& ids, bool voice);  		virtual ~LLIMSession();  		void sessionInitReplyReceived(const LLUUID& new_session_id); @@ -111,7 +111,7 @@ public:  		EInstantMessage mType;  		SType mSessionType;  		LLUUID mOtherParticipantID; -		std::vector<LLUUID> mInitialTargetIDs; +		uuid_vec_t mInitialTargetIDs;  		std::string mHistoryFileName;  		// connection to voice channel state change signal @@ -170,7 +170,7 @@ public:  	 * Find an Ad-Hoc IM Session with specified participants  	 * @return first found Ad-Hoc session or NULL if the session does not exist  	 */ -	LLIMSession* findAdHocIMSession(const std::vector<LLUUID>& ids); +	LLIMSession* findAdHocIMSession(const uuid_vec_t& ids);  	/**  	 * Rebind session data to a new session id. @@ -185,7 +185,7 @@ public:  	 * @param name session name should not be empty, will return false if empty  	 */  	bool newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id,  -		const std::vector<LLUUID>& ids, bool voice = false); +		const uuid_vec_t& ids, bool voice = false);  	bool newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type,  		const LLUUID& other_participant_id, bool voice = false); @@ -273,7 +273,7 @@ public:  	static void sendLeaveSession(const LLUUID& session_id, const LLUUID& other_participant_id);  	static bool sendStartSession(const LLUUID& temp_session_id, const LLUUID& other_participant_id, -						  const std::vector<LLUUID>& ids, EInstantMessage dialog); +						  const uuid_vec_t& ids, EInstantMessage dialog);  	static void sendTypingState(LLUUID session_id, LLUUID other_participant_id, BOOL typing);  	static void sendMessage(const std::string& utf8_text, const LLUUID& im_session_id,  								const LLUUID& other_participant_id, EInstantMessage dialog); diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index da21939a61..efd23c36ca 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -193,7 +193,7 @@ BOOL LLInvFVBridge::isItemRemovable() const  	}  	// Disable delete from COF folder; have users explicitly choose "detach/take off". -	if (LLAppearanceManager::instance().getIsProtectedCOFItem(mUUID)) +	if (LLAppearanceMgr::instance().getIsProtectedCOFItem(mUUID))  	{  		return FALSE;  	} @@ -260,7 +260,7 @@ void LLInvFVBridge::removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batc  		{  			if(LLAssetType::AT_GESTURE == item->getType())  			{ -				LLGestureManager::instance().deactivateGesture(item->getUUID()); +				LLGestureMgr::instance().deactivateGesture(item->getUUID());  			}  		}  	} @@ -276,7 +276,7 @@ void LLInvFVBridge::removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batc  			{  				if(LLAssetType::AT_GESTURE == descendent_items[j]->getType())  				{ -					LLGestureManager::instance().deactivateGesture(descendent_items[j]->getUUID()); +					LLGestureMgr::instance().deactivateGesture(descendent_items[j]->getUUID());  				}  			}  		} @@ -297,7 +297,7 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*  	LLMessageSystem* msg = gMessageSystem;  	const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);  	LLViewerInventoryItem* item = NULL; -	std::vector<LLUUID> move_ids; +	uuid_vec_t move_ids;  	LLInventoryModel::update_map_t update;  	bool start_new_message = true;  	S32 count = batch.count(); @@ -398,8 +398,8 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*  	}  	// move everything. -	std::vector<LLUUID>::iterator it = move_ids.begin(); -	std::vector<LLUUID>::iterator end = move_ids.end(); +	uuid_vec_t::iterator it = move_ids.begin(); +	uuid_vec_t::iterator end = move_ids.end();  	for(; it != end; ++it)  	{  		gInventory.moveObject((*it), trash_id); @@ -802,7 +802,7 @@ BOOL LLInvFVBridge::isAgentInventory() const  BOOL LLInvFVBridge::isCOFFolder() const  { -	return LLAppearanceManager::instance().getIsInCOF(mUUID); +	return LLAppearanceMgr::instance().getIsInCOF(mUUID);  }  BOOL LLInvFVBridge::isItemPermissive() const @@ -1506,11 +1506,7 @@ BOOL LLFolderBridge::isItemRemovable() const  		return FALSE;  	} -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if(!avatarp) -	{ -		return FALSE; -	} +	if (!isAgentAvatarValid()) return FALSE;  	LLInventoryCategory* category = model->getCategory(mUUID);  	if(!category) @@ -1661,8 +1657,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  	LLInventoryModel* model = getInventoryModel();  	if(!model) return FALSE; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if(!avatarp) return FALSE; +	if (!isAgentAvatarValid()) return FALSE;  	// cannot drag categories into library  	if(!isAgentInventory()) @@ -1748,9 +1743,9 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  				{  					LLInventoryItem* item = descendent_items[i];  					if (item->getType() == LLAssetType::AT_GESTURE -						&& LLGestureManager::instance().isGestureActive(item->getUUID())) +						&& LLGestureMgr::instance().isGestureActive(item->getUUID()))  					{ -						LLGestureManager::instance().deactivateGesture(item->getUUID()); +						LLGestureMgr::instance().deactivateGesture(item->getUUID());  					}  				}  			} @@ -1763,7 +1758,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  					{  						// traverse category and add all contents to currently worn.  						BOOL append = true; -						LLAppearanceManager::instance().wearInventoryCategory(inv_cat, false, append); +						LLAppearanceMgr::instance().wearInventoryCategory(inv_cat, false, append);  					}  					else  					{ @@ -1771,7 +1766,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  						LLInventoryModel::cat_array_t cats;  						LLInventoryModel::item_array_t items;  						gInventory.collectDescendents(inv_cat->getUUID(), cats, items, LLInventoryModel::EXCLUDE_TRASH); -						LLAppearanceManager::instance().linkAll(mUUID,items,NULL); +						LLAppearanceMgr::instance().linkAll(mUUID,items,NULL);  					}  				}  				else @@ -1780,7 +1775,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  				// BAP - should skip if dup.  				if (move_is_into_current_outfit)  				{ -					LLAppearanceManager::instance().addEnsembleLink(inv_cat); +					LLAppearanceMgr::instance().addEnsembleLink(inv_cat);  				}  				else  				{ @@ -2138,7 +2133,7 @@ void LLInventoryCopyAndWearObserver::changed(U32 mask)  				    mContentsCount)  				{  					gInventory.removeObserver(this); -					LLAppearanceManager::instance().wearInventoryCategory(category, FALSE, TRUE); +					LLAppearanceMgr::instance().wearInventoryCategory(category, FALSE, TRUE);  					delete this;  				}  			} @@ -2188,7 +2183,7 @@ void LLFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model  		if(!model) return;  		LLViewerInventoryCategory* cat = getCategory();  		if(!cat) return; -		LLAppearanceManager::instance().addEnsembleLink(cat,true); +		LLAppearanceMgr::instance().addEnsembleLink(cat,true);  		return;  	}  #endif @@ -2418,9 +2413,9 @@ bool LLFolderBridge::removeItemResponse(const LLSD& notification, const LLSD& re  			const LLViewerInventoryItem* item = (*iter);  			const LLUUID& item_id = item->getUUID();  			if (item->getType() == LLAssetType::AT_GESTURE -				&& LLGestureManager::instance().isGestureActive(item_id)) +				&& LLGestureMgr::instance().isGestureActive(item_id))  			{ -				LLGestureManager::instance().deactivateGesture(item_id); +				LLGestureMgr::instance().deactivateGesture(item_id);  			}  		} @@ -2723,7 +2718,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  				addDeleteContextMenuOptions(mItems, mDisabledItems);  				// EXT-4030: disallow deletion of currently worn outfit -				const LLViewerInventoryItem *base_outfit_link = LLAppearanceManager::instance().getBaseOutfitLink(); +				const LLViewerInventoryItem *base_outfit_link = LLAppearanceMgr::instance().getBaseOutfitLink();  				if (base_outfit_link && (cat == base_outfit_link->getLinkedCategory()))  				{  					mDisabledItems.push_back(std::string("Delete")); @@ -2755,7 +2750,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  		sSelf = this;  		LLRightClickInventoryFetchDescendentsObserver* fetch = new LLRightClickInventoryFetchDescendentsObserver(FALSE); -		LLInventoryFetchDescendentsObserver::folder_ref_t folders; +		uuid_vec_t folders;  		LLViewerInventoryCategory* category = (LLViewerInventoryCategory*)model->getCategory(mUUID);  		if (category)  		{ @@ -2971,7 +2966,7 @@ void LLFolderBridge::modifyOutfit(BOOL append)  	LLViewerInventoryCategory* cat = getCategory();  	if(!cat) return; -	LLAppearanceManager::instance().wearInventoryCategory( cat, FALSE, append ); +	LLAppearanceMgr::instance().wearInventoryCategory( cat, FALSE, append );  }  // helper stuff @@ -3026,8 +3021,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  		return FALSE;  	} -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if(!avatarp) return FALSE; +	if (!isAgentAvatarValid()) return FALSE;  	LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource();  	BOOL accept = FALSE; @@ -3049,7 +3043,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  		const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);  		const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);  		const BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); -		const BOOL move_is_outof_current_outfit = LLAppearanceManager::instance().getIsInCOF(inv_item->getUUID()); +		const BOOL move_is_outof_current_outfit = LLAppearanceMgr::instance().getIsInCOF(inv_item->getUUID());  		// Can't explicitly drag things out of the COF.  		if (move_is_outof_current_outfit) @@ -3081,9 +3075,9 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  		if(accept && drop)  		{  			if (inv_item->getType() == LLAssetType::AT_GESTURE -				&& LLGestureManager::instance().isGestureActive(inv_item->getUUID()) && move_is_into_trash) +				&& LLGestureMgr::instance().isGestureActive(inv_item->getUUID()) && move_is_into_trash)  			{ -				LLGestureManager::instance().deactivateGesture(inv_item->getUUID()); +				LLGestureMgr::instance().deactivateGesture(inv_item->getUUID());  			}  			// If an item is being dragged between windows, unselect  			// everything in the active window so that we don't follow @@ -3136,7 +3130,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  				// BAP - should skip if dup.  				if (move_is_into_current_outfit)  				{ -					LLAppearanceManager::instance().addCOFItemLink(inv_item); +					LLAppearanceMgr::instance().addCOFItemLink(inv_item);  				}  				else  				{ @@ -3795,7 +3789,7 @@ LLUIImagePtr LLGestureBridge::getIcon() const  LLFontGL::StyleFlags LLGestureBridge::getLabelStyle() const  { -	if( LLGestureManager::instance().isGestureActive(mUUID) ) +	if( LLGestureMgr::instance().isGestureActive(mUUID) )  	{  		return LLFontGL::BOLD;  	} @@ -3807,7 +3801,7 @@ LLFontGL::StyleFlags LLGestureBridge::getLabelStyle() const  std::string LLGestureBridge::getLabelSuffix() const  { -	if( LLGestureManager::instance().isGestureActive(mUUID) ) +	if( LLGestureMgr::instance().isGestureActive(mUUID) )  	{  		LLStringUtil::format_map_t args;  		args["[GESLABEL]"] =  LLItemBridge::getLabelSuffix(); @@ -3824,7 +3818,7 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode  {  	if (isAddAction(action))  	{ -		LLGestureManager::instance().activateGesture(mUUID); +		LLGestureMgr::instance().activateGesture(mUUID);  		LLViewerInventoryItem* item = gInventory.getItem(mUUID);  		if (!item) return; @@ -3836,7 +3830,7 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode  	}  	else if (isRemoveAction(action))  	{ -		LLGestureManager::instance().deactivateGesture(mUUID); +		LLGestureMgr::instance().deactivateGesture(mUUID);  		LLViewerInventoryItem* item = gInventory.getItem(mUUID);  		if (!item) return; @@ -3848,17 +3842,17 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode  	}  	else if("play" == action)  	{ -		if(!LLGestureManager::instance().isGestureActive(mUUID)) +		if(!LLGestureMgr::instance().isGestureActive(mUUID))  		{  			// we need to inform server about gesture activating to be consistent with LLPreviewGesture and  LLGestureComboList.  			BOOL inform_server = TRUE;  			BOOL deactivate_similar = FALSE; -			LLGestureManager::instance().setGestureLoadedCallback(mUUID, boost::bind(&LLGestureBridge::playGesture, mUUID)); +			LLGestureMgr::instance().setGestureLoadedCallback(mUUID, boost::bind(&LLGestureBridge::playGesture, mUUID));  			LLViewerInventoryItem* item = gInventory.getItem(mUUID);  			llassert(item);  			if (item)  			{ -				LLGestureManager::instance().activateGestureWithAsset(mUUID, item->getAssetUUID(), inform_server, deactivate_similar); +				LLGestureMgr::instance().activateGestureWithAsset(mUUID, item->getAssetUUID(), inform_server, deactivate_similar);  			}  		}  		else @@ -3900,7 +3894,7 @@ BOOL LLGestureBridge::removeItem()  	// This will also force close the preview window, if it exists.  	// This may actually delete *this, if mUUID is in the COF. -	LLGestureManager::instance().deactivateGesture(item_id); +	LLGestureMgr::instance().deactivateGesture(item_id);  	// If deactivateGesture deleted *this, then return out immediately.  	if (!model->getObject(item_id)) @@ -3933,7 +3927,7 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  		getClipboardEntries(true, items, disabled_items, flags);  		items.push_back(std::string("Gesture Separator")); -		if (LLGestureManager::instance().isGestureActive(getUUID())) +		if (LLGestureMgr::instance().isGestureActive(getUUID()))  		{  			items.push_back(std::string("Deactivate"));  		} @@ -3948,13 +3942,13 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  // static  void LLGestureBridge::playGesture(const LLUUID& item_id)  { -	if (LLGestureManager::instance().isGesturePlaying(item_id)) +	if (LLGestureMgr::instance().isGesturePlaying(item_id))  	{ -		LLGestureManager::instance().stopGesture(item_id); +		LLGestureMgr::instance().stopGesture(item_id);  	}  	else  	{ -		LLGestureManager::instance().playGesture(item_id); +		LLGestureMgr::instance().playGesture(item_id);  	}  } @@ -4155,8 +4149,7 @@ std::string LLObjectBridge::getLabelSuffix() const  {  	if (get_is_item_worn(mUUID))  	{ -		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -		std::string attachment_point_name = avatarp->getAttachedPointName(mUUID); +		std::string attachment_point_name = gAgentAvatarp->getAttachedPointName(mUUID);  		// e.g. "(worn on ...)" / "(attached to ...)"  		LLStringUtil::format_map_t args; @@ -4175,10 +4168,10 @@ void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attach  	payload["item_id"] = item->getLinkedUUID(); // Wear the base object in case this is a link.  	S32 attach_pt = 0; -	if (gAgent.getAvatarObject() && attachment) +	if (isAgentAvatarValid() && attachment)  	{ -		for (LLVOAvatar::attachment_map_t::iterator iter = gAgent.getAvatarObject()->mAttachmentPoints.begin(); -			 iter != gAgent.getAvatarObject()->mAttachmentPoints.end(); ++iter) +		for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); +			 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)  		{  			if (iter->second == attachment)  			{ @@ -4204,9 +4197,7 @@ void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attach  bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& response)  { -	LLVOAvatar *avatarp = gAgent.getAvatarObject(); - -	if (!avatarp->canAttachMoreObjects()) +	if (!gAgentAvatarp->canAttachMoreObjects())  	{  		LLSD args;  		args["MAX_ATTACHMENTS"] = llformat("%d", MAX_AGENT_ATTACHMENTS); @@ -4268,11 +4259,7 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  		LLInventoryItem *item = getItem();  		if(item)  		{ -			LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -			if( !avatarp ) -			{ -				return; -			} +			if (!isAgentAvatarValid()) return;  			if( get_is_item_worn( mUUID ) )  			{ @@ -4288,7 +4275,7 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  				// commented out for DEV-32347  				//items.push_back(std::string("Restore to Last Position")); -				if (!avatarp->canAttachMoreObjects()) +				if (!gAgentAvatarp->canAttachMoreObjects())  				{  					disabled_items.push_back(std::string("Object Wear"));  					disabled_items.push_back(std::string("Attach To")); @@ -4296,15 +4283,14 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  				}  				LLMenuGL* attach_menu = menu.findChildMenuByName("Attach To", TRUE);  				LLMenuGL* attach_hud_menu = menu.findChildMenuByName("Attach To HUD", TRUE); -				LLVOAvatar *avatarp = gAgent.getAvatarObject();  				if (attach_menu  					&& (attach_menu->getChildCount() == 0)  					&& attach_hud_menu  					&& (attach_hud_menu->getChildCount() == 0) -					&& avatarp) +					&& isAgentAvatarValid())  				{ -					for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); -						 iter != avatarp->mAttachmentPoints.end(); ) +					for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); +						 iter != gAgentAvatarp->mAttachmentPoints.end(); )  					{  						LLVOAvatar::attachment_map_t::iterator curiter = iter++;  						LLViewerJointAttachment* attachment = curiter->second; @@ -4354,10 +4340,9 @@ BOOL LLObjectBridge::renameItem(const std::string& new_name)  		model->notifyObservers(); -		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -		if(avatarp) +		if (isAgentAvatarValid())  		{ -			LLViewerObject* obj = avatarp->getWornAttachment( item->getUUID() ); +			LLViewerObject* obj = gAgentAvatarp->getWornAttachment( item->getUUID() );  			if(obj)  			{  				LLSelectMgr::getInstance()->deselectAll(); @@ -4410,7 +4395,7 @@ void wear_inventory_item_on_avatar( LLInventoryItem* item )  		lldebugs << "wear_inventory_item_on_avatar( " << item->getName()  				 << " )" << llendl; -		LLAppearanceManager::instance().addCOFItemLink(item); +		LLAppearanceMgr::instance().addCOFItemLink(item);  	}  } @@ -4547,7 +4532,7 @@ void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_  				LLViewerInventoryItem *gest_item = gest_item_array.get(i);  				if (get_is_item_worn(gest_item->getUUID()))  				{ -					LLGestureManager::instance().deactivateGesture( gest_item->getLinkedUUID() ); +					LLGestureMgr::instance().deactivateGesture( gest_item->getLinkedUUID() );  					gInventory.updateItem( gest_item );  					gInventory.notifyObservers();  				} @@ -4969,20 +4954,7 @@ void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable,  	}  	// Find and remove this item from the COF. -	// FIXME 2.1 - call removeCOFItemLinks in llappearancemgr instead. -	LLInventoryModel::item_array_t items = gInventory.collectLinkedItems(item_id, LLAppearanceManager::instance().getCOF()); -	if (items.size() != 1) -	{ -		llwarns << "Found " << items.size() << " COF links to " << item_id.asString() << ", expected 1" << llendl; -	} -	for (LLInventoryModel::item_array_t::const_iterator iter = items.begin(); -		 iter != items.end(); -		 ++iter) -	{ -		const LLViewerInventoryItem *linked_item = (*iter); -		const LLUUID &item_id = linked_item->getUUID(); -		gInventory.purgeObject(item_id); -	} +	LLAppearanceMgr::instance().removeCOFItemLinks(item_id,false);  	gInventory.notifyObservers();  	delete on_remove_struct; @@ -5008,20 +4980,7 @@ void LLWearableBridge::removeAllClothesFromAvatar()  			continue;  		// Find and remove this item from the COF. -		LLInventoryModel::item_array_t items = gInventory.collectLinkedItems( -			item_id, LLAppearanceManager::instance().getCOF()); -		if (items.size() != 1) -		{ -			llwarns << "Found " << items.size() << " COF links to " << item_id.asString() << ", expected 1" << llendl; -		} -		for (LLInventoryModel::item_array_t::const_iterator iter = items.begin(); -			 iter != items.end(); -			 ++iter) -		{ -			const LLViewerInventoryItem *linked_item = (*iter); -			const LLUUID &item_id = linked_item->getUUID(); -			gInventory.purgeObject(item_id); -		} +		LLAppearanceMgr::instance().removeCOFItemLinks(item_id,false);  	}  	gInventory.notifyObservers(); diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 3553137f53..1e0abeadf1 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -352,8 +352,7 @@ BOOL get_is_item_worn(const LLUUID& id)  	{  		case LLAssetType::AT_OBJECT:  		{ -			const LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); -			if(my_avatar && my_avatar->isWearingAttachment(item->getLinkedUUID())) +			if (isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item->getLinkedUUID()))  				return TRUE;  			break;  		} @@ -363,7 +362,7 @@ BOOL get_is_item_worn(const LLUUID& id)  				return TRUE;  			break;  		case LLAssetType::AT_GESTURE: -			if (LLGestureManager::instance().isGestureActive(item->getLinkedUUID())) +			if (LLGestureMgr::instance().isGestureActive(item->getLinkedUUID()))  				return TRUE;  			break;  		default: diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 83a466a243..41f0b430e8 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -2595,7 +2595,7 @@ void LLInventoryModel::buildParentChildMap()  	}  	count = items.count();  	lost = 0; -	std::vector<LLUUID> lost_item_ids; +	uuid_vec_t lost_item_ids;  	for(i = 0; i < count; ++i)  	{  		LLPointer<LLViewerInventoryItem> item; @@ -2634,7 +2634,7 @@ void LLInventoryModel::buildParentChildMap()  		LLMessageSystem* msg = gMessageSystem;  		BOOL start_new_message = TRUE;  		const LLUUID lnf = findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); -		for(std::vector<LLUUID>::iterator it = lost_item_ids.begin() ; it < lost_item_ids.end(); ++it) +		for(uuid_vec_t::iterator it = lost_item_ids.begin() ; it < lost_item_ids.end(); ++it)  		{  			if(start_new_message)  			{ @@ -3094,7 +3094,7 @@ void LLInventoryModel::processRemoveInventoryItem(LLMessageSystem* msg, void**)  		return;  	}  	S32 count = msg->getNumberOfBlocksFast(_PREHASH_InventoryData); -	std::vector<LLUUID> item_ids; +	uuid_vec_t item_ids;  	update_map_t update;  	for(S32 i = 0; i < count; ++i)  	{ @@ -3110,7 +3110,7 @@ void LLInventoryModel::processRemoveInventoryItem(LLMessageSystem* msg, void**)  		}  	}  	gInventory.accountForUpdate(update); -	for(std::vector<LLUUID>::iterator it = item_ids.begin(); it != item_ids.end(); ++it) +	for(uuid_vec_t::iterator it = item_ids.begin(); it != item_ids.end(); ++it)  	{  		gInventory.deleteObject(*it);  	} @@ -3190,7 +3190,7 @@ void LLInventoryModel::processRemoveInventoryFolder(LLMessageSystem* msg,  				<< llendl;  		return;  	} -	std::vector<LLUUID> folder_ids; +	uuid_vec_t folder_ids;  	update_map_t update;  	S32 count = msg->getNumberOfBlocksFast(_PREHASH_FolderData);  	for(S32 i = 0; i < count; ++i) @@ -3204,7 +3204,7 @@ void LLInventoryModel::processRemoveInventoryFolder(LLMessageSystem* msg,  		}  	}  	gInventory.accountForUpdate(update); -	for(std::vector<LLUUID>::iterator it = folder_ids.begin(); it != folder_ids.end(); ++it) +	for(uuid_vec_t::iterator it = folder_ids.begin(); it != folder_ids.end(); ++it)  	{  		gInventory.deleteObject(*it);  	} @@ -3317,7 +3317,7 @@ void LLInventoryModel::processBulkUpdateInventory(LLMessageSystem* msg, void**)  	count = msg->getNumberOfBlocksFast(_PREHASH_ItemData); -	std::vector<LLUUID> wearable_ids; +	uuid_vec_t wearable_ids;  	item_array_t items;  	std::list<InventoryCallbackInfo> cblist;  	for(i = 0; i < count; ++i) @@ -3774,7 +3774,6 @@ bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(LLInventoryItem* ite  		return false;  	bool allowed = false; -	LLVOAvatarSelf* my_avatar = NULL;  	switch(item->getType())  	{ @@ -3783,8 +3782,7 @@ bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(LLInventoryItem* ite  		break;  	case LLAssetType::AT_OBJECT: -		my_avatar = gAgent.getAvatarObject(); -		if(my_avatar && !my_avatar->isWearingAttachment(item->getUUID())) +		if (isAgentAvatarValid() && !gAgentAvatarp->isWearingAttachment(item->getUUID()))  		{  			allowed = true;  		} diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp index 62c2d80609..9913be2e88 100644 --- a/indra/newview/llinventoryobserver.cpp +++ b/indra/newview/llinventoryobserver.cpp @@ -77,7 +77,7 @@ void LLInventoryCompletionObserver::changed(U32 mask)  	// appropriate.  	if(!mIncomplete.empty())  	{ -		for(item_ref_t::iterator it = mIncomplete.begin(); it < mIncomplete.end(); ) +		for(uuid_vec_t::iterator it = mIncomplete.begin(); it < mIncomplete.end(); )  		{  			LLViewerInventoryItem* item = gInventory.getItem(*it);  			if(!item) @@ -262,7 +262,7 @@ void LLInventoryFetchObserver::fetchItems(  // virtual  void LLInventoryFetchDescendentsObserver::changed(U32 mask)  { -	for(folder_ref_t::iterator it = mIncompleteFolders.begin(); it < mIncompleteFolders.end();) +	for(uuid_vec_t::iterator it = mIncompleteFolders.begin(); it < mIncompleteFolders.end();)  	{  		LLViewerInventoryCategory* cat = gInventory.getCategory(*it);  		if(!cat) @@ -285,9 +285,9 @@ void LLInventoryFetchDescendentsObserver::changed(U32 mask)  }  void LLInventoryFetchDescendentsObserver::fetchDescendents( -	const folder_ref_t& ids) +	const uuid_vec_t& ids)  { -	for(folder_ref_t::const_iterator it = ids.begin(); it != ids.end(); ++it) +	for(uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)  	{  		LLViewerInventoryCategory* cat = gInventory.getCategory(*it);  		if(!cat) continue; @@ -355,7 +355,7 @@ void LLInventoryFetchComboObserver::changed(U32 mask)  {  	if(!mIncompleteItems.empty())  	{ -		for(item_ref_t::iterator it = mIncompleteItems.begin(); it < mIncompleteItems.end(); ) +		for(uuid_vec_t::iterator it = mIncompleteItems.begin(); it < mIncompleteItems.end(); )  		{  			LLViewerInventoryItem* item = gInventory.getItem(*it);  			if(!item) @@ -364,7 +364,7 @@ void LLInventoryFetchComboObserver::changed(U32 mask)  				continue;  			}  			if(item->isComplete()) -		{	 +			{	  				mCompleteItems.push_back(*it);  				it = mIncompleteItems.erase(it);  				continue; @@ -374,7 +374,7 @@ void LLInventoryFetchComboObserver::changed(U32 mask)  	}  	if(!mIncompleteFolders.empty())  	{ -		for(folder_ref_t::iterator it = mIncompleteFolders.begin(); it < mIncompleteFolders.end();) +		for(uuid_vec_t::iterator it = mIncompleteFolders.begin(); it < mIncompleteFolders.end();)  		{  			LLViewerInventoryCategory* cat = gInventory.getCategory(*it);  			if(!cat) @@ -399,11 +399,11 @@ void LLInventoryFetchComboObserver::changed(U32 mask)  }  void LLInventoryFetchComboObserver::fetch( -	const folder_ref_t& folder_ids, -	const item_ref_t& item_ids) +	const uuid_vec_t& folder_ids, +	const uuid_vec_t& item_ids)  {  	lldebugs << "LLInventoryFetchComboObserver::fetch()" << llendl; -	for(folder_ref_t::const_iterator fit = folder_ids.begin(); fit != folder_ids.end(); ++fit) +	for(uuid_vec_t::const_iterator fit = folder_ids.begin(); fit != folder_ids.end(); ++fit)  	{  		LLViewerInventoryCategory* cat = gInventory.getCategory(*fit);  		if(!cat) continue; @@ -426,7 +426,7 @@ void LLInventoryFetchComboObserver::fetch(  	// have to fetch it individually.  	LLSD items_llsd;  	LLUUID owner_id; -	for(item_ref_t::const_iterator iit = item_ids.begin(); iit != item_ids.end(); ++iit) +	for(uuid_vec_t::const_iterator iit = item_ids.begin(); iit != item_ids.end(); ++iit)  	{  		LLViewerInventoryItem* item = gInventory.getItem(*iit);  		if(!item) @@ -564,8 +564,8 @@ void LLInventoryTransactionObserver::changed(U32 mask)  			if(id == mTransactionID)  			{  				// woo hoo, we found it -				folder_ref_t folders; -				item_ref_t items; +				uuid_vec_t folders; +				uuid_vec_t items;  				S32 count;  				count = msg->getNumberOfBlocksFast(_PREHASH_FolderData);  				S32 i; diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h index d6dded52d4..e1c8bd3faf 100644 --- a/indra/newview/llinventoryobserver.h +++ b/indra/newview/llinventoryobserver.h @@ -93,9 +93,8 @@ public:  protected:  	virtual void done() = 0; -	typedef std::vector<LLUUID> item_ref_t; -	item_ref_t mComplete; -	item_ref_t mIncomplete; +	uuid_vec_t mComplete; +	uuid_vec_t mIncomplete;  }; @@ -113,7 +112,7 @@ public:  	LLInventoryFetchObserver(bool retry_if_missing = false): mRetryIfMissing(retry_if_missing) {}  	virtual void changed(U32 mask); -	typedef std::vector<LLUUID> item_ref_t; +	typedef uuid_vec_t item_ref_t;  	bool isEverythingComplete() const;  	void fetchItems(const item_ref_t& ids); @@ -138,15 +137,14 @@ public:  	LLInventoryFetchDescendentsObserver() {}  	virtual void changed(U32 mask); -	typedef std::vector<LLUUID> folder_ref_t; -	void fetchDescendents(const folder_ref_t& ids); +	void fetchDescendents(const uuid_vec_t& ids);  	bool isEverythingComplete() const;  	virtual void done() = 0;  protected:  	bool isComplete(LLViewerInventoryCategory* cat); -	folder_ref_t mIncompleteFolders; -	folder_ref_t mCompleteFolders; +	uuid_vec_t mIncompleteFolders; +	uuid_vec_t mCompleteFolders;  };  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -163,18 +161,16 @@ public:  	LLInventoryFetchComboObserver() : mDone(false) {}  	virtual void changed(U32 mask); -	typedef std::vector<LLUUID> folder_ref_t; -	typedef std::vector<LLUUID> item_ref_t; -	void fetch(const folder_ref_t& folder_ids, const item_ref_t& item_ids); +	void fetch(const uuid_vec_t& folder_ids, const uuid_vec_t& item_ids);  	virtual void done() = 0;  protected:  	bool mDone; -	folder_ref_t mCompleteFolders; -	folder_ref_t mIncompleteFolders; -	item_ref_t mCompleteItems; -	item_ref_t mIncompleteItems; +	uuid_vec_t mCompleteFolders; +	uuid_vec_t mIncompleteFolders; +	uuid_vec_t mCompleteItems; +	uuid_vec_t mIncompleteItems;  };  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -197,7 +193,7 @@ public:  protected:  	virtual void done() = 0; -	typedef std::vector<LLUUID> item_ref_t; +	typedef uuid_vec_t item_ref_t;  	item_ref_t mExist;  	item_ref_t mMIA;  }; @@ -221,8 +217,7 @@ public:  protected:  	virtual void done() = 0; -	typedef std::vector<LLUUID> item_ref_t; -	item_ref_t mAdded; +	uuid_vec_t mAdded;  };  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -242,9 +237,7 @@ public:  	virtual void changed(U32 mask);  protected: -	typedef std::vector<LLUUID> folder_ref_t; -	typedef std::vector<LLUUID> item_ref_t; -	virtual void done(const folder_ref_t& folders, const item_ref_t& items) = 0; +	virtual void done(const uuid_vec_t& folders, const uuid_vec_t& items) = 0;  	LLTransactionID mTransactionID;  }; diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index d7720b735c..9a2d76e7e2 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -723,7 +723,7 @@ void LLInventoryPanel::setSelection(const LLUUID& obj_id, BOOL take_keyboard_foc  {  	// Don't select objects in COF (e.g. to prevent refocus when items are worn).  	const LLInventoryObject *obj = gInventory.getObject(obj_id); -	if (obj && obj->getParentUUID() == LLAppearanceManager::instance().getCOF()) +	if (obj && obj->getParentUUID() == LLAppearanceMgr::instance().getCOF())  	{  		return;  	} @@ -871,10 +871,9 @@ bool LLInventoryPanel::attachObject(const LLSD& userdata)  	mFolders->getSelectionList(selected_items);  	std::string joint_name = userdata.asString(); -	LLVOAvatar *avatarp = static_cast<LLVOAvatar*>(gAgent.getAvatarObject());  	LLViewerJointAttachment* attachmentp = NULL; -	for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -		 iter != avatarp->mAttachmentPoints.end(); ) +	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +		 iter != gAgentAvatarp->mAttachmentPoints.end(); )  	{  		LLVOAvatar::attachment_map_t::iterator curiter = iter++;  		LLViewerJointAttachment* attachment = curiter->second; diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 4100e2fc61..ba50287ebd 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -108,7 +108,7 @@ public:  private:  	/*virtual*/ void done()  	{ -		std::vector<LLUUID>::const_iterator it = mAdded.begin(), end = mAdded.end(); +		uuid_vec_t::const_iterator it = mAdded.begin(), end = mAdded.end();  		for(; it != end; ++it)  		{  			LLInventoryItem* item = gInventory.getItem(*it); diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp index 6dc0a929c8..6747bcb9c9 100644 --- a/indra/newview/llmaniprotate.cpp +++ b/indra/newview/llmaniprotate.cpp @@ -65,6 +65,7 @@  #include "lldrawable.h"  #include "llglheaders.h"  #include "lltrans.h" +#include "llvoavatarself.h"  const F32 RADIUS_PIXELS = 100.f;		// size in screen space  const F32 SQ_RADIUS = RADIUS_PIXELS * RADIUS_PIXELS; @@ -739,7 +740,7 @@ void LLManipRotate::renderSnapGuides()  	LLVector3 test_axis = constraint_axis;  	BOOL constrain_to_ref_object = FALSE; -	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject()) +	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())  	{  		test_axis = test_axis * ~grid_rotation;  	} @@ -766,7 +767,7 @@ void LLManipRotate::renderSnapGuides()  	}  	LLVector3 projected_snap_axis = world_snap_axis; -	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject()) +	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())  	{  		projected_snap_axis = projected_snap_axis * grid_rotation;  	} @@ -1282,7 +1283,7 @@ LLQuaternion LLManipRotate::dragConstrained( S32 x, S32 y )  	LLVector3 axis2;  	LLVector3 test_axis = constraint_axis; -	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject()) +	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())  	{  		test_axis = test_axis * ~grid_rotation;  	} @@ -1306,7 +1307,7 @@ LLQuaternion LLManipRotate::dragConstrained( S32 x, S32 y )  		axis1 = LLVector3::x_axis;  	} -	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject()) +	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())  	{  		axis1 = axis1 * grid_rotation;  	} diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 35c4f7f787..5f0c5e1795 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -714,7 +714,7 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)  				// in position changes even when the mouse moves  				object->setPosition(new_position_local);  				rebuild(object); -				gAgent.getAvatarObject()->clampAttachmentPositions(); +				gAgentAvatarp->clampAttachmentPositions();  				new_position_local = object->getPosition();  				if (selectNode->mIndividualSelection) diff --git a/indra/newview/llmorphview.cpp b/indra/newview/llmorphview.cpp index 47234eb773..d670eb6ffd 100644 --- a/indra/newview/llmorphview.cpp +++ b/indra/newview/llmorphview.cpp @@ -89,15 +89,14 @@ void	LLMorphView::initialize()  	mCameraYaw = 0.f;  	mCameraDist = -1.f; -	LLVOAvatar *avatarp = gAgent.getAvatarObject(); -	if (!avatarp || avatarp->isDead()) +	if (!isAgentAvatarValid() || gAgentAvatarp->isDead())  	{  		gAgentCamera.changeCameraToDefault();  		return;  	} -	avatarp->stopMotion( ANIM_AGENT_BODY_NOISE ); -	avatarp->mSpecialRenderMode = 3; +	gAgentAvatarp->stopMotion( ANIM_AGENT_BODY_NOISE ); +	gAgentAvatarp->mSpecialRenderMode = 3;  	// set up camera for close look at avatar  	mOldCameraNearClip = LLViewerCamera::getInstance()->getNear(); @@ -111,11 +110,10 @@ void	LLMorphView::shutdown()  {  	LLVOAvatarSelf::onCustomizeEnd(); -	LLVOAvatar *avatarp = gAgent.getAvatarObject(); -	if(avatarp && !avatarp->isDead()) +	if (isAgentAvatarValid())  	{ -		avatarp->startMotion( ANIM_AGENT_BODY_NOISE ); -		avatarp->mSpecialRenderMode = 0; +		gAgentAvatarp->startMotion( ANIM_AGENT_BODY_NOISE ); +		gAgentAvatarp->mSpecialRenderMode = 0;  		// reset camera  		LLViewerCamera::getInstance()->setNear(mOldCameraNearClip);  	} @@ -164,15 +162,11 @@ void LLMorphView::updateCamera()  {  	if (!mCameraTargetJoint)  	{ -		setCameraTargetJoint(gAgent.getAvatarObject()->getJoint("mHead")); -	} -	 -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	if( !avatar ) -	{ -		return; -	} -	LLJoint* root_joint = avatar->getRootJoint(); +		setCameraTargetJoint(gAgentAvatarp->getJoint("mHead")); +	}	 +	if (!isAgentAvatarValid()) return; + +	LLJoint* root_joint = gAgentAvatarp->getRootJoint();  	if( !root_joint )  	{  		return; diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index 58fac14349..0f22a50093 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -42,7 +42,7 @@  #include "llagent.h"  #include "llagentcamera.h" -#include "llvoavatarself.h" // to check gAgent.getAvatarObject()->isSitting() +#include "llvoavatarself.h" // to check gAgentAvatarp->isSitting()  #include "llbottomtray.h"  #include "llbutton.h"  #include "llfloaterreg.h" @@ -332,7 +332,7 @@ void LLFloaterMove::setMovementMode(const EMovementMode mode)  	updateButtonsWithMovementMode(mode);  	bool bHideModeButtons = MM_FLY == mode -		|| (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting()); +		|| (isAgentAvatarValid() && gAgentAvatarp->isSitting());  	showModeButtons(!bHideModeButtons); @@ -388,9 +388,9 @@ void LLFloaterMove::initMovementMode()  	}  	setMovementMode(initMovementMode); -	if (gAgent.getAvatarObject()) +	if (isAgentAvatarValid())  	{ -		setEnabled(!gAgent.getAvatarObject()->isSitting()); +		setEnabled(!gAgentAvatarp->isSitting());  	}  } @@ -491,7 +491,7 @@ void LLFloaterMove::onOpen(const LLSD& key)  		showModeButtons(FALSE);  	} -	if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting()) +	if (isAgentAvatarValid() && gAgentAvatarp->isSitting())  	{  		setSittingMode(TRUE);  		showModeButtons(FALSE); diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index 9de1ffddc8..1507b7d324 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -103,7 +103,7 @@ LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p)  	setCommitCallback(boost::bind(&LLGestureComboList::onCommitGesture, this));  	// now register us as observer since we have a place to put the results -	LLGestureManager::instance().addObserver(this); +	LLGestureMgr::instance().addObserver(this);  	// refresh list from current active gestures  	refreshGestures(); @@ -244,8 +244,8 @@ void LLGestureComboList::refreshGestures()  	mList->clearRows();  	mGestures.clear(); -	LLGestureManager::item_map_t::const_iterator it; -	const LLGestureManager::item_map_t& active_gestures = LLGestureManager::instance().getActiveGestures(); +	LLGestureMgr::item_map_t::const_iterator it; +	const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures();  	LLSD::Integer idx(0);  	for (it = active_gestures.begin(); it != active_gestures.end(); ++it)  	{ @@ -289,7 +289,7 @@ void LLGestureComboList::refreshGestures()  			gesture = mGestures.at(index);  	} -	if(gesture && LLGestureManager::instance().isGesturePlaying(gesture)) +	if(gesture && LLGestureMgr::instance().isGesturePlaying(gesture))  	{  		return;  	} @@ -321,7 +321,7 @@ void LLGestureComboList::onCommitGesture()  		LLMultiGesture* gesture = mGestures.at(index);  		if(gesture)  		{ -			LLGestureManager::instance().playGesture(gesture); +			LLGestureMgr::instance().playGesture(gesture);  			if(!gesture->mReplaceText.empty())  			{  				LLNearbyChatBar::sendChatFromViewer(gesture->mReplaceText, CHAT_TYPE_NORMAL, FALSE); @@ -332,7 +332,7 @@ void LLGestureComboList::onCommitGesture()  LLGestureComboList::~LLGestureComboList()  { -	LLGestureManager::instance().removeObserver(this); +	LLGestureMgr::instance().removeObserver(this);  }  LLNearbyChatBar::LLNearbyChatBar()  @@ -476,7 +476,7 @@ void LLNearbyChatBar::onChatBoxKeystroke(LLLineEditor* caller, void* userdata)  		std::string utf8_trigger = wstring_to_utf8str(raw_text);  		std::string utf8_out_str(utf8_trigger); -		if (LLGestureManager::instance().matchPrefix(utf8_trigger, &utf8_out_str)) +		if (LLGestureMgr::instance().matchPrefix(utf8_trigger, &utf8_out_str))  		{  			std::string rest_of_match = utf8_out_str.substr(utf8_trigger.size());  			self->mChatBox->setText(utf8_trigger + rest_of_match); // keep original capitalization for user-entered part @@ -558,7 +558,7 @@ void LLNearbyChatBar::sendChat( EChatType type )  			if (0 == channel)  			{  				// discard returned "found" boolean -				LLGestureManager::instance().triggerAndReviseString(utf8text, &utf8_revised_text); +				LLGestureMgr::instance().triggerAndReviseString(utf8text, &utf8_revised_text);  			}  			else  			{ diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp index a186bc926c..c72f0f8012 100644 --- a/indra/newview/llpanelblockedlist.cpp +++ b/indra/newview/llpanelblockedlist.cpp @@ -186,7 +186,7 @@ void LLPanelBlockedList::onBlockByNameClick()  	LLFloaterGetBlockedObjectName::show(&LLPanelBlockedList::callbackBlockByName);  } -void LLPanelBlockedList::callbackBlockPicked(const std::vector<std::string>& names, const std::vector<LLUUID>& ids) +void LLPanelBlockedList::callbackBlockPicked(const std::vector<std::string>& names, const uuid_vec_t& ids)  {  	if (names.empty() || ids.empty()) return;  	LLMute mute(ids[0], names[0], LLMute::AGENT); diff --git a/indra/newview/llpanelblockedlist.h b/indra/newview/llpanelblockedlist.h index 1ef16a02f4..a100577e43 100644 --- a/indra/newview/llpanelblockedlist.h +++ b/indra/newview/llpanelblockedlist.h @@ -78,7 +78,7 @@ private:  	void onPickBtnClick();  	void onBlockByNameClick(); -	void callbackBlockPicked(const std::vector<std::string>& names, const std::vector<LLUUID>& ids); +	void callbackBlockPicked(const std::vector<std::string>& names, const uuid_vec_t& ids);  	static void callbackBlockByName(const std::string& text);  private: diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index e7acc68b93..805016f089 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -602,7 +602,7 @@ LLPanel* LLPanelEditWearable::getPanel(EWearableType type)  void LLPanelEditWearable::getSortedParams(value_map_t &sorted_params, const std::string &edit_group)  {  	LLWearable::visual_param_vec_t param_list; -	ESex avatar_sex = gAgent.getAvatarObject()->getSex(); +	ESex avatar_sex = gAgentAvatarp->getSex();  	mWearablePtr->getVisualParams(param_list); diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp index 05261a65de..11d3768a3d 100644 --- a/indra/newview/llpanelgroupinvite.cpp +++ b/indra/newview/llpanelgroupinvite.cpp @@ -57,7 +57,7 @@ public:  	~impl();  	void addUsers(const std::vector<std::string>& names, -				  const std::vector<LLUUID>& agent_ids); +				  const uuid_vec_t& agent_ids);  	void submitInvitations();  	void addRoleNames(LLGroupMgrGroupData* gdatap);  	void handleRemove(); @@ -69,7 +69,7 @@ public:  	static void callbackClickRemove(void* userdata);  	static void callbackSelect(LLUICtrl* ctrl, void* userdata);  	static void callbackAddUsers(const std::vector<std::string>& names, -								 const std::vector<LLUUID>& agent_ids, +								 const uuid_vec_t& agent_ids,  								 void* user_data);  	bool inviteOwnerCallback(const LLSD& notification, const LLSD& response); @@ -111,7 +111,7 @@ LLPanelGroupInvite::impl::~impl()  }  void LLPanelGroupInvite::impl::addUsers(const std::vector<std::string>& names, -										const std::vector<LLUUID>& agent_ids) +										const uuid_vec_t& agent_ids)  {  	std::string name;  	LLUUID id; @@ -361,7 +361,7 @@ void LLPanelGroupInvite::impl::callbackClickOK(void* userdata)  //static  void LLPanelGroupInvite::impl::callbackAddUsers(const std::vector<std::string>& names, -												const std::vector<LLUUID>& ids, +												const uuid_vec_t& ids,  												void* user_data)  {  	impl* selfp = (impl*) user_data; @@ -399,7 +399,7 @@ void LLPanelGroupInvite::clear()  	mImplementation->mOKButton->setEnabled(FALSE);  } -void LLPanelGroupInvite::addUsers(std::vector<LLUUID>& agent_ids) +void LLPanelGroupInvite::addUsers(uuid_vec_t& agent_ids)  {  	std::vector<std::string> names;  	for (S32 i = 0; i < (S32)agent_ids.size(); i++) @@ -456,7 +456,7 @@ void LLPanelGroupInvite::addUsers(std::vector<LLUUID>& agent_ids)  void LLPanelGroupInvite::addUserCallback(const LLUUID& id, const std::string& first_name, const std::string& last_name)  {  	std::vector<std::string> names; -	std::vector<LLUUID> agent_ids; +	uuid_vec_t agent_ids;  	std::string full_name = first_name + " " + last_name;  	agent_ids.push_back(id);  	names.push_back(first_name + " " + last_name); diff --git a/indra/newview/llpanelgroupinvite.h b/indra/newview/llpanelgroupinvite.h index b095dd2395..2ed443ed46 100644 --- a/indra/newview/llpanelgroupinvite.h +++ b/indra/newview/llpanelgroupinvite.h @@ -42,7 +42,7 @@ public:  	LLPanelGroupInvite(const LLUUID& group_id);  	~LLPanelGroupInvite(); -	void addUsers(std::vector<LLUUID>& agent_ids); +	void addUsers(uuid_vec_t& agent_ids);  	/**  	 * this callback is being used to add a user whose fullname isn't been loaded before invoking of addUsers().  	 */   diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index c6287472fe..0c24e6ad22 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -859,7 +859,7 @@ void LLPanelGroupMembersSubTab::handleMemberSelect()  	if (selection.empty()) return;  	// Build a vector of all selected members, and gather allowed actions. -	std::vector<LLUUID> selected_members; +	uuid_vec_t selected_members;  	U64 allowed_by_all = 0xffffffffffffLL;  	U64 allowed_by_some = 0; @@ -925,8 +925,8 @@ void LLPanelGroupMembersSubTab::handleMemberSelect()  			if (cb_enable && (count > 0) && role_id == gdatap->mOwnerRole)  			{  				// Check if any owners besides this agent are selected. -				std::vector<LLUUID>::const_iterator member_iter; -				std::vector<LLUUID>::const_iterator member_end = +				uuid_vec_t::const_iterator member_iter; +				uuid_vec_t::const_iterator member_end =  												selected_members.end();  				for (member_iter = selected_members.begin();  					 member_iter != member_end;	 @@ -952,7 +952,7 @@ void LLPanelGroupMembersSubTab::handleMemberSelect()  			//now see if there are any role changes for the selected  			//members and remember to include them -			std::vector<LLUUID>::iterator sel_mem_iter = selected_members.begin(); +			uuid_vec_t::iterator sel_mem_iter = selected_members.begin();  			for (; sel_mem_iter != selected_members.end(); sel_mem_iter++)  			{  				LLRoleMemberChangeType type; @@ -1009,7 +1009,7 @@ void LLPanelGroupMembersSubTab::handleMemberSelect()  				check->setTentative(  					(0 != count)  					&& (selected_members.size() != -						(std::vector<LLUUID>::size_type)count)); +						(uuid_vec_t::size_type)count));  				//NOTE: as of right now a user can break the group  				//by removing himself from a role if he is the @@ -1084,7 +1084,7 @@ void LLPanelGroupMembersSubTab::onEjectMembers(void *userdata)  void LLPanelGroupMembersSubTab::handleEjectMembers()  {  	//send down an eject message -	std::vector<LLUUID> selected_members; +	uuid_vec_t selected_members;  	std::vector<LLScrollListItem*> selection = mMembersList->getAllSelected();  	if (selection.empty()) return; @@ -1105,13 +1105,13 @@ void LLPanelGroupMembersSubTab::handleEjectMembers()  									 selected_members);  } -void LLPanelGroupMembersSubTab::sendEjectNotifications(const LLUUID& group_id, const std::vector<LLUUID>& selected_members) +void LLPanelGroupMembersSubTab::sendEjectNotifications(const LLUUID& group_id, const uuid_vec_t& selected_members)  {  	LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(group_id);  	if (group_data)  	{ -		for (std::vector<LLUUID>::const_iterator i = selected_members.begin(); i != selected_members.end(); ++i) +		for (uuid_vec_t::const_iterator i = selected_members.begin(); i != selected_members.end(); ++i)  		{  			LLSD args;  			std::string name; @@ -1437,7 +1437,7 @@ U64 LLPanelGroupMembersSubTab::getAgentPowersBasedOnRoleChanges(const LLUUID& ag  	if ( role_change_datap )  	{ -		std::vector<LLUUID> roles_to_be_removed; +		uuid_vec_t roles_to_be_removed;  		for (role_change_data_map_t::iterator role = role_change_datap->begin();  			 role != role_change_datap->end(); ++ role) @@ -2086,8 +2086,8 @@ void LLPanelGroupRolesSubTab::buildMembersList()  			LLGroupRoleData* rdatap = (*rit).second;  			if (rdatap)  			{ -				std::vector<LLUUID>::const_iterator mit = rdatap->getMembersBegin(); -				std::vector<LLUUID>::const_iterator end = rdatap->getMembersEnd(); +				uuid_vec_t::const_iterator mit = rdatap->getMembersBegin(); +				uuid_vec_t::const_iterator end = rdatap->getMembersEnd();  				for ( ; mit != end; ++mit)  				{  					mAssignedMembersList->addNameItem((*mit)); diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h index eac22a6338..98cebe9882 100644 --- a/indra/newview/llpanelgrouproles.h +++ b/indra/newview/llpanelgrouproles.h @@ -173,7 +173,7 @@ public:  	static void onEjectMembers(void*);  	void handleEjectMembers(); -	void sendEjectNotifications(const LLUUID& group_id, const std::vector<LLUUID>& selected_members); +	void sendEjectNotifications(const LLUUID& group_id, const uuid_vec_t& selected_members);  	static void onRoleCheck(LLUICtrl* check, void* user_data);  	void handleRoleCheck(const LLUUID& role_id, diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index 6139174da3..55bf25f15b 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -460,7 +460,7 @@ void LLPanelOutfitEdit::lookFetched(void)  	if (mLookContents->getItemCount() != mNumItemsInLook)  	{  		mNumItemsInLook = mLookContents->getItemCount(); -		LLAppearanceManager::instance().updateCOF(mLookID); +		LLAppearanceMgr::instance().updateCOF(mLookID);  	}  } @@ -470,7 +470,7 @@ void LLPanelOutfitEdit::updateLookInfo()  	{  		mLookContents->clearRows(); -		LLInventoryFetchDescendentsObserver::folder_ref_t folders; +		uuid_vec_t folders;  		folders.push_back(mLookID);  		mFetchLook->fetchDescendents(folders);  		if (mFetchLook->isEverythingComplete()) diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index c2f2d32142..6bda7d1546 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -271,7 +271,7 @@ void LLPanelOutfitsInventory::onSave()  {  	std::string outfit_name; -	if (!LLAppearanceManager::getInstance()->getBaseOutfitName(outfit_name)) +	if (!LLAppearanceMgr::getInstance()->getBaseOutfitName(outfit_name))  	{  		outfit_name = LLViewerFolderType::lookupNewCategoryName(LLFolderType::FT_OUTFIT);  	} diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 325157a064..288edeb031 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -134,13 +134,13 @@ public:  	typedef std::map < LLUUID, LLVector3d > id_to_pos_map_t;  	LLAvatarItemDistanceComparator() {}; -	void updateAvatarsPositions(std::vector<LLVector3d>& positions, std::vector<LLUUID>& uuids) +	void updateAvatarsPositions(std::vector<LLVector3d>& positions, uuid_vec_t& uuids)  	{  		std::vector<LLVector3d>::const_iterator  			pos_it = positions.begin(),  			pos_end = positions.end(); -		std::vector<LLUUID>::const_iterator +		uuid_vec_t::const_iterator  			id_it = uuids.begin(),  			id_end = uuids.end(); @@ -759,7 +759,7 @@ void LLPanelPeople::updateButtons()  	//bool recent_tab_active	= (cur_tab == RECENT_TAB_NAME);  	LLUUID selected_id; -	std::vector<LLUUID> selected_uuids; +	uuid_vec_t selected_uuids;  	getCurrentItemIDs(selected_uuids);  	bool item_selected = (selected_uuids.size() == 1);  	bool multiple_selected = (selected_uuids.size() >= 1); @@ -855,7 +855,7 @@ LLUUID LLPanelPeople::getCurrentItemID() const  	return LLUUID::null;  } -void LLPanelPeople::getCurrentItemIDs(std::vector<LLUUID>& selected_uuids) const +void LLPanelPeople::getCurrentItemIDs(uuid_vec_t& selected_uuids) const  {  	std::string cur_tab = getActiveTabName(); @@ -1066,10 +1066,10 @@ void LLPanelPeople::onAddFriendButtonClicked()  	}  } -bool LLPanelPeople::isItemsFreeOfFriends(const std::vector<LLUUID>& uuids) +bool LLPanelPeople::isItemsFreeOfFriends(const uuid_vec_t& uuids)  {  	const LLAvatarTracker& av_tracker = LLAvatarTracker::instance(); -	for ( std::vector<LLUUID>::const_iterator +	for ( uuid_vec_t::const_iterator  			  id = uuids.begin(),  			  id_end = uuids.end();  		  id != id_end; ++id ) @@ -1097,7 +1097,7 @@ void LLPanelPeople::onAddFriendWizButtonClicked()  void LLPanelPeople::onDeleteFriendButtonClicked()  { -	std::vector<LLUUID> selected_uuids; +	uuid_vec_t selected_uuids;  	getCurrentItemIDs(selected_uuids);  	if (selected_uuids.size() == 1) @@ -1124,7 +1124,7 @@ void LLPanelPeople::onChatButtonClicked()  void LLPanelPeople::onImButtonClicked()  { -	std::vector<LLUUID> selected_uuids; +	uuid_vec_t selected_uuids;  	getCurrentItemIDs(selected_uuids);  	if ( selected_uuids.size() == 1 )  	{ @@ -1146,7 +1146,7 @@ void LLPanelPeople::onActivateButtonClicked()  // static  void LLPanelPeople::onAvatarPicked(  		const std::vector<std::string>& names, -		const std::vector<LLUUID>& ids) +		const uuid_vec_t& ids)  {  	if (!names.empty() && !ids.empty())  		LLAvatarActions::requestFriendshipDialog(ids[0], names[0]); @@ -1296,7 +1296,7 @@ bool LLPanelPeople::onRecentViewSortMenuItemCheck(const LLSD& userdata)  void LLPanelPeople::onCallButtonClicked()  { -	std::vector<LLUUID> selected_uuids; +	uuid_vec_t selected_uuids;  	getCurrentItemIDs(selected_uuids);  	if (selected_uuids.size() == 1) diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h index 6d3d436156..891381e2de 100644 --- a/indra/newview/llpanelpeople.h +++ b/indra/newview/llpanelpeople.h @@ -78,12 +78,12 @@ private:  	void					updateRecentList();  	bool					isFriendOnline(const LLUUID& id); -	bool					isItemsFreeOfFriends(const std::vector<LLUUID>& uuids); +	bool					isItemsFreeOfFriends(const uuid_vec_t& uuids);  	void					updateButtons();  	std::string				getActiveTabName() const;  	LLUUID					getCurrentItemID() const; -	void					getCurrentItemIDs(std::vector<LLUUID>& selected_uuids) const; +	void					getCurrentItemIDs(uuid_vec_t& selected_uuids) const;  	void					buttonSetVisible(std::string btn_name, BOOL visible);  	void					buttonSetEnabled(const std::string& btn_name, bool enabled);  	void					buttonSetAction(const std::string& btn_name, const commit_signal_t::slot_type& cb); @@ -134,7 +134,7 @@ private:  	// misc callbacks  	static void				onAvatarPicked(  								const std::vector<std::string>& names, -								const std::vector<LLUUID>& ids); +								const uuid_vec_t& ids);  	void					onFriendsAccordionExpandedCollapsed(LLUICtrl* ctrl, const LLSD& param, LLAvatarList* avatar_list); diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index 313ed4b70e..862e32cca8 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -72,7 +72,7 @@ ContextMenu::~ContextMenu()  	}  } -void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y) +void ContextMenu::show(LLView* spawning_view, const uuid_vec_t& uuids, S32 x, S32 y)  {  	if (mMenu)  	{ @@ -177,7 +177,7 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata)  		bool result = (mUUIDs.size() > 0); -		std::vector<LLUUID>::const_iterator +		uuid_vec_t::const_iterator  			id = mUUIDs.begin(),  			uuids_end = mUUIDs.end(); @@ -200,7 +200,7 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata)  		bool result = (mUUIDs.size() > 0); -		std::vector<LLUUID>::const_iterator +		uuid_vec_t::const_iterator  			id = mUUIDs.begin(),  			uuids_end = mUUIDs.end(); diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h index 913638d8c8..8e12710afc 100644 --- a/indra/newview/llpanelpeoplemenus.h +++ b/indra/newview/llpanelpeoplemenus.h @@ -52,7 +52,7 @@ public:  	 *  	 * @param  uuids - an array of avatar or group ids  	 */ -	/*virtual*/ void show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y); +	/*virtual*/ void show(LLView* spawning_view, const uuid_vec_t& uuids, S32 x, S32 y);  	virtual void hide(); @@ -60,7 +60,7 @@ protected:  	virtual LLContextMenu* createMenu() = 0; -	std::vector<LLUUID>	mUUIDs; +	uuid_vec_t	mUUIDs;  	LLContextMenu*		mMenu;  	LLHandle<LLView>	mMenuHandle;  }; diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index f9ba6f625d..34cef1bee7 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -1006,9 +1006,9 @@ void LLPanelPlaces::changedGlobalPos(const LLVector3d &global_pos)  	updateVerbs();  } -void LLPanelPlaces::showAddedLandmarkInfo(const std::vector<LLUUID>& items) +void LLPanelPlaces::showAddedLandmarkInfo(const uuid_vec_t& items)  { -	for (std::vector<LLUUID>::const_iterator item_iter = items.begin(); +	for (uuid_vec_t::const_iterator item_iter = items.begin();  		 item_iter != items.end();  		 ++item_iter)  	{ diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index 78fcbbb11d..97cf43d222 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -73,7 +73,7 @@ public:  	void changedGlobalPos(const LLVector3d &global_pos);  	// Opens landmark info panel when agent creates or receives landmark. -	void showAddedLandmarkInfo(const std::vector<LLUUID>& items); +	void showAddedLandmarkInfo(const uuid_vec_t& items);  	void setItem(LLInventoryItem* item); diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index 2748daaffa..0a20ff6226 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -445,7 +445,7 @@ LLContextMenu* LLParticipantList::LLParticipantListMenu::createMenu()  	return main_menu;  } -void LLParticipantList::LLParticipantListMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y) +void LLParticipantList::LLParticipantListMenu::show(LLView* spawning_view, const uuid_vec_t& uuids, S32 x, S32 y)  {  	LLPanelPeopleMenus::ContextMenu::show(spawning_view, uuids, x, y); @@ -615,7 +615,7 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD&  		bool result = (mUUIDs.size() > 0); -		std::vector<LLUUID>::const_iterator +		uuid_vec_t::const_iterator  			id = mUUIDs.begin(),  			uuids_end = mUUIDs.end(); diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h index e1b1b5af00..d9ca4230a9 100644 --- a/indra/newview/llparticipantlist.h +++ b/indra/newview/llparticipantlist.h @@ -152,7 +152,7 @@ class LLParticipantList  		public:  			LLParticipantListMenu(LLParticipantList& parent):mParent(parent){};  			/*virtual*/ LLContextMenu* createMenu(); -			/*virtual*/ void show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y); +			/*virtual*/ void show(LLView* spawning_view, const uuid_vec_t& uuids, S32 x, S32 y);  		protected:  			LLParticipantList& mParent;  		private: diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp index 99e0b82b8f..d5ec3a36c3 100644 --- a/indra/newview/llpreview.cpp +++ b/indra/newview/llpreview.cpp @@ -179,10 +179,9 @@ void LLPreview::onCommit()  			// update the object itself.  			if( item->getType() == LLAssetType::AT_OBJECT )  			{ -				LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -				if(avatarp) +				if (isAgentAvatarValid())  				{ -					LLViewerObject* obj = avatarp->getWornAttachment( item->getUUID() ); +					LLViewerObject* obj = gAgentAvatarp->getWornAttachment( item->getUUID() );  					if( obj )  					{  						LLSelectMgr::getInstance()->deselectAll(); diff --git a/indra/newview/llpreviewanim.cpp b/indra/newview/llpreviewanim.cpp index 0cc747f789..262961b73b 100644 --- a/indra/newview/llpreviewanim.cpp +++ b/indra/newview/llpreviewanim.cpp @@ -71,7 +71,7 @@ BOOL LLPreviewAnim::postBuild()  	const LLInventoryItem* item = getItem();  	if(item)  	{ -		gAgent.getAvatarObject()->createMotion(item->getAssetUUID()); // preload the animation +		gAgentAvatarp->createMotion(item->getAssetUUID()); // preload the animation  		childSetText("desc", item->getDescription());  	} @@ -125,10 +125,7 @@ void LLPreviewAnim::playAnim( void *userdata )  		{  			self->mPauseRequest = NULL;  			gAgent.sendAnimationRequest(itemID, ANIM_REQUEST_START); -			 -			LLVOAvatar* avatar = gAgent.getAvatarObject(); -			LLMotion*   motion = avatar->findMotion(itemID); -			 +			LLMotion* motion = gAgentAvatarp->findMotion(itemID);  			if (motion)  			{  				motion->setDeactivateCallback(&endAnimCallback, (void *)(new LLHandle<LLFloater>(self->getHandle()))); @@ -136,7 +133,7 @@ void LLPreviewAnim::playAnim( void *userdata )  		}  		else  		{ -			gAgent.getAvatarObject()->stopMotion(itemID); +			gAgentAvatarp->stopMotion(itemID);  			gAgent.sendAnimationRequest(itemID, ANIM_REQUEST_STOP);  		}  	} @@ -161,10 +158,8 @@ void LLPreviewAnim::auditionAnim( void *userdata )  		if (self->childGetValue("Anim audition btn").asBoolean() )   		{  			self->mPauseRequest = NULL; -			gAgent.getAvatarObject()->startMotion(item->getAssetUUID()); -			 -			LLVOAvatar* avatar = gAgent.getAvatarObject(); -			LLMotion*   motion = avatar->findMotion(itemID); +			gAgentAvatarp->startMotion(item->getAssetUUID()); +			LLMotion* motion = gAgentAvatarp->findMotion(itemID);  			if (motion)  			{ @@ -173,7 +168,7 @@ void LLPreviewAnim::auditionAnim( void *userdata )  		}  		else  		{ -			gAgent.getAvatarObject()->stopMotion(itemID); +			gAgentAvatarp->stopMotion(itemID);  			gAgent.sendAnimationRequest(itemID, ANIM_REQUEST_STOP);  		}  	} @@ -186,11 +181,9 @@ void LLPreviewAnim::onClose(bool app_quitting)  	if(item)  	{ -		gAgent.getAvatarObject()->stopMotion(item->getAssetUUID()); +		gAgentAvatarp->stopMotion(item->getAssetUUID());  		gAgent.sendAnimationRequest(item->getAssetUUID(), ANIM_REQUEST_STOP); -					 -		LLVOAvatar* avatar = gAgent.getAvatarObject(); -		LLMotion*   motion = avatar->findMotion(item->getAssetUUID()); +		LLMotion* motion = gAgentAvatarp->findMotion(item->getAssetUUID());  		if (motion)  		{ diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 57a8ca3d12..aa7b7b8636 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -97,7 +97,7 @@ protected:  void LLInventoryGestureAvailable::done()  { -	for(item_ref_t::iterator it = mComplete.begin(); it != mComplete.end(); ++it) +	for(uuid_vec_t::iterator it = mComplete.begin(); it != mComplete.end(); ++it)  	{  		LLPreviewGesture* preview = LLFloaterReg::findTypedInstance<LLPreviewGesture>("preview_gesture", *it);  		if(preview) @@ -269,7 +269,7 @@ BOOL LLPreviewGesture::canClose()  // virtual  void LLPreviewGesture::onClose(bool app_quitting)  { -	LLGestureManager::instance().stopGesture(mPreviewGesture); +	LLGestureMgr::instance().stopGesture(mPreviewGesture);  }  // virtual @@ -293,13 +293,13 @@ bool LLPreviewGesture::handleSaveChangesDialog(const LLSD& notification, const L  	switch(option)  	{  	case 0:  // "Yes" -		LLGestureManager::instance().stopGesture(mPreviewGesture); +		LLGestureMgr::instance().stopGesture(mPreviewGesture);  		mCloseAfterSave = TRUE;  		onClickSave(this);  		break;  	case 1:  // "No" -		LLGestureManager::instance().stopGesture(mPreviewGesture); +		LLGestureMgr::instance().stopGesture(mPreviewGesture);  		mDirty = FALSE; // Force the dirty flag because user has clicked NO on confirm save dialog...  		closeFloater();  		break; @@ -784,7 +784,7 @@ void LLPreviewGesture::refresh()  	mOptionsText->setText(optionstext); -	BOOL active = LLGestureManager::instance().isGestureActive(mItemUUID); +	BOOL active = LLGestureMgr::instance().isGestureActive(mItemUUID);  	mActiveCheck->set(active);  	// Can only preview if there are steps @@ -1138,10 +1138,10 @@ void LLPreviewGesture::saveIfNeeded()  		// If this gesture is active, then we need to update the in-memory  		// active map with the new pointer. -		if (!delayedUpload && LLGestureManager::instance().isGestureActive(mItemUUID)) +		if (!delayedUpload && LLGestureMgr::instance().isGestureActive(mItemUUID))  		{  			// gesture manager now owns the pointer -			LLGestureManager::instance().replaceGesture(mItemUUID, gesture, asset_id); +			LLGestureMgr::instance().replaceGesture(mItemUUID, gesture, asset_id);  			// replaceGesture may deactivate other gestures so let the  			// inventory know. @@ -1702,13 +1702,13 @@ void LLPreviewGesture::onClickDelete(void* data)  void LLPreviewGesture::onCommitActive(LLUICtrl* ctrl, void* data)  {  	LLPreviewGesture* self = (LLPreviewGesture*)data; -	if (!LLGestureManager::instance().isGestureActive(self->mItemUUID)) +	if (!LLGestureMgr::instance().isGestureActive(self->mItemUUID))  	{ -		LLGestureManager::instance().activateGesture(self->mItemUUID); +		LLGestureMgr::instance().activateGesture(self->mItemUUID);  	}  	else  	{ -		LLGestureManager::instance().deactivateGesture(self->mItemUUID); +		LLGestureMgr::instance().deactivateGesture(self->mItemUUID);  	}  	// Make sure the (active) label in the inventory gets updated. @@ -1747,14 +1747,14 @@ void LLPreviewGesture::onClickPreview(void* data)  		self->mPreviewBtn->setLabel(self->getString("stop_txt"));  		// play it, and delete when done -		LLGestureManager::instance().playGesture(self->mPreviewGesture); +		LLGestureMgr::instance().playGesture(self->mPreviewGesture);  		self->refresh();  	}  	else  	{  		// Will call onDonePreview() below -		LLGestureManager::instance().stopGesture(self->mPreviewGesture); +		LLGestureMgr::instance().stopGesture(self->mPreviewGesture);  		self->refresh();  	} diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index f5a9f82d50..4167408fc3 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -1090,8 +1090,7 @@ void LLPreviewLSL::onSave(void* userdata, BOOL close_after_save)  // Save needs to compile the text in the buffer. If the compile  // succeeds, then save both assets out to the database. If the compile -// fails, go ahead and save the text anyway so that the user doesn't -// get too fucked. +// fails, go ahead and save the text anyway.  void LLPreviewLSL::saveIfNeeded()  {  	// llinfos << "LLPreviewLSL::saveIfNeeded()" << llendl; diff --git a/indra/newview/llrecentpeople.cpp b/indra/newview/llrecentpeople.cpp index bd46b5b56a..62c2ddfd9f 100644 --- a/indra/newview/llrecentpeople.cpp +++ b/indra/newview/llrecentpeople.cpp @@ -63,7 +63,7 @@ bool LLRecentPeople::contains(const LLUUID& id) const  	return mPeople.find(id) != mPeople.end();  } -void LLRecentPeople::get(std::vector<LLUUID>& result) const +void LLRecentPeople::get(uuid_vec_t& result) const  {  	result.clear();  	for (recent_people_t::const_iterator pos = mPeople.begin(); pos != mPeople.end(); ++pos) diff --git a/indra/newview/llrecentpeople.h b/indra/newview/llrecentpeople.h index e0f2faaec5..c718997f7e 100644 --- a/indra/newview/llrecentpeople.h +++ b/indra/newview/llrecentpeople.h @@ -79,7 +79,7 @@ public:  	 *   	 * @param result where to put the result.  	 */ -	void get(std::vector<LLUUID>& result) const; +	void get(uuid_vec_t& result) const;  	const LLDate& getDate(const LLUUID& id) const; diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp index 95e12bf46f..7980fe1945 100644 --- a/indra/newview/llscrollingpanelparam.cpp +++ b/indra/newview/llscrollingpanelparam.cpp @@ -209,7 +209,7 @@ void LLScrollingPanelParam::onSliderMoved(LLUICtrl* ctrl, void* userdata)  	if (current_weight != new_weight )  	{  		self->mWearable->setVisualParamWeight( param->getID(), new_weight, FALSE ); -		gAgent.getAvatarObject()->updateVisualParams(); +		gAgentAvatarp->updateVisualParams();  	}  } @@ -298,7 +298,7 @@ void LLScrollingPanelParam::onHintHeldDown( LLVisualParamHint* hint )  				&& new_percent < slider->getMaxValue())  			{  				mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight, FALSE); -				gAgent.getAvatarObject()->updateVisualParams(); +				gAgentAvatarp->updateVisualParams();  				slider->setValue( weightToPercent( new_weight ) );  			} @@ -344,8 +344,7 @@ void LLScrollingPanelParam::onHintMaxMouseUp( void* userdata )  	F32 elapsed_time = self->mMouseDownTimer.getElapsedTimeF32(); -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{  		LLVisualParamHint* hint = self->mHintMax; diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index d744f097d5..d03a492cd1 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -1475,7 +1475,7 @@ void LLSelectMgr::selectionSetImage(const LLUUID& imageid)  				object->sendTEUpdate();  				// 1 particle effect per object				  				LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -				effectp->setSourceObject(gAgent.getAvatarObject()); +				effectp->setSourceObject(gAgentAvatarp);  				effectp->setTargetObject(object);  				effectp->setDuration(LL_HUD_DUR_SHORT);  				effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -3619,7 +3619,7 @@ void LLSelectMgr::sendAttach(U8 attachment_point)  {  	LLViewerObject* attach_object = mSelectedObjects->getFirstRootObject(); -	if (!attach_object || !gAgent.getAvatarObject() || mSelectedObjects->mSelectType != SELECT_TYPE_WORLD) +	if (!attach_object || !isAgentAvatarValid() || mSelectedObjects->mSelectType != SELECT_TYPE_WORLD)  	{  		return;  	} @@ -3630,7 +3630,7 @@ void LLSelectMgr::sendAttach(U8 attachment_point)  	BOOL build_mode = LLToolMgr::getInstance()->inEdit();  	// Special case: Attach to default location for this object.  	if (0 == attachment_point || -		get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, (S32)attachment_point, (LLViewerJointAttachment*)NULL)) +		get_if_there(gAgentAvatarp->mAttachmentPoints, (S32)attachment_point, (LLViewerJointAttachment*)NULL))  	{  		sendListToRegions(  			"ObjectAttach", @@ -4392,7 +4392,7 @@ void LLSelectMgr::processObjectProperties(LLMessageSystem* msg, void** user_data  		msg->getStringFast(_PREHASH_ObjectData, _PREHASH_SitName, sit_name, i);  		//unpack TE IDs -		std::vector<LLUUID> texture_ids; +		uuid_vec_t texture_ids;  		S32 size = msg->getSizeFast(_PREHASH_ObjectData, i, _PREHASH_TextureID);  		if (size > 0)  		{ @@ -4911,10 +4911,9 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)  	LLGLEnable blend(GL_BLEND);  	LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	if (for_hud && avatar) +	if (isAgentAvatarValid() && for_hud)  	{ -		LLBBox hud_bbox = avatar->getHUDBBox(); +		LLBBox hud_bbox = gAgentAvatarp->getHUDBBox();  		F32 cur_zoom = gAgentCamera.mHUDCurZoom; @@ -5023,7 +5022,7 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)  		}  	} -	if (for_hud && avatar) +	if (isAgentAvatarValid() && for_hud)  	{  		glMatrixMode(GL_PROJECTION);  		gGL.popMatrix(); @@ -5208,13 +5207,13 @@ void LLSelectNode::saveColors()  	}  } -void LLSelectNode::saveTextures(const std::vector<LLUUID>& textures) +void LLSelectNode::saveTextures(const uuid_vec_t& textures)  {  	if (mObject.notNull())  	{  		mSavedTextures.clear(); -		for (std::vector<LLUUID>::const_iterator texture_it = textures.begin(); +		for (uuid_vec_t::const_iterator texture_it = textures.begin();  			 texture_it != textures.end(); ++texture_it)  		{  			mSavedTextures.push_back(*texture_it); @@ -5399,7 +5398,7 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)  	if (volume)  	{  		F32 silhouette_thickness; -		if (is_hud_object && gAgent.getAvatarObject()) +		if (isAgentAvatarValid() && is_hud_object)  		{  			silhouette_thickness = LLSelectMgr::sHighlightThickness / gAgentCamera.mHUDCurZoom;  		} @@ -5609,16 +5608,16 @@ void LLSelectMgr::updateSelectionCenter()  	{  		mSelectedObjects->mSelectType = getSelectTypeForObject(object); -		if (mSelectedObjects->mSelectType == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject()) +		if (mSelectedObjects->mSelectType == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())  		{ -			mPauseRequest = gAgent.getAvatarObject()->requestPause(); +			mPauseRequest = gAgentAvatarp->requestPause();  		}  		else  		{  			mPauseRequest = NULL;  		} -		if (mSelectedObjects->mSelectType != SELECT_TYPE_HUD && gAgent.getAvatarObject()) +		if (mSelectedObjects->mSelectType != SELECT_TYPE_HUD && isAgentAvatarValid())  		{  			// reset hud ZOOM  			gAgentCamera.mHUDTargetZoom = 1.f; @@ -5641,10 +5640,10 @@ void LLSelectMgr::updateSelectionCenter()  			LLViewerObject* object = node->getObject();  			if (!object)  				continue; -			LLViewerObject *myAvatar = gAgent.getAvatarObject(); +			  			LLViewerObject *root = object->getRootEdit();  			if (mSelectedObjects->mSelectType == SELECT_TYPE_WORLD && // not an attachment -				!root->isChild(myAvatar) && // not the object you're sitting on +				!root->isChild(gAgentAvatarp) && // not the object you're sitting on  				!object->isAvatar()) // not another avatar  			{  				mShowSelection = TRUE; diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index 00474827ca..d315f40ff3 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -147,7 +147,7 @@ public:  	void setObject(LLViewerObject* object);  	// *NOTE: invalidate stored textures and colors when # faces change  	void saveColors(); -	void saveTextures(const std::vector<LLUUID>& textures); +	void saveTextures(const uuid_vec_t& textures);  	void saveTextureScaleRatios();  	BOOL allowOperationOnNode(PermissionBit op, U64 group_proxy_power) const; @@ -183,7 +183,7 @@ public:  	std::string		mSitName;  	U64				mCreationDate;  	std::vector<LLColor4>	mSavedColors; -	std::vector<LLUUID>		mSavedTextures; +	uuid_vec_t		mSavedTextures;  	std::vector<LLVector3>  mTextureScaleRatios;  	std::vector<LLVector3>	mSilhouetteVertices;	// array of vertices to render silhouette of object  	std::vector<LLVector3>	mSilhouetteNormals;	// array of normals to render silhouette of object diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index 90c0cd5467..00e152b7f5 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -206,7 +206,7 @@ void LLSidepanelAppearance::onFilterEdit(const std::string& search_string)  void LLSidepanelAppearance::onOpenOutfitButtonClicked()  { -	const LLViewerInventoryItem *outfit_link = LLAppearanceManager::getInstance()->getBaseOutfitLink(); +	const LLViewerInventoryItem *outfit_link = LLAppearanceMgr::getInstance()->getBaseOutfitLink();  	if (!outfit_link)  		return;  	if (!outfit_link->getIsLinkType()) @@ -320,11 +320,11 @@ void LLSidepanelAppearance::updateVerbs()  void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)  { -	mOutfitDirtyTag->setVisible(LLAppearanceManager::getInstance()->isOutfitDirty()); +	mOutfitDirtyTag->setVisible(LLAppearanceMgr::getInstance()->isOutfitDirty());  	if (name == "")  	{  		std::string outfit_name; -		if (LLAppearanceManager::getInstance()->getBaseOutfitName(outfit_name)) +		if (LLAppearanceMgr::getInstance()->getBaseOutfitName(outfit_name))  		{  				mCurrentLookName->setText(outfit_name);  				return; @@ -366,11 +366,10 @@ void LLSidepanelAppearance::fetchInventory()  		}  	} -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if(avatarp) +	if (isAgentAvatarValid())  	{ -		for (LLVOAvatar::attachment_map_t::const_iterator iter = avatarp->mAttachmentPoints.begin();  -			 iter != avatarp->mAttachmentPoints.end(); ++iter) +		for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +			 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)  		{  			LLViewerJointAttachment* attachment = iter->second;  			if (!attachment) continue; diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 6cf9c6b95d..4573520647 100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -879,7 +879,7 @@ void LLLocalSpeakerMgr::updateSpeakerList()  	}  	// pick up non-voice speakers in chat range -	std::vector<LLUUID> avatar_ids; +	uuid_vec_t avatar_ids;  	std::vector<LLVector3d> positions;  	LLWorld::getInstance()->getAvatars(&avatar_ids, &positions, gAgent.getPositionGlobal(), CHAT_NORMAL_RADIUS);  	for(U32 i=0; i<avatar_ids.size(); i++) diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 59d118abe2..d75a1424d2 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1746,7 +1746,7 @@ bool idle_startup()  			{  				LL_DEBUGS("AppInit") << "Gesture Manager loading " << gesture_options.size()  					<< LL_ENDL; -				std::vector<LLUUID> item_ids; +				uuid_vec_t item_ids;  				for(LLSD::array_const_iterator resp_it = gesture_options.beginArray(),  					end = gesture_options.endArray(); resp_it != end; ++resp_it)  				{ @@ -1760,7 +1760,7 @@ bool idle_startup()  						// Could schedule and delay these for later.  						const BOOL no_inform_server = FALSE;  						const BOOL no_deactivate_similar = FALSE; -						LLGestureManager::instance().activateGestureWithAsset(item_id, asset_id, +						LLGestureMgr::instance().activateGestureWithAsset(item_id, asset_id,  											 no_inform_server,  											 no_deactivate_similar);  						// We need to fetch the inventory items for these gestures @@ -1769,7 +1769,7 @@ bool idle_startup()  					}  				}  				// no need to add gesture to inventory observer, it's already made in constructor  -				LLGestureManager::instance().fetchItems(item_ids); +				LLGestureMgr::instance().fetchItems(item_ids);  			}  		}  		gDisplaySwapBuffers = TRUE; @@ -1864,7 +1864,7 @@ bool idle_startup()  		if (gAgent.isFirstLogin()  			&& !sInitialOutfit.empty()    // registration set up an outfit  			&& !sInitialOutfitGender.empty() // and a gender -			&& gAgent.getAvatarObject()	  // can't wear clothes without object +			&& isAgentAvatarValid()	  // can't wear clothes without object  			&& !gAgent.isGenderChosen() ) // nothing already loading  		{  			// Start loading the wearables, textures, gestures @@ -1872,7 +1872,7 @@ bool idle_startup()  		}  		// wait precache-delay and for agent's avatar or a lot longer. -		if(((timeout_frac > 1.f) && gAgent.getAvatarObject()) +		if(((timeout_frac > 1.f) && isAgentAvatarValid())  		   || (timeout_frac > 3.f))  		{  			LLStartUp::setStartupState( STATE_WEARABLES_WAIT ); @@ -1928,8 +1928,8 @@ bool idle_startup()  		if (gAgent.isFirstLogin())  		{  			// wait for avatar to be completely loaded -			if (gAgent.getAvatarObject() -				&& gAgent.getAvatarObject()->isFullyLoaded()) +			if (isAgentAvatarValid() +				&& gAgentAvatarp->isFullyLoaded())  			{  				//llinfos << "avatar fully loaded" << llendl;  				LLStartUp::setStartupState( STATE_CLEANUP ); @@ -2536,7 +2536,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,  	llinfos << "starting" << llendl;  	// Not going through the processAgentInitialWearables path, so need to set this here. -	LLAppearanceManager::instance().setAttachmentInvLinkEnable(true); +	LLAppearanceMgr::instance().setAttachmentInvLinkEnable(true);  	// Initiate creation of COF, since we're also bypassing that.  	gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); @@ -2567,13 +2567,13 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,  		bool do_copy = true;  		bool do_append = false;  		LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id); -		LLAppearanceManager::instance().wearInventoryCategory(cat, do_copy, do_append); +		LLAppearanceMgr::instance().wearInventoryCategory(cat, do_copy, do_append);  	}  	// Copy gestures  	LLUUID dst_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);  	LLPointer<LLInventoryCallback> cb(NULL); -	LLAppearanceManager *app_mgr = &(LLAppearanceManager::instance()); +	LLAppearanceMgr *app_mgr = &(LLAppearanceMgr::instance());  	// - Copy gender-specific gestures.  	LLUUID gestures_cat_id = findDescendentCategoryIDByName(  @@ -2582,7 +2582,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,  	if (gestures_cat_id.notNull())  	{  		callAfterCategoryFetch(gestures_cat_id, -							   boost::bind(&LLAppearanceManager::shallowCopyCategory, +							   boost::bind(&LLAppearanceMgr::shallowCopyCategory,  										   app_mgr,  										   gestures_cat_id,  										   dst_id, @@ -2596,7 +2596,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,  	if (common_gestures_cat_id.notNull())  	{  		callAfterCategoryFetch(common_gestures_cat_id, -							   boost::bind(&LLAppearanceManager::shallowCopyCategory, +							   boost::bind(&LLAppearanceMgr::shallowCopyCategory,  										   app_mgr,  										   common_gestures_cat_id,  										   dst_id, diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index e7dc1f56ce..b660a2b8ea 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -447,11 +447,9 @@ void LLStatusBar::setHealth(S32 health)  	{  		if (mHealth > (health + gSavedSettings.getF32("UISndHealthReductionThreshold")))  		{ -			LLVOAvatar *me; - -			if ((me = gAgent.getAvatarObject())) +			if (isAgentAvatarValid())  			{ -				if (me->getSex() == SEX_FEMALE) +				if (gAgentAvatarp->getSex() == SEX_FEMALE)  				{  					make_ui_sound("UISndHealthReductionF");  				} diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 21c928282a..3f4dab4fea 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -284,8 +284,6 @@ void LLTexLayerSetBuffer::readBackAndUpload()  	llinfos << "Baked " << mTexLayerSet->getBodyRegion() << llendl;  	LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_BAKES); -	llassert( gAgent.getAvatarObject() == mTexLayerSet->getAvatar() ); -  	// We won't need our caches since we're baked now.  (Techically, we won't   	// really be baked until this image is sent to the server and the Avatar  	// Appearance message is received.) @@ -352,7 +350,7 @@ void LLTexLayerSetBuffer::readBackAndUpload()  			{  				// baked_upload_data is owned by the responder and deleted after the request completes  				LLBakedUploadData* baked_upload_data = -					new LLBakedUploadData(gAgent.getAvatarObject(), this->mTexLayerSet, asset_id); +					new LLBakedUploadData(gAgentAvatarp, this->mTexLayerSet, asset_id);  				mUploadID = asset_id;  				// upload the image @@ -409,12 +407,10 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,  {  	LLBakedUploadData* baked_upload_data = (LLBakedUploadData*)userdata; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -  	if (0 == result && -		avatarp && -		!avatarp->isDead() && -		baked_upload_data->mAvatar == avatarp && // Sanity check: only the user's avatar should be uploading textures. +		isAgentAvatarValid() && +		!gAgentAvatarp->isDead() && +		baked_upload_data->mAvatar == gAgentAvatarp && // Sanity check: only the user's avatar should be uploading textures.  		baked_upload_data->mTexLayerSet->hasComposite()  		)  	{ @@ -439,11 +435,11 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,  			if (result >= 0)  			{ -				LLVOAvatarDefines::ETextureIndex baked_te = avatarp->getBakedTE(layerset_buffer->mTexLayerSet); +				LLVOAvatarDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->mTexLayerSet);  				// Update baked texture info with the new UUID  				U64 now = LLFrameTimer::getTotalTime();		// Record starting time  				llinfos << "Baked texture upload took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl; -				avatarp->setNewBakedTexture(baked_te, uuid); +				gAgentAvatarp->setNewBakedTexture(baked_te, uuid);  			}  			else  			{	 @@ -457,7 +453,7 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,  			llinfos << "Received baked texture out of date, ignored." << llendl;  		} -		avatarp->dirtyMesh(); +		gAgentAvatarp->dirtyMesh();  	}  	else  	{ diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 7a0712f8aa..08bc8220d9 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -852,8 +852,8 @@ bool LLTextureCache::updateTextureEntryList(const LLUUID& id, S32 bodysize)  			}			  			else if (oldbodysize != entry.mBodySize)  			{ -				// TODO: change to llwarns -				llerrs << "Entry mismatch in mTextureSizeMap / mHeaderIDMap" +				// only happens to 64 bits systems, do not know why. +				llwarns << "Entry mismatch in mTextureSizeMap / mHeaderIDMap"  					   << " idx=" << idx << " oldsize=" << oldbodysize << " entrysize=" << entry.mBodySize << llendl;  			}  			updateEntry(idx, entry, entry.mImageSize, bodysize);			 @@ -1221,9 +1221,17 @@ U32 LLTextureCache::openAndReadEntries(std::vector<Entry>& entries)  	mFreeList.clear();  	mTexturesSizeTotal = 0; -	LLAPRFile* aprfile = openHeaderEntriesFile(true, 0); -	updatedHeaderEntriesFile() ; -	aprfile->seek(APR_SET, (S32)sizeof(EntriesInfo)); +	LLAPRFile* aprfile = NULL;  +	if(mUpdatedEntryMap.empty()) +	{ +		aprfile = openHeaderEntriesFile(true, (S32)sizeof(EntriesInfo)); +	} +	else //update the header file first. +	{ +		aprfile = openHeaderEntriesFile(false, 0); +		updatedHeaderEntriesFile() ; +		aprfile->seek(APR_SET, (S32)sizeof(EntriesInfo)); +	}  	for (U32 idx=0; idx<num_entries; idx++)  	{  		Entry entry; diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 813b3bd22f..4f5eeb254b 100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -80,7 +80,7 @@ public:  	virtual bool operator()(LLInventoryCategory* cat,  							LLInventoryItem* item)  	{ -		if(cat && (cat->getPreferredType() == LLFolderType::FT_NONE)) +		if (cat && (cat->getPreferredType() == LLFolderType::FT_NONE))  		{  			return true;  		} @@ -96,8 +96,8 @@ public:  	virtual bool operator()(LLInventoryCategory* cat,  							LLInventoryItem* item)  	{ -		if(item) return true; -		if(cat && (cat->getPreferredType() == LLFolderType::FT_NONE)) +		if (item) return true; +		if (cat && (cat->getPreferredType() == LLFolderType::FT_NONE))  		{  			return true;  		} @@ -124,18 +124,18 @@ bool LLDroppableItem::operator()(LLInventoryCategory* cat,  				 LLInventoryItem* item)  {  	bool allowed = false; -	if(item) +	if (item)  	{  		allowed = itemTransferCommonlyAllowed(item); -		if(allowed +		if (allowed  		   && mIsTransfer  		   && !item->getPermissions().allowOperationBy(PERM_TRANSFER,  							       gAgent.getID()))  		{  			allowed = false;  		} -		if(allowed && !item->getPermissions().allowCopyBy(gAgent.getID())) +		if (allowed && !item->getPermissions().allowCopyBy(gAgent.getID()))  		{  			++mCountLosing;  		} @@ -155,7 +155,7 @@ bool LLUncopyableItems::operator()(LLInventoryCategory* cat,  				   LLInventoryItem* item)  {  	bool uncopyable = false; -	if(item) +	if (item)  	{  		if (itemTransferCommonlyAllowed(item) &&  		   !item->getPermissions().allowCopyBy(gAgent.getID())) @@ -180,10 +180,10 @@ bool LLDropCopyableItems::operator()(  	LLInventoryItem* item)  {  	bool allowed = false; -	if(item) +	if (item)  	{  		allowed = itemTransferCommonlyAllowed(item); -		if(allowed && +		if (allowed &&  		   !item->getPermissions().allowCopyBy(gAgent.getID()))  		{  			// whoops, can't copy it - don't allow it. @@ -212,16 +212,16 @@ bool LLGiveable::operator()(LLInventoryCategory* cat, LLInventoryItem* item)  		return true;  	bool allowed = false; -	if(item) +	if (item)  	{  		allowed = itemTransferCommonlyAllowed(item); -		if(allowed && +		if (allowed &&  		   !item->getPermissions().allowOperationBy(PERM_TRANSFER,  							    gAgent.getID()))  		{  			allowed = FALSE;  		} -		if(allowed && +		if (allowed &&  		   !item->getPermissions().allowCopyBy(gAgent.getID()))  		{  			++mCountLosing; @@ -262,7 +262,7 @@ void LLCategoryDropObserver::done()  {  	gInventory.removeObserver(this);  	LLViewerObject* dst_obj = gObjectList.findObject(mObjectID); -	if(dst_obj) +	if (dst_obj)  	{  		// *FIX: coalesce these...   		LLInventoryItem* item = NULL; @@ -271,7 +271,7 @@ void LLCategoryDropObserver::done()    		for(; it < end; ++it)    		{   			item = gInventory.getItem(*it); - 			if(item) + 			if (item)   			{   				LLToolDragAndDrop::dropInventory(   					dst_obj, @@ -304,8 +304,8 @@ void LLCategoryDropDescendentsObserver::done()  {  	gInventory.removeObserver(this); -	folder_ref_t::iterator it = mCompleteFolders.begin(); -	folder_ref_t::iterator end = mCompleteFolders.end(); +	uuid_vec_t::iterator it = mCompleteFolders.begin(); +	uuid_vec_t::iterator end = mCompleteFolders.end();  	LLViewerInventoryCategory::cat_array_t cats;  	LLViewerInventoryItem::item_array_t items;  	for(; it != end; ++it) @@ -318,7 +318,7 @@ void LLCategoryDropDescendentsObserver::done()  	}  	S32 count = items.count(); -	if(count) +	if (count)  	{  		std::set<LLUUID> unique_ids;  		for(S32 i = 0; i < count; ++i) @@ -331,7 +331,7 @@ void LLCategoryDropDescendentsObserver::done()  		LLCategoryDropObserver* dropper;  		dropper = new LLCategoryDropObserver(mObjectID, mSource);  		dropper->fetchItems(ids); -		if(dropper->isEverythingComplete()) +		if (dropper->isEverythingComplete())  		{  			dropper->done();  		} @@ -422,7 +422,7 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,  								  const LLUUID& source_id,  								  const LLUUID& object_id)  { -	if(type == DAD_NONE) +	if (type == DAD_NONE)  	{  		llwarns << "Attempted to start drag without a cargo type" << llendl;  		return; @@ -438,24 +438,24 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,  	setMouseCapture( TRUE );  	LLToolMgr::getInstance()->setTransientTool( this );  	mCursor = UI_CURSOR_NO; -	if((mCargoTypes[0] == DAD_CATEGORY) +	if ((mCargoTypes[0] == DAD_CATEGORY)  	   && ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY)))  	{  		LLInventoryCategory* cat = gInventory.getCategory(cargo_id);  		// go ahead and fire & forget the descendents if we are not  		// dragging a protected folder. -		if(cat) +		if (cat)  		{  			LLViewerInventoryCategory::cat_array_t cats;  			LLViewerInventoryItem::item_array_t items;  			LLNoPreferredTypeOrItem is_not_preferred; -			LLInventoryFetchComboObserver::folder_ref_t folder_ids; -			LLInventoryFetchComboObserver::item_ref_t item_ids; -			if(is_not_preferred(cat, NULL)) +			uuid_vec_t folder_ids; +			uuid_vec_t item_ids; +			if (is_not_preferred(cat, NULL))  			{  				folder_ids.push_back(cargo_id);  			} -			gInventory.collectDescendentsIf( +			gInventory.collectDescendentsIf (  				cargo_id,  				cats,  				items, @@ -472,7 +472,7 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,  			{  				item_ids.push_back(items.get(i)->getUUID());  			} -			if(!folder_ids.empty() || !item_ids.empty()) +			if (!folder_ids.empty() || !item_ids.empty())  			{  				LLCategoryFireAndForget fetcher;  				fetcher.fetch(folder_ids, item_ids); @@ -483,7 +483,7 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,  void LLToolDragAndDrop::beginMultiDrag(  	const std::vector<EDragAndDropType> types, -	const std::vector<LLUUID>& cargo_ids, +	const uuid_vec_t& cargo_ids,  	ESource source,  	const LLUUID& source_id)  { @@ -493,7 +493,7 @@ void LLToolDragAndDrop::beginMultiDrag(  	std::vector<EDragAndDropType>::const_iterator types_it;  	for (types_it = types.begin(); types_it != types.end(); ++types_it)  	{ -		if(DAD_NONE == *types_it) +		if (DAD_NONE == *types_it)  		{  			llwarns << "Attempted to start drag without a cargo type" << llendl;  			return; @@ -507,7 +507,7 @@ void LLToolDragAndDrop::beginMultiDrag(  	setMouseCapture( TRUE );  	LLToolMgr::getInstance()->setTransientTool( this );  	mCursor = UI_CURSOR_NO; -	if((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY)) +	if ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))  	{  		// find categories (i.e. inventory folders) in the cargo.  		LLInventoryCategory* cat = NULL; @@ -516,16 +516,16 @@ void LLToolDragAndDrop::beginMultiDrag(  		for(S32 i = 0; i < count; ++i)  		{  			cat = gInventory.getCategory(cargo_ids[i]); -			if(cat) +			if (cat)  			{  				LLViewerInventoryCategory::cat_array_t cats;  				LLViewerInventoryItem::item_array_t items;  				LLNoPreferredType is_not_preferred; -				if(is_not_preferred(cat, NULL)) +				if (is_not_preferred(cat, NULL))  				{  					cat_ids.insert(cat->getUUID());  				} -				gInventory.collectDescendentsIf( +				gInventory.collectDescendentsIf (  					cat->getUUID(),  					cats,  					items, @@ -538,11 +538,11 @@ void LLToolDragAndDrop::beginMultiDrag(  				}  			}  		} -		if(!cat_ids.empty()) +		if (!cat_ids.empty())  		{ -			LLInventoryFetchComboObserver::folder_ref_t folder_ids; -			LLInventoryFetchComboObserver::item_ref_t item_ids; -			std::back_insert_iterator<LLInventoryFetchDescendentsObserver::folder_ref_t> copier(folder_ids); +			uuid_vec_t folder_ids; +			uuid_vec_t item_ids; +			std::back_insert_iterator<uuid_vec_t> copier(folder_ids);  			std::copy(cat_ids.begin(), cat_ids.end(), copier);  			LLCategoryFireAndForget fetcher;  			fetcher.fetch(folder_ids, item_ids); @@ -570,7 +570,7 @@ void LLToolDragAndDrop::onMouseCaptureLost()  BOOL LLToolDragAndDrop::handleMouseUp( S32 x, S32 y, MASK mask )  { -	if( hasMouseCapture() ) +	if (hasMouseCapture())  	{  		EAcceptance acceptance = ACCEPT_NO;  		dragOrDrop( x, y, mask, TRUE, &acceptance ); @@ -581,7 +581,7 @@ BOOL LLToolDragAndDrop::handleMouseUp( S32 x, S32 y, MASK mask )  ECursorType LLToolDragAndDrop::acceptanceToCursor( EAcceptance acceptance )  { -	switch( acceptance ) +	switch (acceptance)  	{  	case ACCEPT_YES_MULTI:  		if (mCargoIDs.size() > 1) @@ -698,7 +698,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,  	mToolTipMsg.clear(); -	if(top_view) +	if (top_view)  	{  		handled = TRUE; @@ -763,7 +763,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,  		}  	} -	if(!handled) +	if (!handled)  	{  		handled = TRUE; @@ -821,7 +821,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,  		}  	} -	if ( !handled ) +	if (!handled)  	{  		dragOrDrop3D( x, y, mask, drop, acceptance );  	} @@ -874,7 +874,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)  		if (hit_obj->isAttachment() && !hit_obj->isHUDAttachment())  		{  			LLVOAvatar* avatar = LLVOAvatar::findAvatarFromAttachment( hit_obj ); -			if( !avatar ) +			if (!avatar)  			{  				mLastAccept = ACCEPT_NO;  				mCursor = UI_CURSOR_NO; @@ -886,7 +886,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)  		if (hit_obj->isAvatar())  		{ -			if(((LLVOAvatar*) hit_obj)->isSelf()) +			if (((LLVOAvatar*) hit_obj)->isSelf())  			{  				target = DT_SELF;  				hit_face = -1; @@ -972,7 +972,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,  	// Always succeed if....  	// texture is from the library   	// or already in the contents of the object -	if(SOURCE_LIBRARY == source) +	if (SOURCE_LIBRARY == source)  	{  		// dropping a texture from the library always just works.  		return TRUE; @@ -1000,7 +1000,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,  	if (!item) return FALSE;  	LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item); -	if(!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID())) +	if (!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID()))  	{  		// Check that we can add the texture as inventory to the object  		if (willObjectAcceptInventory(hit_obj,item) < ACCEPT_YES_COPY_SINGLE ) @@ -1008,20 +1008,20 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,  			return FALSE;  		}  		// make sure the object has the texture in it's inventory. -		if(SOURCE_AGENT == source) +		if (SOURCE_AGENT == source)  		{  			// Remove the texture from local inventory. The server  			// will actually remove the item from agent inventory.  			gInventory.deleteObject(item->getUUID());  			gInventory.notifyObservers();  		} -		else if(SOURCE_WORLD == source) +		else if (SOURCE_WORLD == source)  		{  			// *FIX: if the objects are in different regions, and the  			// source region has crashed, you can bypass these  			// permissions.  			LLViewerObject* src_obj = gObjectList.findObject(src_id); -			if(src_obj) +			if (src_obj)  			{  				src_obj->removeInventory(item->getUUID());  			} @@ -1036,7 +1036,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,   		// TODO: Check to see if adding the item was successful; if not, then  		// we should return false here.  	} -	else if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, +	else if (!item->getPermissions().allowOperationBy(PERM_TRANSFER,  													 gAgent.getID()))  	{  		// Check that we can add the texture as inventory to the object @@ -1068,7 +1068,7 @@ void LLToolDragAndDrop::dropTextureAllFaces(LLViewerObject* hit_obj,  	}  	LLUUID asset_id = item->getAssetUUID();  	BOOL success = handleDropTextureProtections(hit_obj, item, source, src_id); -	if(!success) +	if (!success)  	{  		return;  	} @@ -1110,7 +1110,7 @@ void LLToolDragAndDrop::dropTextureOneFace(LLViewerObject* hit_obj,  	}  	LLUUID asset_id = item->getAssetUUID();  	BOOL success = handleDropTextureProtections(hit_obj, item, source, src_id); -	if(!success) +	if (!success)  	{  		return;  	} @@ -1133,32 +1133,32 @@ void LLToolDragAndDrop::dropScript(LLViewerObject* hit_obj,  {  	// *HACK: In order to resolve SL-22177, we need to block drags  	// from notecards and objects onto other objects. -	if((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource) +	if ((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource)  	   || (SOURCE_NOTECARD == LLToolDragAndDrop::getInstance()->mSource))  	{  		llwarns << "Call to LLToolDragAndDrop::dropScript() from world"  			<< " or notecard." << llendl;  		return;  	} -	if(hit_obj && item) +	if (hit_obj && item)  	{  		LLPointer<LLViewerInventoryItem> new_script = new LLViewerInventoryItem(item); -		if(!item->getPermissions().allowCopyBy(gAgent.getID())) +		if (!item->getPermissions().allowCopyBy(gAgent.getID()))  		{ -			if(SOURCE_AGENT == source) +			if (SOURCE_AGENT == source)  			{  				// Remove the script from local inventory. The server  				// will actually remove the item from agent inventory.  				gInventory.deleteObject(item->getUUID());  				gInventory.notifyObservers();  			} -			else if(SOURCE_WORLD == source) +			else if (SOURCE_WORLD == source)  			{  				// *FIX: if the objects are in different regions, and  				// the source region has crashed, you can bypass  				// these permissions.  				LLViewerObject* src_obj = gObjectList.findObject(src_id); -				if(src_obj) +				if (src_obj)  				{  					src_obj->removeInventory(item->getUUID());  				} @@ -1174,7 +1174,7 @@ void LLToolDragAndDrop::dropScript(LLViewerObject* hit_obj,  		// VEFFECT: SetScript  		LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -		effectp->setSourceObject(gAgent.getAvatarObject()); +		effectp->setSourceObject(gAgentAvatarp);  		effectp->setTargetObject(hit_obj);  		effectp->setDuration(LL_HUD_DUR_SHORT);  		effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -1198,7 +1198,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return; +	if (!item || !item->isComplete()) return;  	//if (regionp  	//	&& (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX)) @@ -1209,7 +1209,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	// this will remove the object from inventory after rez. Only  	// bother with this check if we would not normally remove from  	// inventory. -	if(!remove_from_inventory +	if (!remove_from_inventory  		&& !item->getPermissions().allowCopyBy(gAgent.getID()))  	{  		remove_from_inventory = TRUE; @@ -1220,7 +1220,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	// hitting objects that were clipped by the near plane or culled  	// on the viewer.  	LLUUID ray_target_id; -	if( raycast_target ) +	if (raycast_target)  	{  		ray_target_id = raycast_target->getID();  	} @@ -1232,7 +1232,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	// Check if it's in the trash.  	bool is_in_trash = false;  	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -	if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id)) +	if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  	{  		is_in_trash = true;  		remove_from_inventory = TRUE; @@ -1290,7 +1290,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	pack_permissions_slam(msg, item->getFlags(), item->getPermissions());  	LLUUID folder_id = item->getParentUUID(); -	if((SOURCE_LIBRARY == mSource) || (is_in_trash)) +	if ((SOURCE_LIBRARY == mSource) || (is_in_trash))  	{  		// since it's coming from the library or trash, we want to not  		// 'take' it back to the same place. @@ -1324,7 +1324,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  		gViewerWindow->getWindow()->incBusyCount();  	} -	if(remove_from_inventory) +	if (remove_from_inventory)  	{  		// Delete it from inventory immediately so that users cannot  		// easily bypass copy protection in laggy situations. If the @@ -1335,7 +1335,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	// VEFFECT: DropObject  	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -	effectp->setSourceObject(gAgent.getAvatarObject()); +	effectp->setSourceObject(gAgentAvatarp);  	effectp->setPositionGlobal(mLastHitPos);  	effectp->setDuration(LL_HUD_DUR_SHORT);  	effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -1350,7 +1350,7 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,  {  	// *HACK: In order to resolve SL-22177, we need to block drags  	// from notecards and objects onto other objects. -	if((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource) +	if ((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource)  	   || (SOURCE_NOTECARD == LLToolDragAndDrop::getInstance()->mSource))  	{  		llwarns << "Call to LLToolDragAndDrop::dropInventory() from world" @@ -1362,9 +1362,9 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,  	time_t creation_date = time_corrected();  	new_item->setCreationDate(creation_date); -	if(!item->getPermissions().allowCopyBy(gAgent.getID())) +	if (!item->getPermissions().allowCopyBy(gAgent.getID()))  	{ -		if(SOURCE_AGENT == source) +		if (SOURCE_AGENT == source)  		{  			// Remove the inventory item from local inventory. The  			// server will actually remove the item from agent @@ -1372,13 +1372,13 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,  			gInventory.deleteObject(item->getUUID());  			gInventory.notifyObservers();  		} -		else if(SOURCE_WORLD == source) +		else if (SOURCE_WORLD == source)  		{  			// *FIX: if the objects are in different regions, and the  			// source region has crashed, you can bypass these  			// permissions.  			LLViewerObject* src_obj = gObjectList.findObject(src_id); -			if(src_obj) +			if (src_obj)  			{  				src_obj->removeInventory(item->getUUID());  			} @@ -1398,7 +1398,7 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,  	// VEFFECT: AddToInventory  	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -	effectp->setSourceObject(gAgent.getAvatarObject()); +	effectp->setSourceObject(gAgentAvatarp);  	effectp->setTargetObject(hit_obj);  	effectp->setDuration(LL_HUD_DUR_SHORT);  	effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -1411,11 +1411,11 @@ void LLToolDragAndDrop::giveInventory(const LLUUID& to_agent,  {  	llinfos << "LLToolDragAndDrop::giveInventory()" << llendl; -	if(!isInventoryGiveAcceptable(item)) +	if (!isInventoryGiveAcceptable(item))  	{  		return;  	} -	if(item->getPermissions().allowCopyBy(gAgent.getID())) +	if (item->getPermissions().allowCopyBy(gAgent.getID()))  	{  		// just give it away.  		LLToolDragAndDrop::commitGiveInventoryItem(to_agent, item, im_session_id); @@ -1439,7 +1439,7 @@ bool LLToolDragAndDrop::handleCopyProtectedItem(const LLSD& notification, const  	{  	case 0:  // "Yes"  		item = gInventory.getItem(notification["payload"]["item_id"].asUUID()); -		if(item) +		if (item)  		{  			LLToolDragAndDrop::commitGiveInventoryItem(notification["payload"]["agent_id"].asUUID(),  													   item); @@ -1466,7 +1466,7 @@ void LLToolDragAndDrop::commitGiveInventoryItem(const LLUUID& to_agent,  												LLInventoryItem* item,  												const LLUUID& im_session_id)  { -	if(!item) return; +	if (!item) return;  	std::string name;  	LLAgentUI::buildFullname(name);  	LLUUID transaction_id; @@ -1496,7 +1496,7 @@ void LLToolDragAndDrop::commitGiveInventoryItem(const LLUUID& to_agent,  	// VEFFECT: giveInventory  	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -	effectp->setSourceObject(gAgent.getAvatarObject()); +	effectp->setSourceObject(gAgentAvatarp);  	effectp->setTargetObject(gObjectList.findObject(to_agent));  	effectp->setDuration(LL_HUD_DUR_SHORT);  	effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -1543,21 +1543,17 @@ void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent,  											  const LLUUID& im_session_id)  { -	if(!cat) return; +	if (!cat) return;  	llinfos << "LLToolDragAndDrop::giveInventoryCategory() - "  			<< cat->getUUID() << llendl; -	LLVOAvatar* my_avatar = gAgent.getAvatarObject(); -	if( !my_avatar ) -	{ -		return; -	} +	if (!isAgentAvatarValid()) return;  	// Test out how many items are being given.  	LLViewerInventoryCategory::cat_array_t cats;  	LLViewerInventoryItem::item_array_t items;  	LLGiveable giveable; -	gInventory.collectDescendentsIf(cat->getUUID(), +	gInventory.collectDescendentsIf (cat->getUUID(),  									cats,  									items,  									LLInventoryModel::EXCLUDE_TRASH, @@ -1566,31 +1562,31 @@ void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent,  	bool complete = true;  	for(S32 i = 0; i < count; ++i)  	{ -		if(!gInventory.isCategoryComplete(cats.get(i)->getUUID())) +		if (!gInventory.isCategoryComplete(cats.get(i)->getUUID()))  		{  			complete = false;  			break;  		}  	} -	if(!complete) +	if (!complete)  	{  		LLNotificationsUtil::add("IncompleteInventory");  		return;  	}   	count = items.count() + cats.count(); - 	if(count > MAX_ITEMS) + 	if (count > MAX_ITEMS)    	{  		LLNotificationsUtil::add("TooManyItems");    		return;    	} - 	else if(count == 0) + 	else if (count == 0)    	{  		LLNotificationsUtil::add("NoItems");    		return;    	}  	else  	{ -		if(0 == giveable.countNoCopy()) +		if (0 == giveable.countNoCopy())  		{  			LLToolDragAndDrop::commitGiveInventoryCategory(to_agent, cat, im_session_id);  		} @@ -1616,14 +1612,14 @@ bool LLToolDragAndDrop::handleCopyProtectedCategory(const LLSD& notification, co  	{  	case 0:  // "Yes"  		cat = gInventory.getCategory(notification["payload"]["folder_id"].asUUID()); -		if(cat) +		if (cat)  		{  			LLToolDragAndDrop::commitGiveInventoryCategory(notification["payload"]["agent_id"].asUUID(),  														   cat);  			LLViewerInventoryCategory::cat_array_t cats;  			LLViewerInventoryItem::item_array_t items;  			LLUncopyableItems remove; -			gInventory.collectDescendentsIf(cat->getUUID(), +			gInventory.collectDescendentsIf (cat->getUUID(),  											cats,  											items,  											LLInventoryModel::EXCLUDE_TRASH, @@ -1654,7 +1650,7 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,  													const LLUUID& im_session_id)  { -	if(!cat) return; +	if (!cat) return;  	llinfos << "LLToolDragAndDrop::commitGiveInventoryCategory() - "  			<< cat->getUUID() << llendl; @@ -1665,7 +1661,7 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,  	LLViewerInventoryCategory::cat_array_t cats;  	LLViewerInventoryItem::item_array_t items;  	LLGiveable giveable; -	gInventory.collectDescendentsIf(cat->getUUID(), +	gInventory.collectDescendentsIf (cat->getUUID(),  									cats,  									items,  									LLInventoryModel::EXCLUDE_TRASH, @@ -1675,12 +1671,12 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,  	// MTUBYTES or 18 * count < 1200 => count < 1200/18 =>  	// 66. I've cut it down a bit from there to give some pad.   	S32 count = items.count() + cats.count(); - 	if(count > MAX_ITEMS) + 	if (count > MAX_ITEMS)    	{  		LLNotificationsUtil::add("TooManyItems");    		return;    	} - 	else if(count == 0) + 	else if (count == 0)    	{  		LLNotificationsUtil::add("NoItems");    		return; @@ -1739,7 +1735,7 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,  		// VEFFECT: giveInventoryCategory  		LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -		effectp->setSourceObject(gAgent.getAvatarObject()); +		effectp->setSourceObject(gAgentAvatarp);  		effectp->setTargetObject(gObjectList.findObject(to_agent));  		effectp->setDuration(LL_HUD_DUR_SHORT);  		effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -1754,35 +1750,31 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,  // static  BOOL LLToolDragAndDrop::isInventoryGiveAcceptable(LLInventoryItem* item)  { -	if(!item) +	if (!item)  	{  		return FALSE;  	} -	if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID())) +	if (!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))  	{  		return FALSE;  	}  	BOOL copyable = FALSE; -	if(item->getPermissions().allowCopyBy(gAgent.getID())) copyable = TRUE; +	if (item->getPermissions().allowCopyBy(gAgent.getID())) copyable = TRUE; -	LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); -	if(!my_avatar) -	{ -		return FALSE; -	} +	if (!isAgentAvatarValid()) return FALSE;  	BOOL acceptable = TRUE;  	switch(item->getType())  	{  	case LLAssetType::AT_OBJECT: -		if(my_avatar->isWearingAttachment(item->getUUID())) +		if (gAgentAvatarp->isWearingAttachment(item->getUUID()))  		{  			acceptable = FALSE;  		}  		break;  	case LLAssetType::AT_BODYPART:  	case LLAssetType::AT_CLOTHING: -		if(!copyable && gAgentWearables.isWearingItem(item->getUUID())) +		if (!copyable && gAgentWearables.isWearingItem(item->getUUID()))  		{  			acceptable = FALSE;  		} @@ -1796,33 +1788,29 @@ BOOL LLToolDragAndDrop::isInventoryGiveAcceptable(LLInventoryItem* item)  // Static  BOOL LLToolDragAndDrop::isInventoryGroupGiveAcceptable(LLInventoryItem* item)  { -	if(!item) +	if (!item)  	{  		return FALSE;  	}  	// These permissions are double checked in the simulator in  	// LLGroupNoticeInventoryItemFetch::result(). -	if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID())) +	if (!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))  	{  		return FALSE;  	} -	if(!item->getPermissions().allowCopyBy(gAgent.getID())) +	if (!item->getPermissions().allowCopyBy(gAgent.getID()))  	{  		return FALSE;  	} -	LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); -	if(!my_avatar) -	{ -		return FALSE; -	} +	if (!isAgentAvatarValid()) return FALSE;  	BOOL acceptable = TRUE;  	switch(item->getType())  	{  	case LLAssetType::AT_OBJECT: -		if(my_avatar->isWearingAttachment(item->getUUID())) +		if (gAgentAvatarp->isWearingAttachment(item->getUUID()))  		{  			acceptable = FALSE;  		} @@ -1848,7 +1836,7 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL  	// help make sure that drops that are from an object to an object  	// don't have to worry about order of evaluation. Think of this  	// like check for self in assignment. -	if(obj->getID() == item->getParentUUID()) +	if (obj->getID() == item->getParentUUID())  	{  		return ACCEPT_NO;  	} @@ -1857,19 +1845,17 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL  	//							  gAgent.getGroupID())  	//			 && (obj->mPermModify || obj->mFlagAllowInventoryAdd));  	BOOL worn = FALSE; -	LLVOAvatarSelf* my_avatar = NULL;  	switch(item->getType())  	{  	case LLAssetType::AT_OBJECT: -		my_avatar = gAgent.getAvatarObject(); -		if(my_avatar && my_avatar->isWearingAttachment(item->getUUID())) +		if (isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item->getUUID()))  		{  				worn = TRUE;  		}  		break;  	case LLAssetType::AT_BODYPART:  	case LLAssetType::AT_CLOTHING: -		if(gAgentWearables.isWearingItem(item->getUUID())) +		if (gAgentWearables.isWearingItem(item->getUUID()))  		{  			worn = TRUE;  		} @@ -1880,7 +1866,7 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL  	const LLPermissions& perm = item->getPermissions();  	BOOL modify = (obj->permModify() || obj->flagAllowInventoryAdd());  	BOOL transfer = FALSE; -	if((obj->permYouOwner() && (perm.getOwner() == gAgent.getID())) +	if ((obj->permYouOwner() && (perm.getOwner() == gAgent.getID()))  	   || perm.allowOperationBy(PERM_TRANSFER, gAgent.getID()))  	{  		transfer = TRUE; @@ -1888,15 +1874,15 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL  	BOOL volume = (LL_PCODE_VOLUME == obj->getPCode());  	BOOL attached = obj->isAttachment();  	BOOL unrestricted = ((perm.getMaskBase() & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED) ? TRUE : FALSE; -	if(attached && !unrestricted) +	if (attached && !unrestricted)  	{  		return ACCEPT_NO_LOCKED;  	} -	else if(modify && transfer && volume && !worn) +	else if (modify && transfer && volume && !worn)  	{  		return ACCEPT_YES_MULTI;  	} -	else if(!modify) +	else if (!modify)  	{  		return ACCEPT_NO_LOCKED;  	} @@ -1927,12 +1913,12 @@ bool LLToolDragAndDrop::handleGiveDragAndDrop(LLUUID dest_agent, LLUUID session_  	case DAD_CALLINGCARD:  	{  		LLViewerInventoryItem* inv_item = (LLViewerInventoryItem*)cargo_data; -		if(gInventory.getItem(inv_item->getUUID()) +		if (gInventory.getItem(inv_item->getUUID())  		   && LLToolDragAndDrop::isInventoryGiveAcceptable(inv_item))  		{  			// *TODO: get multiple object transfers working  			*accept = ACCEPT_YES_COPY_SINGLE; -			if(drop) +			if (drop)  			{  				LLToolDragAndDrop::giveInventory(dest_agent, inv_item, session_id);  			} @@ -1950,11 +1936,11 @@ bool LLToolDragAndDrop::handleGiveDragAndDrop(LLUUID dest_agent, LLUUID session_  	case DAD_CATEGORY:  	{  		LLViewerInventoryCategory* inv_cat = (LLViewerInventoryCategory*)cargo_data; -		if( gInventory.getCategory( inv_cat->getUUID() ) ) +		if (gInventory.getCategory(inv_cat->getUUID()))  		{  			// *TODO: get multiple object transfers working  			*accept = ACCEPT_YES_COPY_SINGLE; -			if(drop) +			if (drop)  			{  				LLToolDragAndDrop::giveInventoryCategory(dest_agent, inv_cat, session_id);  			} @@ -1995,7 +1981,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv(  {  	lldebugs << "LLToolDragAndDrop::dad3dRezAttachmentFromInv()" << llendl;  	// must be in the user's inventory -	if(mSource != SOURCE_AGENT && mSource != SOURCE_LIBRARY) +	if (mSource != SOURCE_AGENT && mSource != SOURCE_LIBRARY)  	{  		return ACCEPT_NO;  	} @@ -2003,25 +1989,24 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO;  	// must not be in the trash  	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -	if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) ) +	if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  	{  		return ACCEPT_NO;  	}  	// must not be already wearing it -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if(!avatarp || avatarp->isWearingAttachment(item->getUUID()) ) +	if (!isAgentAvatarValid() || gAgentAvatarp->isWearingAttachment(item->getUUID()))  	{  		return ACCEPT_NO;  	} -	if( drop ) +	if (drop)  	{ -		if(mSource == SOURCE_LIBRARY) +		if (mSource == SOURCE_LIBRARY)  		{  			LLPointer<LLInventoryCallback> cb = new RezAttachmentCallback(0);  			copy_inventory_item( @@ -2053,10 +2038,9 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO; -	LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); -	if( !my_avatar || my_avatar->isWearingAttachment( item->getUUID() ) ) +	if (!isAgentAvatarValid() || gAgentAvatarp->isWearingAttachment(item->getUUID()))  	{  		return ACCEPT_NO;  	} @@ -2081,7 +2065,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(  	// check if the item can be copied. If not, send that to the sim  	// which will remove the inventory item. -	if(!item->getPermissions().allowCopyBy(gAgent.getID())) +	if (!item->getPermissions().allowCopyBy(gAgent.getID()))  	{  		accept = ACCEPT_YES_SINGLE;  		remove_inventory = TRUE; @@ -2089,13 +2073,13 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(  	// Check if it's in the trash.  	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -	if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id)) +	if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  	{  		accept = ACCEPT_YES_SINGLE;  		remove_inventory = TRUE;  	} -	if(drop) +	if (drop)  	{  		dropObject(obj, TRUE, FALSE, remove_inventory);  	} @@ -2116,24 +2100,23 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; -	LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject(); -	if( !my_avatar || my_avatar->isWearingAttachment( item->getUUID() ) ) +	if (!item || !item->isComplete()) return ACCEPT_NO; +	if (!isAgentAvatarValid() || gAgentAvatarp->isWearingAttachment(item->getUUID()))  	{  		return ACCEPT_NO;  	} -	if((mask & MASK_CONTROL)) +	if ((mask & MASK_CONTROL))  	{  		// *HACK: In order to resolve SL-22177, we need to block drags  		// from notecards and objects onto other objects. -		if(mSource == SOURCE_NOTECARD) +		if (mSource == SOURCE_NOTECARD)  		{  			return ACCEPT_NO;  		}  		EAcceptance rv = willObjectAcceptInventory(obj, item); -		if(drop && (ACCEPT_YES_SINGLE <= rv)) +		if (drop && (ACCEPT_YES_SINGLE <= rv))  		{  			dropInventory(obj, item, mSource, mSourceID);  		} @@ -2159,7 +2142,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(  	// check if the item can be copied. If not, send that to the sim  	// which will remove the inventory item. -	if(!item->getPermissions().allowCopyBy(gAgent.getID())) +	if (!item->getPermissions().allowCopyBy(gAgent.getID()))  	{  		accept = ACCEPT_YES_SINGLE;  		remove_inventory = TRUE; @@ -2167,13 +2150,13 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(  	// Check if it's in the trash.  	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -	if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id)) +	if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  	{  		accept = ACCEPT_YES_SINGLE;  		remove_inventory = TRUE;  	} -	if(drop) +	if (drop)  	{  		dropObject(obj, FALSE, FALSE, remove_inventory);  	} @@ -2188,7 +2171,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezScript(  	// *HACK: In order to resolve SL-22177, we need to block drags  	// from notecards and objects onto other objects. -	if((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource)) +	if ((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))  	{  		return ACCEPT_NO;  	} @@ -2196,9 +2179,9 @@ EAcceptance LLToolDragAndDrop::dad3dRezScript(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO;  	EAcceptance rv = willObjectAcceptInventory(obj, item); -	if(drop && (ACCEPT_YES_SINGLE <= rv)) +	if (drop && (ACCEPT_YES_SINGLE <= rv))  	{  		// rez in the script active by default, rez in inactive if the  		// control key is being held down. @@ -2226,7 +2209,7 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(  	// *HACK: In order to resolve SL-22177, we need to block drags  	// from notecards and objects onto other objects. -	if((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource)) +	if ((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))  	{  		return ACCEPT_NO;  	} @@ -2234,29 +2217,29 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO;  	EAcceptance rv = willObjectAcceptInventory(obj, item); -	if((mask & MASK_CONTROL)) +	if ((mask & MASK_CONTROL))  	{ -		if((ACCEPT_YES_SINGLE <= rv) && drop) +		if ((ACCEPT_YES_SINGLE <= rv) && drop)  		{  			dropInventory(obj, item, mSource, mSourceID);  		}  		return rv;  	} -	if(!obj->permModify()) +	if (!obj->permModify())  	{  		return ACCEPT_NO_LOCKED;  	}  	//If texture !copyable don't texture or you'll never get it back. -	if(!item->getPermissions().allowCopyBy(gAgent.getID())) +	if (!item->getPermissions().allowCopyBy(gAgent.getID()))  	{  		return ACCEPT_NO;  	} -	if(drop && (ACCEPT_YES_SINGLE <= rv)) +	if (drop && (ACCEPT_YES_SINGLE <= rv))  	{ -		if((mask & MASK_SHIFT)) +		if ((mask & MASK_SHIFT))  		{  			dropTextureAllFaces(obj, item, mSource, mSourceID);  		} @@ -2267,7 +2250,7 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(  		// VEFFECT: SetTexture  		LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -		effectp->setSourceObject(gAgent.getAvatarObject()); +		effectp->setSourceObject(gAgentAvatarp);  		effectp->setTargetObject(obj);  		effectp->setDuration(LL_HUD_DUR_SHORT);  		effectp->setColor(LLColor4U(gAgent.getEffectColor())); @@ -2281,9 +2264,9 @@ EAcceptance LLToolDragAndDrop::dad3dTextureSelf(  	LLViewerObject* obj, S32 face, MASK mask, BOOL drop)  {  	lldebugs << "LLToolDragAndDrop::dad3dTextureAvatar()" << llendl; -	if(drop) +	if (drop)  	{ -		if( !(mask & MASK_SHIFT) ) +		if (!(mask & MASK_SHIFT))  		{  			dropTextureOneFaceAvatar( (LLVOAvatar*)obj, face, (LLInventoryItem*)mCargoData);  		} @@ -2299,18 +2282,18 @@ EAcceptance LLToolDragAndDrop::dad3dWearItem(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO; -	if(mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY) +	if (mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)  	{  		// it's in the agent inventory  		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -		if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) ) +		if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  		{  			return ACCEPT_NO;  		} -		if( drop ) +		if (drop)  		{  			// Don't wear anything until initial wearables are loaded, can  			// destroy clothing items. @@ -2320,7 +2303,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearItem(  				return ACCEPT_NO;  			} -			if(mSource == SOURCE_LIBRARY) +			if (mSource == SOURCE_LIBRARY)  			{  				// create item based on that one, and put it on if that  				// was a success. @@ -2354,21 +2337,21 @@ EAcceptance LLToolDragAndDrop::dad3dActivateGesture(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO; -	if(mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY) +	if (mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)  	{  		// it's in the agent inventory  		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -		if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) ) +		if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  		{  			return ACCEPT_NO;  		} -		if( drop ) +		if (drop)  		{  			LLUUID item_id; -			if(mSource == SOURCE_LIBRARY) +			if (mSource == SOURCE_LIBRARY)  			{  				// create item based on that one, and put it on if that  				// was a success. @@ -2383,7 +2366,7 @@ EAcceptance LLToolDragAndDrop::dad3dActivateGesture(  			}  			else  			{ -				LLGestureManager::instance().activateGesture(item->getUUID()); +				LLGestureMgr::instance().activateGesture(item->getUUID());  				gInventory.updateItem(item);  				gInventory.notifyObservers();  			} @@ -2403,7 +2386,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* category;  	locateInventory(item, category); -	if(!category) return ACCEPT_NO; +	if (!category) return ACCEPT_NO;  	if (drop)  	{ @@ -2416,26 +2399,26 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory(  		}  	} -	if(mSource == SOURCE_AGENT) +	if (mSource == SOURCE_AGENT)  	{  		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -		if( gInventory.isObjectDescendentOf( category->getUUID(), trash_id ) ) +		if (gInventory.isObjectDescendentOf(category->getUUID(), trash_id))  		{  			return ACCEPT_NO;  		} -		if(drop) +		if (drop)  		{  		    BOOL append = ( (mask & MASK_SHIFT) ? TRUE : FALSE ); -			LLAppearanceManager::instance().wearInventoryCategory(category, false, append); +			LLAppearanceMgr::instance().wearInventoryCategory(category, false, append);  		}  		return ACCEPT_YES_MULTI;  	} -	else if(mSource == SOURCE_LIBRARY) +	else if (mSource == SOURCE_LIBRARY)  	{ -		if(drop) +		if (drop)  		{ -			LLAppearanceManager::instance().wearInventoryCategory(category, true, false); +			LLAppearanceMgr::instance().wearInventoryCategory(category, true, false);  		}  		return ACCEPT_YES_MULTI;  	} @@ -2454,7 +2437,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventory(  	// *HACK: In order to resolve SL-22177, we need to block drags  	// from notecards and objects onto other objects. -	if((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource)) +	if ((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))  	{  		return ACCEPT_NO;  	} @@ -2462,7 +2445,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventory(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO;  	LLViewerObject* root_object = obj;  	if (obj && obj->getParent())  	{ @@ -2474,7 +2457,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventory(  	}  	EAcceptance rv = willObjectAcceptInventory(root_object, item); -	if(root_object && drop && (ACCEPT_YES_COPY_SINGLE <= rv)) +	if (root_object && drop && (ACCEPT_YES_COPY_SINGLE <= rv))  	{  		dropInventory(root_object, item, mSource, mSourceID);  	} @@ -2518,7 +2501,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(  	LLDroppableItem droppable(!obj->permYouOwner());  	LLInventoryModel::cat_array_t cats;  	LLInventoryModel::item_array_t items; -	gInventory.collectDescendentsIf(cat->getUUID(), +	gInventory.collectDescendentsIf (cat->getUUID(),  					cats,  					items,  					LLInventoryModel::EXCLUDE_TRASH, @@ -2547,7 +2530,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(  	{  		const LLViewerInventoryCategory *cat = (*cat_iter);  		rv = gInventory.isCategoryComplete(cat->getUUID()) ? ACCEPT_YES_MULTI : ACCEPT_NO; -		if(rv < ACCEPT_YES_SINGLE) +		if (rv < ACCEPT_YES_SINGLE)  		{  			lldebugs << "Category " << cat->getUUID() << "is not complete." << llendl;  			break; @@ -2590,7 +2573,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(  		}  		LLCategoryDropObserver* dropper = new LLCategoryDropObserver(obj->getID(), mSource);  		dropper->fetchItems(ids); -		if(dropper->isEverythingComplete()) +		if (dropper->isEverythingComplete())  		{  			dropper->done();  		} @@ -2615,27 +2598,26 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventoryObject(  	lldebugs << "LLToolDragAndDrop::dad3dGiveInventoryObject()" << llendl;  	// item has to be in agent inventory. -	if(mSource != SOURCE_AGENT) return ACCEPT_NO; +	if (mSource != SOURCE_AGENT) return ACCEPT_NO;  	// find the item now.  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; -	if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID())) +	if (!item || !item->isComplete()) return ACCEPT_NO; +	if (!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))  	{  		// cannot give away no-transfer objects  		return ACCEPT_NO;  	} -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if(avatarp && avatarp->isWearingAttachment( item->getUUID() ) ) +	if (isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item->getUUID()))  	{  		// You can't give objects that are attached to you  		return ACCEPT_NO;  	} -	if(obj && avatarp) +	if (obj && isAgentAvatarValid())  	{ -		if(drop) +		if (drop)  		{  			giveInventory(obj->getID(), item );  		} @@ -2652,16 +2634,16 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventory(  {  	lldebugs << "LLToolDragAndDrop::dad3dGiveInventory()" << llendl;  	// item has to be in agent inventory. -	if(mSource != SOURCE_AGENT) return ACCEPT_NO; +	if (mSource != SOURCE_AGENT) return ACCEPT_NO;  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; -	if(!isInventoryGiveAcceptable(item)) +	if (!item || !item->isComplete()) return ACCEPT_NO; +	if (!isInventoryGiveAcceptable(item))  	{  		return ACCEPT_NO;  	} -	if(drop && obj) +	if (drop && obj)  	{  		giveInventory(obj->getID(), item);  	} @@ -2674,12 +2656,12 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventoryCategory(  	LLViewerObject* obj, S32 face, MASK mask, BOOL drop)  {  	lldebugs << "LLToolDragAndDrop::dad3dGiveInventoryCategory()" << llendl; -	if(drop && obj) +	if (drop && obj)  	{  		LLViewerInventoryItem* item;  		LLViewerInventoryCategory* cat;  		locateInventory(item, cat); -		if(!cat) return ACCEPT_NO; +		if (!cat) return ACCEPT_NO;  		giveInventoryCategory(obj->getID(), cat);  	}  	// *TODO: deal with all the issues surrounding multi-object @@ -2695,14 +2677,14 @@ EAcceptance LLToolDragAndDrop::dad3dRezFromObjectOnLand(  	LLViewerInventoryItem* item = NULL;  	LLViewerInventoryCategory* cat = NULL;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; +	if (!item || !item->isComplete()) return ACCEPT_NO; -	if(!gAgent.allowOperation(PERM_COPY, item->getPermissions()) +	if (!gAgent.allowOperation(PERM_COPY, item->getPermissions())  		|| !item->getPermissions().allowTransferTo(LLUUID::null))  	{  		return ACCEPT_NO_LOCKED;  	} -	if(drop) +	if (drop)  	{  		dropObject(obj, TRUE, TRUE, FALSE);  	} @@ -2716,8 +2698,8 @@ EAcceptance LLToolDragAndDrop::dad3dRezFromObjectOnObject(  	LLViewerInventoryItem* item;  	LLViewerInventoryCategory* cat;  	locateInventory(item, cat); -	if(!item || !item->isComplete()) return ACCEPT_NO; -	if((mask & MASK_CONTROL)) +	if (!item || !item->isComplete()) return ACCEPT_NO; +	if ((mask & MASK_CONTROL))  	{  		// *HACK: In order to resolve SL-22177, we need to block drags  		// from notecards and objects onto other objects. @@ -2725,19 +2707,19 @@ EAcceptance LLToolDragAndDrop::dad3dRezFromObjectOnObject(  		// *HACK: uncomment this when appropriate  		//EAcceptance rv = willObjectAcceptInventory(obj, item); -		//if(drop && (ACCEPT_YES_SINGLE <= rv)) +		//if (drop && (ACCEPT_YES_SINGLE <= rv))  		//{  		//	dropInventory(obj, item, mSource, mSourceID);  		//}  		//return rv;  	} -	if(!item->getPermissions().allowCopyBy(gAgent.getID(), +	if (!item->getPermissions().allowCopyBy(gAgent.getID(),  										   gAgent.getGroupID())  	   || !item->getPermissions().allowTransferTo(LLUUID::null))  	{  		return ACCEPT_NO_LOCKED;  	} -	if(drop) +	if (drop)  	{  		dropObject(obj, FALSE, TRUE, FALSE);  	} @@ -2753,23 +2735,23 @@ EAcceptance LLToolDragAndDrop::dad3dCategoryOnLand(  	LLInventoryItem* item;  	LLInventoryCategory* cat;  	locateInventory(item, cat); -	if(!cat) return ACCEPT_NO; +	if (!cat) return ACCEPT_NO;  	EAcceptance rv = ACCEPT_NO;  	// find all the items in the category  	LLViewerInventoryCategory::cat_array_t cats;  	LLViewerInventoryItem::item_array_t items;  	LLDropCopyableItems droppable; -	gInventory.collectDescendentsIf(cat->getUUID(), +	gInventory.collectDescendentsIf (cat->getUUID(),  									cats,  									items,  									LLInventoryModel::EXCLUDE_TRASH,  									droppable); -	if(items.count() > 0) +	if (items.count() > 0)  	{  		rv = ACCEPT_YES_SINGLE;  	} -	if((rv >= ACCEPT_YES_COPY_SINGLE) && drop) +	if ((rv >= ACCEPT_YES_COPY_SINGLE) && drop)  	{  		createContainer(items, cat->getName());  		return ACCEPT_NO; @@ -2792,19 +2774,19 @@ EAcceptance LLToolDragAndDrop::dad3dAssetOnLand(  	LLViewerInventoryItem::item_array_t items;  	LLViewerInventoryItem::item_array_t copyable_items;  	locateMultipleInventory(items, cats); -	if(!items.count()) return ACCEPT_NO; +	if (!items.count()) return ACCEPT_NO;  	EAcceptance rv = ACCEPT_NO;  	for (S32 i = 0; i < items.count(); i++)  	{  		LLInventoryItem* item = items[i]; -		if(item->getPermissions().allowCopyBy(gAgent.getID())) +		if (item->getPermissions().allowCopyBy(gAgent.getID()))  		{  			copyable_items.put(item);  			rv = ACCEPT_YES_SINGLE;  		}  	} -	if((rv >= ACCEPT_YES_COPY_SINGLE) && drop) +	if ((rv >= ACCEPT_YES_COPY_SINGLE) && drop)  	{  		createContainer(copyable_items, NULL);  	} @@ -2819,20 +2801,20 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(  {  	item = NULL;  	cat = NULL; -	if(mCargoIDs.empty()) return NULL; -	if((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY)) +	if (mCargoIDs.empty()) return NULL; +	if ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))  	{  		// The object should be in user inventory.  		item = (LLViewerInventoryItem*)gInventory.getItem(mCargoIDs[mCurItemIndex]);  		cat = (LLViewerInventoryCategory*)gInventory.getCategory(mCargoIDs[mCurItemIndex]);  	} -	else if(mSource == SOURCE_WORLD) +	else if (mSource == SOURCE_WORLD)  	{  		// This object is in some task inventory somewhere.  		LLViewerObject* obj = gObjectList.findObject(mSourceID); -		if(obj) +		if (obj)  		{ -			if((mCargoTypes[mCurItemIndex] == DAD_CATEGORY) +			if ((mCargoTypes[mCurItemIndex] == DAD_CATEGORY)  			   || (mCargoTypes[mCurItemIndex] == DAD_ROOT_CATEGORY))  			{  				cat = (LLViewerInventoryCategory*)obj->getInventoryObject(mCargoIDs[mCurItemIndex]); @@ -2843,16 +2825,16 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(  			}  		}  	} -	else if(mSource == SOURCE_NOTECARD) +	else if (mSource == SOURCE_NOTECARD)  	{  		LLPreviewNotecard* preview = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", mSourceID); -		if(preview) +		if (preview)  		{  			item = (LLViewerInventoryItem*)preview->getDragItem();  		}  	} -	if(item) return item; -	if(cat) return cat; +	if (item) return item; +	if (cat) return cat;  	return NULL;  } @@ -2860,8 +2842,8 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(  LLInventoryObject* LLToolDragAndDrop::locateMultipleInventory(LLViewerInventoryCategory::cat_array_t& cats,  															  LLViewerInventoryItem::item_array_t& items)  { -	if(mCargoIDs.count() == 0) return NULL; -	if((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY)) +	if (mCargoIDs.count() == 0) return NULL; +	if ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))  	{  		// The object should be in user inventory.  		for (S32 i = 0; i < mCargoIDs.count(); i++) @@ -2878,13 +2860,13 @@ LLInventoryObject* LLToolDragAndDrop::locateMultipleInventory(LLViewerInventoryC  			}  		}  	} -	else if(mSource == SOURCE_WORLD) +	else if (mSource == SOURCE_WORLD)  	{  		// This object is in some task inventory somewhere.  		LLViewerObject* obj = gObjectList.findObject(mSourceID); -		if(obj) +		if (obj)  		{ -			if((mCargoType == DAD_CATEGORY) +			if ((mCargoType == DAD_CATEGORY)  			   || (mCargoType == DAD_ROOT_CATEGORY))  			{  				// The object should be in user inventory. @@ -2910,17 +2892,17 @@ LLInventoryObject* LLToolDragAndDrop::locateMultipleInventory(LLViewerInventoryC  			}  		}  	} -	else if(mSource == SOURCE_NOTECARD) +	else if (mSource == SOURCE_NOTECARD)  	{  		LLPreviewNotecard* card;  		card = (LLPreviewNotecard*)LLPreview::find(mSourceID); -		if(card) +		if (card)  		{  			items.put((LLInventoryItem*)card->getDragItem());  		}  	} -	if(items.count()) return items[0]; -	if(cats.count()) return cats[0]; +	if (items.count()) return items[0]; +	if (cats.count()) return cats[0];  	return NULL;  }  */ diff --git a/indra/newview/lltooldraganddrop.h b/indra/newview/lltooldraganddrop.h index 0da13dac8b..85d003e5fc 100644 --- a/indra/newview/lltooldraganddrop.h +++ b/indra/newview/lltooldraganddrop.h @@ -81,7 +81,7 @@ public:  				   const LLUUID& source_id = LLUUID::null,  				   const LLUUID& object_id = LLUUID::null);  	void beginMultiDrag(const std::vector<EDragAndDropType> types, -						const std::vector<LLUUID>& cargo_ids, +						const uuid_vec_t& cargo_ids,  						ESource source,  						const LLUUID& source_id = LLUUID::null);  	void endDrag(); @@ -125,7 +125,7 @@ protected:  	std::vector<EDragAndDropType> mCargoTypes;  	//void*			mCargoData; -	std::vector<LLUUID> mCargoIDs; +	uuid_vec_t mCargoIDs;  	ESource mSource;  	LLUUID mSourceID;  	LLUUID mObjectID; diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp index 1e2e7095d8..032714cabf 100644 --- a/indra/newview/lltoolfocus.cpp +++ b/indra/newview/lltoolfocus.cpp @@ -173,14 +173,12 @@ void LLToolCamera::pickCallback(const LLPickInfo& pick_info)  		BOOL good_customize_avatar_hit = FALSE;  		if( hit_obj )  		{ -			LLVOAvatar* avatar = gAgent.getAvatarObject(); -			if( hit_obj == avatar)  +			if (isAgentAvatarValid() && (hit_obj == gAgentAvatarp))  			{  				// It's you  				good_customize_avatar_hit = TRUE;  			} -			else -			if( hit_obj->isAttachment() && hit_obj->permYouOwner() ) +			else if (hit_obj->isAttachment() && hit_obj->permYouOwner())  			{  				// It's an attachment that you're wearing  				good_customize_avatar_hit = TRUE; @@ -223,8 +221,8 @@ void LLToolCamera::pickCallback(const LLPickInfo& pick_info)  			gAgentCamera.cameraThirdPerson() &&  			gViewerWindow->getLeftMouseDown() &&   			!gSavedSettings.getBOOL("FreezeTime") && -			(hit_obj == gAgent.getAvatarObject() ||  -				(hit_obj && hit_obj->isAttachment() && LLVOAvatar::findAvatarFromAttachment(hit_obj)->isSelf()))) +			(hit_obj == gAgentAvatarp ||  +			 (hit_obj && hit_obj->isAttachment() && LLVOAvatar::findAvatarFromAttachment(hit_obj)->isSelf())))  		{  			LLToolCamera::getInstance()->mMouseSteering = TRUE;  		} diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp index 008cf16f2e..04d873f91b 100644 --- a/indra/newview/lltoolgrab.cpp +++ b/indra/newview/lltoolgrab.cpp @@ -708,7 +708,7 @@ void LLToolGrab::handleHoverActive(S32 x, S32 y, MASK mask)  	{  		if (!gAgentCamera.cameraMouselook() &&   			!objectp->isHUDAttachment() &&  -			objectp->getRoot() == gAgent.getAvatarObject()->getRoot()) +			objectp->getRoot() == gAgentAvatarp->getRoot())  		{  			// force focus to point in space where we were looking previously  			gAgentCamera.setFocusGlobal(gAgentCamera.calcFocusPositionTargetGlobal(), LLUUID::null); diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp index c42c47c486..969049ee65 100644 --- a/indra/newview/lltoolmorph.cpp +++ b/indra/newview/lltoolmorph.cpp @@ -139,22 +139,20 @@ void LLVisualParamHint::requestHintUpdates( LLVisualParamHint* exception1, LLVis  BOOL LLVisualParamHint::needsRender()  { -	return mNeedsUpdate && mDelayFrames-- <= 0 && !gAgent.getAvatarObject()->mAppearanceAnimating && mAllowsUpdates; +	return mNeedsUpdate && mDelayFrames-- <= 0 && !gAgentAvatarp->mAppearanceAnimating && mAllowsUpdates;  }  void LLVisualParamHint::preRender(BOOL clear_depth)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -  	mLastParamWeight = mVisualParam->getWeight();  	mVisualParam->setWeight(mVisualParamWeight, FALSE); -	avatarp->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight, FALSE); -	avatarp->setVisualParamWeight("Blink_Left", 0.f); -	avatarp->setVisualParamWeight("Blink_Right", 0.f); -	avatarp->updateComposites(); -	avatarp->updateVisualParams(); -	avatarp->updateGeometry(avatarp->mDrawable); -	avatarp->updateLOD(); +	gAgentAvatarp->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight, FALSE); +	gAgentAvatarp->setVisualParamWeight("Blink_Left", 0.f); +	gAgentAvatarp->setVisualParamWeight("Blink_Right", 0.f); +	gAgentAvatarp->updateComposites(); +	gAgentAvatarp->updateVisualParams(); +	gAgentAvatarp->updateGeometry(gAgentAvatarp->mDrawable); +	gAgentAvatarp->updateLOD();  	LLViewerDynamicTexture::preRender(clear_depth);  } @@ -165,7 +163,6 @@ void LLVisualParamHint::preRender(BOOL clear_depth)  BOOL LLVisualParamHint::render()  {  	LLVisualParamReset::sDirty = TRUE; -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();  	gGL.pushUIMatrix();  	gGL.loadUIIdentity(); @@ -196,7 +193,7 @@ BOOL LLVisualParamHint::render()  	const std::string& cam_target_mesh_name = mVisualParam->getCameraTargetName();  	if( !cam_target_mesh_name.empty() )  	{ -		cam_target_joint = (LLViewerJointMesh*)avatarp->getJoint( cam_target_mesh_name ); +		cam_target_joint = (LLViewerJointMesh*)gAgentAvatarp->getJoint( cam_target_mesh_name );  	}  	if( !cam_target_joint )  	{ @@ -204,11 +201,11 @@ BOOL LLVisualParamHint::render()  	}  	if( !cam_target_joint )  	{ -		cam_target_joint = (LLViewerJointMesh*)avatarp->getJoint("mHead"); +		cam_target_joint = (LLViewerJointMesh*)gAgentAvatarp->getJoint("mHead");  	}  	LLQuaternion avatar_rotation; -	LLJoint* root_joint = avatarp->getRootJoint(); +	LLJoint* root_joint = gAgentAvatarp->getRootJoint();  	if( root_joint )  	{  		avatar_rotation = root_joint->getWorldRotation(); @@ -236,17 +233,17 @@ BOOL LLVisualParamHint::render()  	LLViewerCamera::getInstance()->setPerspective(FALSE, mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight, FALSE); -	if (avatarp->mDrawable.notNull()) +	if (gAgentAvatarp->mDrawable.notNull())  	{ -		LLDrawPoolAvatar *avatarPoolp = (LLDrawPoolAvatar *)avatarp->mDrawable->getFace(0)->getPool(); +		LLDrawPoolAvatar *avatarPoolp = (LLDrawPoolAvatar *)gAgentAvatarp->mDrawable->getFace(0)->getPool();  		LLGLDepthTest gls_depth(GL_TRUE, GL_TRUE);  		gGL.setAlphaRejectSettings(LLRender::CF_ALWAYS);  		gGL.setSceneBlendType(LLRender::BT_REPLACE); -		avatarPoolp->renderAvatars(avatarp);  // renders only one avatar +		avatarPoolp->renderAvatars(gAgentAvatarp);  // renders only one avatar  		gGL.setSceneBlendType(LLRender::BT_ALPHA);  		gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);  	} -	avatarp->setVisualParamWeight(mVisualParam->getID(), mLastParamWeight); +	gAgentAvatarp->setVisualParamWeight(mVisualParam->getID(), mLastParamWeight);  	mVisualParam->setWeight(mLastParamWeight, FALSE);  	gGL.color4f(1,1,1,1);  	mGLTexturep->setGLTextureCreated(true); @@ -297,10 +294,9 @@ BOOL LLVisualParamReset::render()  {  	if (sDirty)  	{ -		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -		avatarp->updateComposites(); -		avatarp->updateVisualParams(); -		avatarp->updateGeometry(avatarp->mDrawable); +		gAgentAvatarp->updateComposites(); +		gAgentAvatarp->updateVisualParams(); +		gAgentAvatarp->updateGeometry(gAgentAvatarp->mDrawable);  		sDirty = FALSE;  	} diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index b7947cf4ae..84c463495b 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -205,15 +205,15 @@ BOOL LLToolPie::pickLeftMouseDownCallback()  			// touch behavior down below...  			break;  		case CLICK_ACTION_SIT: - -			if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->isSitting())) // agent not already sitting  			{ -				handle_object_sit_or_stand(); -				// put focus in world when sitting on an object -				gFocusMgr.setKeyboardFocus(NULL); -				return TRUE; -			} // else nothing (fall through to touch) -			 +				if (isAgentAvatarValid() && !gAgentAvatarp->isSitting()) // agent not already sitting +				{ +					handle_object_sit_or_stand(); +					// put focus in world when sitting on an object +					gFocusMgr.setKeyboardFocus(NULL); +					return TRUE; +				} // else nothing (fall through to touch) +			}  		case CLICK_ACTION_PAY:  			if ((object && object->flagTakesMoney())  				|| (parent && parent->flagTakesMoney())) @@ -330,7 +330,7 @@ BOOL LLToolPie::pickLeftMouseDownCallback()  			}  			object = (LLViewerObject*)object->getParent();  		} -		if (object && object == gAgent.getAvatarObject()) +		if (object && object == gAgentAvatarp)  		{  			// we left clicked on avatar, switch to focus mode  			LLToolMgr::getInstance()->setTransientTool(LLToolCamera::getInstance()); @@ -411,9 +411,11 @@ ECursorType cursor_from_object(LLViewerObject* object)  	switch(click_action)  	{  	case CLICK_ACTION_SIT: -		if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->isSitting())) // not already sitting?  		{ -			cursor = UI_CURSOR_TOOLSIT; +			if (isAgentAvatarValid() && !gAgentAvatarp->isSitting()) // not already sitting? +			{ +				cursor = UI_CURSOR_TOOLSIT; +			}  		}  		break;  	case CLICK_ACTION_BUY: diff --git a/indra/newview/lltoolplacer.cpp b/indra/newview/lltoolplacer.cpp index b10ee590e0..91f01f0b36 100644 --- a/indra/newview/lltoolplacer.cpp +++ b/indra/newview/lltoolplacer.cpp @@ -62,6 +62,7 @@  #include "llviewerobjectlist.h"  #include "llviewercamera.h"  #include "llviewerstats.h" +#include "llvoavatarself.h"  // linden library headers  #include "llprimitive.h" @@ -433,7 +434,7 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )  	// VEFFECT: AddObject  	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); -	effectp->setSourceObject((LLViewerObject*)gAgent.getAvatarObject()); +	effectp->setSourceObject((LLViewerObject*)gAgentAvatarp);  	effectp->setPositionGlobal(regionp->getPosGlobalFromRegion(ray_end_region));  	effectp->setDuration(LL_HUD_DUR_SHORT);  	effectp->setColor(LLColor4U(gAgent.getEffectColor())); diff --git a/indra/newview/lltoolselect.cpp b/indra/newview/lltoolselect.cpp index 6e0c6663e9..2065ba1791 100644 --- a/indra/newview/lltoolselect.cpp +++ b/indra/newview/lltoolselect.cpp @@ -169,8 +169,8 @@ LLObjectSelectionHandle LLToolSelect::handleObjectSelection(const LLPickInfo& pi  		}  		if (!gAgentCamera.getFocusOnAvatar() &&										// if camera not glued to avatar -			LLVOAvatar::findAvatarFromAttachment(object) != gAgent.getAvatarObject() &&	// and it's not one of your attachments -			object != gAgent.getAvatarObject())									// and it's not you +			LLVOAvatar::findAvatarFromAttachment(object) != gAgentAvatarp &&	// and it's not one of your attachments +			object != gAgentAvatarp)									// and it's not you  		{  			// have avatar turn to face the selected object(s)  			LLVector3d selection_center = LLSelectMgr::getInstance()->getSelectionCenterGlobal(); diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 5a2b901bd7..823466e33e 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -345,9 +345,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)  		const F32 TELEPORT_ARRIVAL_DELAY = 2.f; // Time to preload the world before raising the curtain after we've actually already arrived.  		S32 attach_count = 0; -		if (gAgent.getAvatarObject()) +		if (isAgentAvatarValid())  		{ -			attach_count = gAgent.getAvatarObject()->getAttachmentCount(); +			attach_count = gAgentAvatarp->getAttachmentCount();  		}  		F32 teleport_save_time = TELEPORT_EXPIRY + TELEPORT_EXPIRY_PER_ATTACHMENT * attach_count;  		F32 teleport_elapsed = gTeleportDisplayTimer.getElapsedTimeF32(); @@ -1032,11 +1032,10 @@ LLRect get_whole_screen_region()  bool get_hud_matrices(const LLRect& screen_region, glh::matrix4f &proj, glh::matrix4f &model)  { -	LLVOAvatar* my_avatarp = gAgent.getAvatarObject(); -	if (my_avatarp && my_avatarp->hasHUDAttachment()) +	if (isAgentAvatarValid() && gAgentAvatarp->hasHUDAttachment())  	{  		F32 zoom_level = gAgentCamera.mHUDCurZoom; -		LLBBox hud_bbox = my_avatarp->getHUDBBox(); +		LLBBox hud_bbox = gAgentAvatarp->getHUDBBox();  		F32 hud_depth = llmax(1.f, hud_bbox.getExtentLocal().mV[VX] * 1.1f);  		proj = gl_ortho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, hud_depth); @@ -1300,7 +1299,7 @@ void render_ui_2d()  	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);  	// render outline for HUD -	if (gAgent.getAvatarObject() && gAgentCamera.mHUDCurZoom < 0.98f) +	if (isAgentAvatarValid() && gAgentCamera.mHUDCurZoom < 0.98f)  	{  		glPushMatrix();  		S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2); diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 7bf7bf5e2f..75ec02f8ea 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -102,7 +102,7 @@ public:  		const std::string verb = params[1].asString();  		if (verb == "select")  		{ -			std::vector<LLUUID> items_to_open; +			uuid_vec_t items_to_open;  			items_to_open.push_back(inventory_id);  			//inventory_handler is just a stub, because we don't know from who this offer  			open_inventory_offer(items_to_open, "inventory_handler"); @@ -791,7 +791,7 @@ void WearOnAvatarCallback::fire(const LLUUID& inv_item)  void ModifiedCOFCallback::fire(const LLUUID& inv_item)  { -	LLAppearanceManager::instance().updateAppearanceFromCOF(); +	LLAppearanceMgr::instance().updateAppearanceFromCOF();  	if( CAMERA_MODE_CUSTOMIZE_AVATAR == gAgentCamera.getCameraMode() )  	{  		// If we're in appearance editing mode, the current tab may need to be refreshed @@ -827,7 +827,7 @@ void ActivateGestureCallback::fire(const LLUUID& inv_item)  	if (inv_item.isNull())  		return; -	LLGestureManager::instance().activateGesture(inv_item); +	LLGestureMgr::instance().activateGesture(inv_item);  }  void CreateGestureCallback::fire(const LLUUID& inv_item) @@ -835,7 +835,7 @@ void CreateGestureCallback::fire(const LLUUID& inv_item)  	if (inv_item.isNull())  		return; -	LLGestureManager::instance().activateGesture(inv_item); +	LLGestureMgr::instance().activateGesture(inv_item);  	LLViewerInventoryItem* item = gInventory.getItem(inv_item);  	if (!item) return; diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp index cbec2c890f..dd7390a907 100644 --- a/indra/newview/llviewerkeyboard.cpp +++ b/indra/newview/llviewerkeyboard.cpp @@ -877,7 +877,7 @@ EKeyboardMode LLViewerKeyboard::getMode()  	{  		return MODE_EDIT_AVATAR;  	} -	else if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting()) +	else if (isAgentAvatarValid() && gAgentAvatarp->isSitting())  	{  		return MODE_SITTING;  	} diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 61a75f7227..6f0d9cdd95 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -3199,7 +3199,7 @@ bool LLViewerMediaImpl::isObjectAttachedToAnotherAvatar(LLVOVolume *obj)  		if (NULL != object)  		{  			LLVOAvatar *avatar = object->asAvatar(); -			if (NULL != avatar && avatar != gAgent.getAvatarObject()) +			if ((NULL != avatar) && (avatar != gAgentAvatarp))  			{  				result = true;  				break; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d79cb85730..fe924d68a5 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2692,11 +2692,10 @@ class LLSelfEnableRemoveAllAttachments : public view_listener_t  	bool handleEvent(const LLSD& userdata)  	{  		bool new_value = false; -		if (gAgent.getAvatarObject()) +		if (isAgentAvatarValid())  		{ -			LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -			for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -				 iter != avatarp->mAttachmentPoints.end(); ) +			for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +				 iter != gAgentAvatarp->mAttachmentPoints.end(); )  			{  				LLVOAvatar::attachment_map_t::iterator curiter = iter++;  				LLViewerJointAttachment* attachment = curiter->second; @@ -2824,9 +2823,9 @@ bool handle_go_to()  	LLViewerParcelMgr::getInstance()->deselectLand(); -	if (gAgent.getAvatarObject() && !gSavedSettings.getBOOL("AutoPilotLocksCamera")) +	if (isAgentAvatarValid() && !gSavedSettings.getBOOL("AutoPilotLocksCamera"))  	{ -		gAgentCamera.setFocusGlobal(gAgentCamera.getFocusTargetGlobal(), gAgent.getAvatarObject()->getID()); +		gAgentCamera.setFocusGlobal(gAgentCamera.getFocusTargetGlobal(), gAgentAvatarp->getID());  	}  	else   	{ @@ -3365,7 +3364,7 @@ class LLSelfStandUp : public view_listener_t  bool enable_standup_self()  { -	bool new_value = gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting(); +	bool new_value = isAgentAvatarValid() && gAgentAvatarp->isSitting();  	return new_value;  } @@ -3694,9 +3693,9 @@ class LLLandSit : public view_listener_t  		LLVector3d posGlobal = LLToolPie::getInstance()->getPick().mPosGlobal;  		LLQuaternion target_rot; -		if (gAgent.getAvatarObject()) +		if (isAgentAvatarValid())  		{ -			target_rot = gAgent.getAvatarObject()->getRotation(); +			target_rot = gAgentAvatarp->getRotation();  		}  		else  		{ @@ -4587,13 +4586,9 @@ BOOL sitting_on_selection()  	}  	// Need to determine if avatar is sitting on this object -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	if (!avatar) -	{ -		return FALSE; -	} +	if (!isAgentAvatarValid()) return FALSE; -	return (avatar->isSitting() && avatar->getRoot() == root_object); +	return (gAgentAvatarp->isSitting() && gAgentAvatarp->getRoot() == root_object);  }  class LLToolsSaveToInventory : public view_listener_t @@ -5846,7 +5841,7 @@ private:  			S32 index = userdata.asInteger();  			LLViewerJointAttachment* attachment_point = NULL;  			if (index > 0) -				attachment_point = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, index, (LLViewerJointAttachment*)NULL); +				attachment_point = get_if_there(gAgentAvatarp->mAttachmentPoints, index, (LLViewerJointAttachment*)NULL);  			confirm_replace_attachment(0, attachment_point);  		}  		return true; @@ -5867,8 +5862,8 @@ void near_attach_object(BOOL success, void *user_data)  		U8 attachment_id = 0;  		if (attachment)  		{ -			for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgent.getAvatarObject()->mAttachmentPoints.begin(); -				 iter != gAgent.getAvatarObject()->mAttachmentPoints.end(); ++iter) +			for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); +				 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)  			{  				if (iter->second == attachment)  				{ @@ -5993,7 +5988,7 @@ class LLAttachmentDetachFromPoint : public view_listener_t  {  	bool handleEvent(const LLSD& user_data)  	{ -		const LLViewerJointAttachment *attachment = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, user_data.asInteger(), (LLViewerJointAttachment*)NULL); +		const LLViewerJointAttachment *attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, user_data.asInteger(), (LLViewerJointAttachment*)NULL);  		if (attachment->getNumObjects() > 0)  		{  			gMessageSystem->newMessage("ObjectDetach"); @@ -6021,7 +6016,7 @@ static bool onEnableAttachmentLabel(LLUICtrl* ctrl, const LLSD& data)  	LLMenuItemGL* menu = dynamic_cast<LLMenuItemGL*>(ctrl);  	if (menu)  	{ -		const LLViewerJointAttachment *attachment = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, data["index"].asInteger(), (LLViewerJointAttachment*)NULL); +		const LLViewerJointAttachment *attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, data["index"].asInteger(), (LLViewerJointAttachment*)NULL);  		if (attachment)  		{  			label = data["label"].asString(); @@ -6139,7 +6134,7 @@ class LLAttachmentEnableDrop : public view_listener_t  		if (object && LLSelectMgr::getInstance()->getSelection()->contains(object,SELECT_ALL_TES ))  		{      		S32 attachmentID  = ATTACHMENT_ID_FROM_STATE(object->getState()); -			attachment = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, attachmentID, (LLViewerJointAttachment*)NULL); +			attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, attachmentID, (LLViewerJointAttachment*)NULL);  			if (attachment)  			{ @@ -6271,8 +6266,8 @@ class LLAttachmentPointFilled : public view_listener_t  	bool handleEvent(const LLSD& user_data)  	{  		bool enable = false; -		LLVOAvatar::attachment_map_t::iterator found_it = gAgent.getAvatarObject()->mAttachmentPoints.find(user_data.asInteger()); -		if (found_it != gAgent.getAvatarObject()->mAttachmentPoints.end()) +		LLVOAvatar::attachment_map_t::iterator found_it = gAgentAvatarp->mAttachmentPoints.find(user_data.asInteger()); +		if (found_it != gAgentAvatarp->mAttachmentPoints.end())  		{  			enable = found_it->second->getNumObjects() > 0;  		} @@ -6468,13 +6463,13 @@ void handle_selected_texture_info(void*)  void handle_test_male(void*)  { -	LLAppearanceManager::instance().wearOutfitByName("Male Shape & Outfit"); +	LLAppearanceMgr::instance().wearOutfitByName("Male Shape & Outfit");  	//gGestureList.requestResetFromServer( TRUE );  }  void handle_test_female(void*)  { -	LLAppearanceManager::instance().wearOutfitByName("Female Shape & Outfit"); +	LLAppearanceMgr::instance().wearOutfitByName("Female Shape & Outfit");  	//gGestureList.requestResetFromServer( FALSE );  } @@ -6489,15 +6484,10 @@ void handle_toggle_pg(void*)  void handle_dump_attachments(void*)  { -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	if( !avatar ) -	{ -		llinfos << "NO AVATAR" << llendl; -		return; -	} +	if(!isAgentAvatarValid()) return; -	for (LLVOAvatar::attachment_map_t::iterator iter = avatar->mAttachmentPoints.begin();  -		 iter != avatar->mAttachmentPoints.end(); ) +	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +		 iter != gAgentAvatarp->mAttachmentPoints.end(); )  	{  		LLVOAvatar::attachment_map_t::iterator curiter = iter++;  		LLViewerJointAttachment* attachment = curiter->second; @@ -6917,7 +6907,7 @@ void reload_vertex_shader(void *)  void handle_dump_avatar_local_textures(void*)  { -	gAgent.getAvatarObject()->dumpLocalTextures(); +	gAgentAvatarp->dumpLocalTextures();  }  void handle_dump_timers() @@ -6937,86 +6927,83 @@ void handle_debug_avatar_textures(void*)  void handle_grab_texture(void* data)  {  	ETextureIndex tex_index = (ETextureIndex)((intptr_t)data); -	const LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) -	{ -		// MULTI-WEARABLE: change to support an index -		const LLUUID& asset_id = avatarp->grabLocalTexture(tex_index, 0); -		LL_INFOS("texture") << "Adding baked texture " << asset_id << " to inventory." << llendl; -		LLAssetType::EType asset_type = LLAssetType::AT_TEXTURE; -		LLInventoryType::EType inv_type = LLInventoryType::IT_TEXTURE; -		const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(asset_type)); -		if(folder_id.notNull()) -		{ -			std::string name = "Unknown"; -			const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(tex_index); -			if (texture_dict->mIsBakedTexture) -			{ -				EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; -				name = "Baked " + LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mNameCapitalized; -			} -			name += " Texture"; - -			LLUUID item_id; -			item_id.generate(); -			LLPermissions perm; -			perm.init(gAgentID, -					  gAgentID, -					  LLUUID::null, -					  LLUUID::null); -			U32 next_owner_perm = PERM_MOVE | PERM_TRANSFER; -			perm.initMasks(PERM_ALL, -						   PERM_ALL, -						   PERM_NONE, -						   PERM_NONE, -						   next_owner_perm); -			time_t creation_date_now = time_corrected(); -			LLPointer<LLViewerInventoryItem> item -				= new LLViewerInventoryItem(item_id, -											folder_id, -											perm, -											asset_id, -											asset_type, -											inv_type, -											name, -											LLStringUtil::null, -											LLSaleInfo::DEFAULT, -											LLInventoryItem::II_FLAGS_NONE, -											creation_date_now); - -			item->updateServer(TRUE); -			gInventory.updateItem(item); -			gInventory.notifyObservers(); - -			// Show the preview panel for textures to let -			// user know that the image is now in inventory. -			LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(); -			if(active_panel) -			{ -				LLFocusableElement* focus_ctrl = gFocusMgr.getKeyboardFocus(); - -				active_panel->setSelection(item_id, TAKE_FOCUS_NO); -				active_panel->openSelected(); -				//LLFloaterInventory::dumpSelectionInformation((void*)view); -				// restore keyboard focus -				gFocusMgr.setKeyboardFocus(focus_ctrl); -			} -		} -		else -		{ -			llwarns << "Can't find a folder to put it in" << llendl; +	if (!isAgentAvatarValid()) return; + +	// MULTI-WEARABLE: change to support an index +	const LLUUID& asset_id = gAgentAvatarp->grabLocalTexture(tex_index, 0); +	LL_INFOS("texture") << "Adding baked texture " << asset_id << " to inventory." << llendl; +	LLAssetType::EType asset_type = LLAssetType::AT_TEXTURE; +	LLInventoryType::EType inv_type = LLInventoryType::IT_TEXTURE; +	const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(asset_type)); +	if(folder_id.notNull()) +	{ +		std::string name = "Unknown"; +		const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(tex_index); +		if (texture_dict->mIsBakedTexture) +		{ +			EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex; +			name = "Baked " + LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mNameCapitalized; +		} +		name += " Texture"; + +		LLUUID item_id; +		item_id.generate(); +		LLPermissions perm; +		perm.init(gAgentID, +				  gAgentID, +				  LLUUID::null, +				  LLUUID::null); +		U32 next_owner_perm = PERM_MOVE | PERM_TRANSFER; +		perm.initMasks(PERM_ALL, +					   PERM_ALL, +					   PERM_NONE, +					   PERM_NONE, +					   next_owner_perm); +		time_t creation_date_now = time_corrected(); +		LLPointer<LLViewerInventoryItem> item +			= new LLViewerInventoryItem(item_id, +										folder_id, +										perm, +										asset_id, +										asset_type, +										inv_type, +										name, +										LLStringUtil::null, +										LLSaleInfo::DEFAULT, +										LLInventoryItem::II_FLAGS_NONE, +										creation_date_now); + +		item->updateServer(TRUE); +		gInventory.updateItem(item); +		gInventory.notifyObservers(); + +		// Show the preview panel for textures to let +		// user know that the image is now in inventory. +		LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(); +		if(active_panel) +		{ +			LLFocusableElement* focus_ctrl = gFocusMgr.getKeyboardFocus(); + +			active_panel->setSelection(item_id, TAKE_FOCUS_NO); +			active_panel->openSelected(); +			//LLFloaterInventory::dumpSelectionInformation((void*)view); +			// restore keyboard focus +			gFocusMgr.setKeyboardFocus(focus_ctrl);  		}  	} +	else +	{ +		llwarns << "Can't find a folder to put it in" << llendl; +	}  }  BOOL enable_grab_texture(void* data)  {  	ETextureIndex index = (ETextureIndex)((intptr_t)data); -	const LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{  		// MULTI-WEARABLE: -		return avatarp->canGrabLocalTexture(index,0); +		return gAgentAvatarp->canGrabLocalTexture(index,0);  	}  	return FALSE;  } @@ -7227,12 +7214,11 @@ void handle_buy_currency_test(void*)  void handle_rebake_textures(void*)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) return; +	if (!isAgentAvatarValid()) return;  	// Slam pending upload count to "unstick" things  	bool slam_for_debug = true; -	avatarp->forceBakeAllTextures(slam_for_debug); +	gAgentAvatarp->forceBakeAllTextures(slam_for_debug);  }  void toggle_visibility(void* user_data) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index f32f102a06..a3d78d13fa 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -870,9 +870,9 @@ bool check_offer_throttle(const std::string& from_name, bool check_only)  	}  } -void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& from_name) +void open_inventory_offer(const uuid_vec_t& items, const std::string& from_name)  { -	for (std::vector<LLUUID>::const_iterator item_iter = items.begin(); +	for (uuid_vec_t::const_iterator item_iter = items.begin();  		 item_iter != items.end();  		 ++item_iter)  	{ @@ -1263,8 +1263,8 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&  			// Disabled logging to old chat floater to fix crash in group notices - EXT-4149  			// LLFloaterChat::addChatHistory(chat); -			LLInventoryFetchComboObserver::folder_ref_t folders; -			LLInventoryFetchComboObserver::item_ref_t items; +			uuid_vec_t folders; +			uuid_vec_t items;  			items.push_back(mObjectID);  			LLDiscardAgentOffer* discard_agent_offer;  			discard_agent_offer = new LLDiscardAgentOffer(mFolderID, mObjectID); @@ -2841,8 +2841,8 @@ public:  		LLInventoryModel::cat_array_t	land_cats;  		LLInventoryModel::item_array_t	land_items; -		folder_ref_t::iterator it = mCompleteFolders.begin(); -		folder_ref_t::iterator end = mCompleteFolders.end(); +		uuid_vec_t::iterator it = mCompleteFolders.begin(); +		uuid_vec_t::iterator end = mCompleteFolders.end();  		for(; it != end; ++it)  		{  			gInventory.collectDescendentsIf( @@ -2903,7 +2903,7 @@ BOOL LLPostTeleportNotifiers::tick()  	if ( gAgent.getTeleportState() == LLAgent::TELEPORT_NONE )  	{  		// get callingcards and landmarks available to the user arriving. -		LLInventoryFetchDescendentsObserver::folder_ref_t folders; +		uuid_vec_t folders;  		const LLUUID callingcard_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD);  		if(callingcard_id.notNull())   			folders.push_back(callingcard_id); @@ -2999,9 +2999,9 @@ void process_teleport_finish(LLMessageSystem* msg, void**)  	gAgent.setRegion(regionp);  	gObjectList.shiftObjects(shift_vector); -	if (gAgent.getAvatarObject()) +	if (isAgentAvatarValid())  	{ -		gAgent.getAvatarObject()->clearChatText(); +		gAgentAvatarp->clearChatText();  		gAgentCamera.slamLookAt(look_at);  	}  	gAgent.setPositionAgent(pos); @@ -3081,8 +3081,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)  	std::string version_channel;  	msg->getString("SimData", "ChannelVersion", version_channel); -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (!avatarp) +	if (!isAgentAvatarValid())  	{  		// Could happen if you were immediately god-teleported away on login,  		// maybe other cases.  Continue, but warn. @@ -3136,7 +3135,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)  		// know what you look like.  		gAgent.sendAgentSetAppearance(); -		if (avatarp) +		if (isAgentAvatarValid())  		{  			// Chat the "back" SLURL. (DEV-4907) @@ -3149,9 +3148,9 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)  			LLNotificationsUtil::add("SystemMessageTip", args);  			// Set the new position -			avatarp->setPositionAgent(agent_pos); -			avatarp->clearChat(); -			avatarp->slamPosition(); +			gAgentAvatarp->setPositionAgent(agent_pos); +			gAgentAvatarp->clearChat(); +			gAgentAvatarp->slamPosition();  		}  	}  	else @@ -3211,9 +3210,9 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)  		gAgent.clearBusy();  	} -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		avatarp->mFootPlane.clearVec(); +		gAgentAvatarp->mFootPlane.clearVec();  	}  	// send walk-vs-run status @@ -4028,7 +4027,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data)  	//clear animation flags  	avatarp = (LLVOAvatar *)gObjectList.findObject(uuid); -	if (!avatarp) +	if (!isAgentAvatarValid())  	{  		// no agent by this ID...error?  		LL_WARNS("Messaging") << "Received animation state for unknown avatar" << uuid << LL_ENDL; @@ -4114,7 +4113,7 @@ void process_avatar_appearance(LLMessageSystem *mesgsys, void **user_data)  	mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid);  	LLVOAvatar* avatarp = (LLVOAvatar *)gObjectList.findObject(uuid); -	if( avatarp ) +	if (avatarp)  	{  		avatarp->processAvatarAppearance( mesgsys );  	} @@ -4162,9 +4161,7 @@ void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data)  	BOOL force_mouselook;  	mesgsys->getBOOLFast(_PREHASH_SitTransform, _PREHASH_ForceMouselook, force_mouselook); -	LLVOAvatar* avatar = gAgent.getAvatarObject(); - -	if (avatar && dist_vec_squared(camera_eye, camera_at) > 0.0001f) +	if (isAgentAvatarValid() && dist_vec_squared(camera_eye, camera_at) > 0.0001f)  	{  		gAgentCamera.setSitCamera(sitObjectID, camera_eye, camera_at);  	} @@ -4175,7 +4172,7 @@ void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data)  	if (object)  	{  		LLVector3 sit_spot = object->getPositionAgent() + (sitPosition * object->getRotation()); -		if (!use_autopilot || (avatar && avatar->isSitting() && avatar->getRoot() == object->getRoot())) +		if (!use_autopilot || isAgentAvatarValid() && gAgentAvatarp->isSitting() && gAgentAvatarp->getRoot() == object->getRoot())  		{  			//we're already sitting on this object, so don't autopilot  		} @@ -5587,7 +5584,7 @@ void handle_lure(const LLUUID& invitee)  }  // Prompt for a message to the invited user. -void handle_lure(const std::vector<LLUUID>& ids) +void handle_lure(const uuid_vec_t& ids)  {  	if (ids.empty()) return; diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h index 88f9697037..0ba4ac0c8d 100644 --- a/indra/newview/llviewermessage.h +++ b/indra/newview/llviewermessage.h @@ -157,7 +157,7 @@ void send_group_notice(const LLUUID& group_id,  					   const LLInventoryItem* item);  void handle_lure(const LLUUID& invitee); -void handle_lure(const std::vector<LLUUID>& ids); +void handle_lure(const uuid_vec_t& ids);  // always from gAgent and   // routes through the gAgent's current simulator @@ -201,7 +201,7 @@ void invalid_message_callback(LLMessageSystem*, void*, EMessageException);  void process_initiate_download(LLMessageSystem* msg, void**);  void start_new_inventory_observer(); -void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& from_name); +void open_inventory_offer(const uuid_vec_t& items, const std::string& from_name);  // Returns true if item is not in certain "quiet" folder which don't need UI  // notification (e.g. trash, cof, lost-and-found) and agent is not AFK, false otherwise. diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index abcb7e5452..8860b734bb 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -134,7 +134,15 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco  	{  		if (id == gAgentID)  		{ -			res = new LLVOAvatarSelf(id, pcode, regionp); +			if (!gAgentAvatarp) +			{ +				gAgentAvatarp = new LLVOAvatarSelf(id, pcode, regionp); +			} +			else  +			{ +				gAgentAvatarp->updateRegion(regionp); +			} +			res = gAgentAvatarp;  		}  		else  		{ @@ -223,7 +231,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe  	mClickAction(0),  	mAttachmentItemID(LLUUID::null)  { -	if(!is_global) +	if (!is_global)  	{  		llassert(mRegionp);  	} @@ -235,7 +243,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe  	mPositionRegion = LLVector3(0.f, 0.f, 0.f); -	if(!is_global) +	if (!is_global && mRegionp)  	{  		mPositionAgent = mRegionp->getOriginAgent();  	} @@ -377,11 +385,10 @@ void LLViewerObject::markDead()  		if (flagAnimSource())  		{ -			LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -			if (avatarp && !avatarp->isDead()) +			if (isAgentAvatarValid())  			{  				// stop motions associated with this object -				avatarp->stopMotionFromSource(mID); +				gAgentAvatarp->stopMotionFromSource(mID);  			}  		} @@ -4920,7 +4927,6 @@ void LLViewerObject::setIncludeInSearch(bool include_in_search)  void LLViewerObject::setRegion(LLViewerRegion *regionp)  { -	llassert(regionp);  	mLatestRecvPacketID = 0;  	mRegionp = regionp; diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 64a7b2166b..752aeaaab0 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -474,7 +474,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,  			if (objectp->getRegion() != regionp)  			{    // Object changed region, so update it -				objectp->setRegion(regionp);  				objectp->updateRegion(regionp); // for LLVOAvatar  			}  		} @@ -895,6 +894,13 @@ void LLViewerObjectList::removeDrawable(LLDrawable* drawablep)  BOOL LLViewerObjectList::killObject(LLViewerObject *objectp)  { +	// Don't ever kill gAgentAvatarp, just mark it as null region instead. +	if (objectp == gAgentAvatarp) +	{ +		objectp->setRegion(NULL); +		return FALSE; +	} +  	// When we're killing objects, all we do is mark them as dead.  	// We clean up the dead objects later. @@ -943,7 +949,8 @@ void LLViewerObjectList::killAllObjects()  	{  		objectp = *iter;  		killObject(objectp); -		llassert(objectp->isDead()); +		// Object must be dead, or it's the LLVOAvatarSelf which never dies. +		llassert((objectp == gAgentAvatarp) || objectp->isDead());  	}  	cleanDeadObjects(FALSE); @@ -1210,11 +1217,10 @@ void LLViewerObjectList::generatePickList(LLCamera &camera)  		}  		// add all hud objects to pick list -		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -		if (avatarp) +		if (isAgentAvatarValid())  		{ -			for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -				 iter != avatarp->mAttachmentPoints.end(); ) +			for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +				 iter != gAgentAvatarp->mAttachmentPoints.end(); )  			{  				LLVOAvatar::attachment_map_t::iterator curiter = iter++;  				LLViewerJointAttachment* attachment = curiter->second; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 870f76a86a..d7d5cbbd10 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -365,9 +365,9 @@ public:  			agent_center_text = llformat("AgentCenter  %f %f %f",  										 (F32)(tvector.mdV[VX]), (F32)(tvector.mdV[VY]), (F32)(tvector.mdV[VZ])); -			if (gAgent.getAvatarObject()) +			if (isAgentAvatarValid())  			{ -				tvector = gAgent.getPosGlobalFromAgent(gAgent.getAvatarObject()->mRoot.getWorldPosition()); +				tvector = gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot.getWorldPosition());  				agent_root_center_text = llformat("AgentRootCenter %f %f %f",  												  (F32)(tvector.mdV[VX]), (F32)(tvector.mdV[VY]), (F32)(tvector.mdV[VZ]));  			} @@ -2272,7 +2272,7 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)  	}  	// Try for a new-format gesture -	if (LLGestureManager::instance().triggerGesture(key, mask)) +	if (LLGestureMgr::instance().triggerGesture(key, mask))  	{  		return TRUE;  	} @@ -3150,7 +3150,7 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,  		// setup HUD render  		if (selection->getSelectType() == SELECT_TYPE_HUD && LLSelectMgr::getInstance()->getSelection()->getObjectCount())  		{ -			LLBBox hud_bbox = gAgent.getAvatarObject()->getHUDBBox(); +			LLBBox hud_bbox = gAgentAvatarp->getHUDBBox();  			// set up transform to encompass bounding box of HUD  			glMatrixMode(GL_PROJECTION); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 54379dece3..c400e8510e 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -755,11 +755,6 @@ LLVOAvatar::~LLVOAvatar()  {  	lldebugs << "LLVOAvatar Destructor (0x" << this << ") id:" << mID << llendl; -	if (isSelf()) -	{ -		gAgent.setAvatarObject(NULL); -	} -  	mRoot.removeAllChildren();  	deleteAndClearArray(mSkeleton); @@ -965,15 +960,14 @@ void LLVOAvatar::dumpBakedStatus()  //static  void LLVOAvatar::restoreGL()  { -	LLVOAvatar* self = gAgent.getAvatarObject(); -	if (!self) -		return; -	self->setCompositeUpdatesEnabled(TRUE); -	for (U32 i = 0; i < self->mBakedTextureDatas.size(); i++) +	if (!isAgentAvatarValid()) return; + +	gAgentAvatarp->setCompositeUpdatesEnabled(TRUE); +	for (U32 i = 0; i < gAgentAvatarp->mBakedTextureDatas.size(); i++)  	{ -		self->invalidateComposite(self->mBakedTextureDatas[i].mTexLayerSet, FALSE); +		gAgentAvatarp->invalidateComposite(gAgentAvatarp->mBakedTextureDatas[i].mTexLayerSet, FALSE);  	} -	self->updateMeshTextures(); +	gAgentAvatarp->updateMeshTextures();  }  //static @@ -2085,7 +2079,7 @@ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys,  	if(retval & LLViewerObject::INVALID_UPDATE)  	{ -		if(this == gAgent.getAvatarObject()) +		if (isSelf())  		{  			//tell sim to cancel this update  			gAgent.teleportViaLocation(gAgent.getPositionGlobal()); @@ -2254,7 +2248,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)  					else	{ llinfos << "oops - CurrentGesticulationLevel can be only 0, 1, or 2"  << llendl; }  					// this is the call that Karl S. created for triggering gestures from within the code. -					LLGestureManager::instance().triggerAndReviseString( gestureString ); +					LLGestureMgr::instance().triggerAndReviseString( gestureString );  				}  			} @@ -2547,7 +2541,7 @@ void LLVOAvatar::idleUpdateLoadingEffect()  				llinfos << "self isFullyLoaded, first_fully_visible" << llendl;  				first_fully_visible = false; -				LLAppearanceManager::instance().onFirstFullyVisible(); +				LLAppearanceMgr::instance().onFirstFullyVisible();  			}  		}  		if (isFullyLoaded()) @@ -6859,8 +6853,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )  // static  void LLVOAvatar::dumpArchetypeXML( void* )  { -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	LLAPRFile outfile ; +	LLAPRFile outfile;  	outfile.open(gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,"new archetype.xml"), LL_APR_WB );  	apr_file_t* file = outfile.getFileHandle() ;  	if (!file) @@ -6878,7 +6871,7 @@ void LLVOAvatar::dumpArchetypeXML( void* )  		const std::string& wearable_name = LLWearableDictionary::getTypeName((EWearableType)type);  		apr_file_printf( file, "\n\t\t<!-- wearable: %s -->\n", wearable_name.c_str() ); -		for (LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam()) +		for (LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam())  		{  			LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param;  			if( (viewer_param->getWearableType() == type) &&  @@ -6894,7 +6887,7 @@ void LLVOAvatar::dumpArchetypeXML( void* )  			if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te) == type)  			{  				// MULTIPLE_WEARABLES: extend to multiple wearables? -				LLViewerTexture* te_image = avatar->getImage((ETextureIndex)te, 0); +				LLViewerTexture* te_image = ((LLVOAvatar *)(gAgentAvatarp))->getImage((ETextureIndex)te, 0);  				if( te_image )  				{  					std::string uuid_str; diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 15be6b23b3..9c2e5461b2 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -67,6 +67,14 @@  #include <boost/lexical_cast.hpp> +LLVOAvatarSelf *gAgentAvatarp = NULL; +BOOL isAgentAvatarValid() +{ +	return (gAgentAvatarp && +			(gAgentAvatarp->getRegion() != NULL) && +			(!gAgentAvatarp->isDead())); +} +  using namespace LLVOAvatarDefines;  /********************************************************************************* @@ -133,7 +141,6 @@ LLVOAvatarSelf::LLVOAvatarSelf(const LLUUID& id,  	mLastRegionHandle(0),  	mRegionCrossingCount(0)  { -	gAgent.setAvatarObject(this);  	gAgentWearables.setAvatarObject(this);  	lldebugs << "Marking avatar as self " << id << llendl; @@ -511,16 +518,17 @@ BOOL LLVOAvatarSelf::buildMenus()  	return TRUE;  } +void LLVOAvatarSelf::cleanup() +{ +	markDead(); + 	delete mScreenp; + 	mScreenp = NULL; +	mRegionp = NULL; +} +  LLVOAvatarSelf::~LLVOAvatarSelf()  { -	// gAgents pointer might have been set to a different Avatar Self, don't get rid of it if so. -	if (gAgent.getAvatarObject() == this) -	{ -		gAgent.setAvatarObject(NULL); -		gAgentWearables.setAvatarObject(NULL); -	} -	delete mScreenp; -	mScreenp = NULL; +	cleanup();  }  /** @@ -611,6 +619,17 @@ BOOL LLVOAvatarSelf::updateCharacter(LLAgent &agent)  }  // virtual +BOOL LLVOAvatarSelf::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) +{ +	if (!isAgentAvatarValid()) +	{ +		return TRUE; +	} +	LLVOAvatar::idleUpdate(agent, world, time); +	return TRUE; +} + +// virtual  LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)  {  	if (mScreenp) @@ -621,7 +640,8 @@ LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)  	return LLVOAvatar::getJoint(name);  } -/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL upload_bake ) +// virtual +BOOL LLVOAvatarSelf::setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL upload_bake )  {  	if (!which_param)  	{ @@ -631,7 +651,8 @@ LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)  	return setParamWeight(param,weight,upload_bake);  } -/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake ) +// virtual +BOOL LLVOAvatarSelf::setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake )  {  	if (!param_name)  	{ @@ -641,7 +662,8 @@ LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)  	return setParamWeight(param,weight,upload_bake);  } -/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake ) +// virtual +BOOL LLVOAvatarSelf::setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake )  {  	LLViewerVisualParam *param = (LLViewerVisualParam*) LLCharacter::getVisualParam(index);  	return setParamWeight(param,weight,upload_bake); @@ -777,7 +799,8 @@ void LLVOAvatarSelf::removeMissingBakedTextures()  //virtual  void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp)  { -	if (regionp->getHandle() != mLastRegionHandle) +	setRegion(regionp); +	if (!regionp || (regionp->getHandle() != mLastRegionHandle))  	{  		if (mLastRegionHandle != 0)  		{ @@ -791,7 +814,10 @@ void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp)  			max = llmax(delta, max);  			LLViewerStats::getInstance()->setStat(LLViewerStats::ST_CROSSING_MAX, max);  		} -		mLastRegionHandle = regionp->getHandle(); +		if (regionp) +		{ +			mLastRegionHandle = regionp->getHandle(); +		}  	}  	mRegionCrossingTimer.reset();  } @@ -1036,7 +1062,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view  	if (attachment->isObjectAttached(viewer_object))  	{  		const LLUUID& attachment_id = viewer_object->getItemID(); -		LLAppearanceManager::instance().registerAttachment(attachment_id); +		LLAppearanceMgr::instance().registerAttachment(attachment_id);  	}  	return attachment; @@ -1069,13 +1095,13 @@ BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)  		// Make sure the inventory is in sync with the avatar.  		// Update COF contents, don't trigger appearance update. -		if (gAgent.getAvatarObject() == NULL) +		if (!isAgentAvatarValid())  		{  			llinfos << "removeItemLinks skipped, avatar is under destruction" << llendl;  		}  		else  		{ -			LLAppearanceManager::instance().unregisterAttachment(attachment_id); +			LLAppearanceMgr::instance().unregisterAttachment(attachment_id);  		}  		return TRUE; @@ -1668,7 +1694,7 @@ void LLVOAvatarSelf::onLocalTextureLoaded(BOOL success, LLViewerFetchedTexture *  void LLVOAvatarSelf::dumpTotalLocalTextureByteCount()  {  	S32 gl_bytes = 0; -	gAgent.getAvatarObject()->getLocalTextureByteCount(&gl_bytes); +	gAgentAvatarp->getLocalTextureByteCount(&gl_bytes);  	llinfos << "Total Avatar LocTex GL:" << (gl_bytes/1024) << "KB" << llendl;  } @@ -1925,9 +1951,7 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)  {  	LLUUID texture_id;  	msg->getUUID("TextureData", "TextureID", texture_id); - -	LLVOAvatarSelf* self = gAgent.getAvatarObject(); -	if (!self) return; +	if (!isAgentAvatarValid()) return;  	// If this is a texture corresponding to one of our baked entries,   	// just rebake that layer set. @@ -1944,13 +1968,13 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)  		const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;  		if (texture_dict->mIsBakedTexture)  		{ -			if (texture_id == self->getTEImage(index)->getID()) +			if (texture_id == gAgentAvatarp->getTEImage(index)->getID())  			{ -				LLTexLayerSet* layer_set = self->getLayerSet(index); +				LLTexLayerSet* layer_set = gAgentAvatarp->getLayerSet(index);  				if (layer_set)  				{  					llinfos << "TAT: rebake - matched entry " << (S32)index << llendl; -					self->invalidateComposite(layer_set, TRUE); +					gAgentAvatarp->invalidateComposite(layer_set, TRUE);  					found = TRUE;  					LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_REBAKES);  				} @@ -1961,12 +1985,12 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)  	// If texture not found, rebake all entries.  	if (!found)  	{ -		self->forceBakeAllTextures(); +		gAgentAvatarp->forceBakeAllTextures();  	}  	else  	{  		// Not sure if this is necessary, but forceBakeAllTextures() does it. -		self->updateMeshTextures(); +		gAgentAvatarp->updateMeshTextures();  	}  } @@ -2046,10 +2070,9 @@ void LLVOAvatarSelf::onCustomizeStart()  // static  void LLVOAvatarSelf::onCustomizeEnd()  { -	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject(); -	if (avatarp) +	if (isAgentAvatarValid())  	{ -		avatarp->invalidateAll(); +		gAgentAvatarp->invalidateAll();  	}  } diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index 9514abc5bc..4960d4d103 100644 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -55,7 +55,8 @@ public:  	LLVOAvatarSelf(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);  	virtual 				~LLVOAvatarSelf();  	virtual void			markDead(); -	virtual void 		initInstance(); // Called after construction to initialize the class. +	virtual void 			initInstance(); // Called after construction to initialize the class. +	void					cleanup();  protected:  	/*virtual*/ BOOL		loadAvatar();  	BOOL					loadAvatarSelf(); @@ -77,6 +78,7 @@ protected:  	//--------------------------------------------------------------------  public:  	/*virtual*/ void 		updateRegion(LLViewerRegion *regionp); +	/*virtual*/ BOOL   	 	idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time);  	//--------------------------------------------------------------------  	// LLCharacter interface and related @@ -333,4 +335,8 @@ public:  }; +extern LLVOAvatarSelf *gAgentAvatarp; + +BOOL isAgentAvatarValid(); +  #endif // LL_VO_AVATARSELF_H diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index cc346c2345..d8319f3cc3 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -87,6 +87,12 @@  static bool sConnectingToAgni = false;  F32 LLVoiceClient::OVERDRIVEN_POWER_LEVEL = 0.7f; +const F32 LLVoiceClient::VOLUME_MIN = 0.f; +const F32 LLVoiceClient::VOLUME_DEFAULT = 0.5f; +const F32 LLVoiceClient::VOLUME_MAX = 1.0f; + +const F32 VOLUME_SCALE_VIVOX = 0.01f; +  const F32 SPEAKING_TIMEOUT = 1.f;  const int VOICE_MAJOR_VERSION = 1; @@ -1112,24 +1118,28 @@ class LLSpeakerVolumeStorage : public LLSingleton<LLSpeakerVolumeStorage>  public:  	/** -	 * Sets internal voluem level for specified user. +	 * Stores volume level for specified user.  	 * -	 * @param[in] speaker_id - LLUUID of user to store volume level for -	 * @param[in] volume - external (vivox) volume level to be stored for user. +	 * @param[in] speaker_id - LLUUID of user to store volume level for. +	 * @param[in] volume - volume level to be stored for user.  	 */  	void storeSpeakerVolume(const LLUUID& speaker_id, F32 volume);  	/** -	 * Gets stored external (vivox) volume level for specified speaker and -	 * transforms it into internal (viewer) level. +	 * Gets stored volume level for specified speaker  	 * -	 * If specified user is not found -1 will be returned. -	 * Internal level is calculated as: internal = 400 * external^2 -	 * Maps 0.0 to 1.0 to internal values 0-400 +	 * @param[in] speaker_id - LLUUID of user to retrieve volume level for. +	 * @param[out] volume - set to stored volume if found, otherwise unmodified. +	 * @return - true if a stored volume is found. +	 */ +	bool getSpeakerVolume(const LLUUID& speaker_id, F32& volume); + +	/** +	 * Removes stored volume level for specified user.  	 * -	 * @param[in] speaker_id - LLUUID of user to get his volume level +	 * @param[in] speaker_id - LLUUID of user to remove.  	 */ -	S32 getSpeakerVolume(const LLUUID& speaker_id); +	void removeSpeakerVolume(const LLUUID& speaker_id);  private:  	friend class LLSingleton<LLSpeakerVolumeStorage>; @@ -1141,6 +1151,9 @@ private:  	void load();  	void save(); +	static F32 LLSpeakerVolumeStorage::transformFromLegacyVolume(F32 volume_in); +	static F32 LLSpeakerVolumeStorage::transformToLegacyVolume(F32 volume_in); +  	typedef std::map<LLUUID, F32> speaker_data_map_t;  	speaker_data_map_t mSpeakersData;  }; @@ -1159,23 +1172,85 @@ LLSpeakerVolumeStorage::~LLSpeakerVolumeStorage()  void LLSpeakerVolumeStorage::storeSpeakerVolume(const LLUUID& speaker_id, F32 volume)  { -	mSpeakersData[speaker_id] = volume; +	if ((volume >= LLVoiceClient::VOLUME_MIN) && (volume <= LLVoiceClient::VOLUME_MAX)) +	{ +		mSpeakersData[speaker_id] = volume; + +		// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging. +		// LL_DEBUGS("Voice") << "Stored volume = " << volume <<  " for " << id << LL_ENDL; +	} +	else +	{ +		LL_WARNS("Voice") << "Attempted to store out of range volume " << volume << " for " << speaker_id << LL_ENDL; +		llassert(0); +	}  } -S32 LLSpeakerVolumeStorage::getSpeakerVolume(const LLUUID& speaker_id) +bool LLSpeakerVolumeStorage::getSpeakerVolume(const LLUUID& speaker_id, F32& volume)  { -	// Return value of -1 indicates no level is stored for this speaker -	S32 ret_val = -1;  	speaker_data_map_t::const_iterator it = mSpeakersData.find(speaker_id);  	if (it != mSpeakersData.end())  	{ -		F32 f_val = it->second; -		// volume can amplify by as much as 4x! -		S32 ivol = (S32)(400.f * f_val * f_val); -		ret_val = llclamp(ivol, 0, 400); +		volume = it->second; + +		// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging. +		// LL_DEBUGS("Voice") << "Retrieved stored volume = " << volume <<  " for " << id << LL_ENDL; + +		return true;  	} -	return ret_val; + +	return false; +} + +void LLSpeakerVolumeStorage::removeSpeakerVolume(const LLUUID& speaker_id) +{ +	mSpeakersData.erase(speaker_id); + +	// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging. +	// LL_DEBUGS("Voice") << "Removing stored volume for  " << id << LL_ENDL; +} + +/* static */ F32 LLSpeakerVolumeStorage::transformFromLegacyVolume(F32 volume_in) +{ +	// Convert to linear-logarithmic [0.0..1.0] with 0.5 = 0dB +	// from legacy characteristic composed of two square-curves +	// that intersect at volume_in = 0.5, volume_out = 0.56 + +	F32 volume_out = 0.f; +	volume_in = llclamp(volume_in, 0.f, 1.0f); + +	if (volume_in <= 0.5f) +	{ +		volume_out = volume_in * volume_in * 4.f * 0.56f; +	} +	else +	{ +		volume_out = (1.f - 0.56f) * (4.f * volume_in * volume_in - 1.f) / 3.f + 0.56f; +	} + +	return volume_out; +} + +/* static */ F32 LLSpeakerVolumeStorage::transformToLegacyVolume(F32 volume_in) +{ +	// Convert from linear-logarithmic [0.0..1.0] with 0.5 = 0dB +	// to legacy characteristic composed of two square-curves +	// that intersect at volume_in = 0.56, volume_out = 0.5 + +	F32 volume_out = 0.f; +	volume_in = llclamp(volume_in, 0.f, 1.0f); + +	if (volume_in <= 0.56f) +	{ +		volume_out = sqrt(volume_in / (4.f * 0.56f)); +	} +	else +	{ +		volume_out = sqrt((3.f * (volume_in - 0.56f) / (1.f - 0.56f) + 1.f) / 4.f); +	} + +	return volume_out;  }  void LLSpeakerVolumeStorage::load() @@ -1183,6 +1258,8 @@ void LLSpeakerVolumeStorage::load()  	// load per-resident voice volume information  	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SETTINGS_FILE_NAME); +	LL_INFOS("Voice") << "Loading stored speaker volumes from: " << filename << LL_ENDL; +  	LLSD settings_llsd;  	llifstream file;  	file.open(filename); @@ -1194,7 +1271,10 @@ void LLSpeakerVolumeStorage::load()  	for (LLSD::map_const_iterator iter = settings_llsd.beginMap();  		iter != settings_llsd.endMap(); ++iter)  	{ -		mSpeakersData.insert(std::make_pair(LLUUID(iter->first), (F32)iter->second.asReal())); +		// Maintain compatibility with 1.23 non-linear saved volume levels +		F32 volume = transformFromLegacyVolume((F32)iter->second.asReal()); + +		storeSpeakerVolume(LLUUID(iter->first), volume);  	}  } @@ -1209,9 +1289,14 @@ void LLSpeakerVolumeStorage::save()  		std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SETTINGS_FILE_NAME);  		LLSD settings_llsd; +		LL_INFOS("Voice") << "Saving stored speaker volumes to: " << filename << LL_ENDL; +  		for(speaker_data_map_t::const_iterator iter = mSpeakersData.begin(); iter != mSpeakersData.end(); ++iter)  		{ -			settings_llsd[iter->first.asString()] = iter->second; +			// Maintain compatibility with 1.23 non-linear saved volume levels +			F32 volume = transformToLegacyVolume(iter->second); + +			settings_llsd[iter->first.asString()] = volume;  		}  		llofstream file; @@ -2420,9 +2505,10 @@ void LLVoiceClient::stateMachine()  					enforceTether();  				} -				// Send an update if the ptt state has changed (which shouldn't be able to happen that often -- the user can only click so fast) -				// or every 10hz, whichever is sooner. -				if((mAudioSession && mAudioSession->mVolumeDirty) || mPTTDirty || mSpeakerVolumeDirty || mUpdateTimer.hasExpired()) +				// Send an update only if the ptt or mute state has changed (which shouldn't be able to happen that often +				// -- the user can only click so fast) or every 10hz, whichever is sooner. +				// Sending for every volume update causes an excessive flood of messages whenever a volume slider is dragged. +				if((mAudioSession && mAudioSession->mMuteDirty) || mPTTDirty || mUpdateTimer.hasExpired())  				{  					mUpdateTimer.setTimerExpirySec(UPDATE_THROTTLE_SECONDS);  					sendPositionalUpdate(); @@ -3417,38 +3503,26 @@ void LLVoiceClient::sendPositionalUpdate(void)  		stream << "</Request>\n\n\n";  	}	 -	if(mAudioSession && mAudioSession->mVolumeDirty) +	if(mAudioSession && (mAudioSession->mVolumeDirty || mAudioSession->mMuteDirty))  	{  		participantMap::iterator iter = mAudioSession->mParticipantsByURI.begin();  		mAudioSession->mVolumeDirty = false; +		mAudioSession->mMuteDirty = false;  		for(; iter != mAudioSession->mParticipantsByURI.end(); iter++)  		{  			participantState *p = iter->second; -			 +  			if(p->mVolumeDirty)  			{  				// Can't set volume/mute for yourself  				if(!p->mIsSelf)  				{ -					int volume = 56; // nominal default value +					// scale from the range 0.0-1.0 to vivox volume in the range 0-100 +					S32 volume = llround(p->mVolume / VOLUME_SCALE_VIVOX); +  					bool mute = p->mOnMuteList; -					 -					if(p->mUserVolume != -1) -					{ -						// scale from user volume in the range 0-400 (with 100 as "normal") to vivox volume in the range 0-100 (with 56 as "normal") -						if(p->mUserVolume < 100) -							volume = (p->mUserVolume * 56) / 100; -						else -							volume = (((p->mUserVolume - 100) * (100 - 56)) / 300) + 56; -					} -					else if(p->mVolume != -1) -					{ -						// Use the previously reported internal volume (comes in with a ParticipantUpdatedEvent) -						volume = p->mVolume; -					} -										  					if(mute)  					{ @@ -3456,10 +3530,16 @@ void LLVoiceClient::sendPositionalUpdate(void)  						// If we want the user to be muted, set their volume to 0 as well.  						// This isn't perfect, but it will at least reduce their volume to a minimum.  						volume = 0; + +						// Mark the current volume level as set to prevent incoming events +						// changing it to 0, so that we can return to it when unmuting. +						p->mVolumeSet = true;  					} -					 +  					if(volume == 0) +					{  						mute = true; +					}  					LL_DEBUGS("Voice") << "Setting volume/mute for avatar " << p->mAvatarID << " to " << volume << (mute?"/true":"/false") << LL_ENDL; @@ -4600,16 +4680,13 @@ void LLVoiceClient::participantUpdatedEvent(  				participant->mPower = 0.0f;  			} -			// *HACK: Minimal hack to fix EXT-6508, ignore the incoming volume if it is zero. -			// This happens because we send volume zero to Vivox when someone is muted, -			// Vivox then send it back to us, overwriting the previous volume. -			// Remove this hack once volume refactoring from EXT-6031 is applied. -			if (volume != 0) +			// Ignore incoming volume level if it has been explicitly set, or there +			//  is a volume or mute change pending. +			if ( !participant->mVolumeSet && !participant->mVolumeDirty)  			{ -				participant->mVolume = volume; +				participant->mVolume = (F32)volume * VOLUME_SCALE_VIVOX;  			} -			  			// *HACK: mantipov: added while working on EXT-3544  			/*  			Sometimes LLVoiceClient::participantUpdatedEvent callback is called BEFORE  @@ -4993,7 +5070,7 @@ void LLVoiceClient::muteListChanged()  			// Check to see if this participant is on the mute list already  			if(p->updateMuteState()) -				mAudioSession->mVolumeDirty = true; +				mAudioSession->mMuteDirty = true;  		}  	}  } @@ -5016,10 +5093,10 @@ LLVoiceClient::participantState::participantState(const std::string &uri) :  	 mIsModeratorMuted(false),   	 mLastSpokeTimestamp(0.f),   	 mPower(0.f),  -	 mVolume(-1),  -	 mOnMuteList(false),  -	 mUserVolume(-1),  -	 mVolumeDirty(false),  +	 mVolume(VOLUME_DEFAULT), +	 mOnMuteList(false), +	 mVolumeSet(false), +	 mVolumeDirty(false),  	 mAvatarIDValid(false),  	 mIsSelf(false)  { @@ -5068,7 +5145,7 @@ LLVoiceClient::participantState *LLVoiceClient::sessionState::addParticipant(con  				result->mAvatarID = id;  				if(result->updateMuteState()) -					mVolumeDirty = true; +					mMuteDirty = true;  			}  			else  			{ @@ -5080,8 +5157,7 @@ LLVoiceClient::participantState *LLVoiceClient::sessionState::addParticipant(con  		mParticipantsByUUID.insert(participantUUIDMap::value_type(&(result->mAvatarID), result)); -		result->mUserVolume = LLSpeakerVolumeStorage::getInstance()->getSpeakerVolume(result->mAvatarID); -		if (result->mUserVolume != -1) +		if (LLSpeakerVolumeStorage::getInstance()->getSpeakerVolume(result->mAvatarID, result->mVolume))  		{  			result->mVolumeDirty = true;  			mVolumeDirty = true; @@ -5872,12 +5948,10 @@ void LLVoiceClient::enforceTether(void)  void LLVoiceClient::updatePosition(void)  { -	  	if(gVoiceClient)  	{ -		LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();  		LLViewerRegion *region = gAgent.getRegion(); -		if(region && avatarp) +		if(region && isAgentAvatarValid())  		{  			LLMatrix3 rot;  			LLVector3d pos; @@ -5895,9 +5969,9 @@ void LLVoiceClient::updatePosition(void)  					rot);				// rotation matrix  			// Send the current avatar position to the voice code -			rot = avatarp->getRootJoint()->getWorldRotation().getMatrix3(); +			rot = gAgentAvatarp->getRootJoint()->getWorldRotation().getMatrix3(); -			pos = avatarp->getPositionGlobal(); +			pos = gAgentAvatarp->getPositionGlobal();  			// TODO: Can we get the head offset from outside the LLVOAvatar?  //			pos += LLVector3d(mHeadOffset);  			pos += LLVector3d(0.f, 0.f, 1.f); @@ -6281,51 +6355,21 @@ BOOL LLVoiceClient::getOnMuteList(const LLUUID& id)  	return result;  } -// External accessiors. Maps 0.0 to 1.0 to internal values 0-400 with .5 == 100 -// internal = 400 * external^2 +// External accessors.  F32 LLVoiceClient::getUserVolume(const LLUUID& id)  { -	F32 result = 0.0f; +	// Minimum volume will be returned for users with voice disabled +	F32 result = VOLUME_MIN;  	participantState *participant = findParticipantByID(id);  	if(participant)  	{ -		S32 ires = 100; // nominal default volume -		 -		if(participant->mIsSelf) -		{ -			// Always make it look like the user's own volume is set at the default. -		} -		else if(participant->mUserVolume != -1) -		{ -			// Use the internal volume -			ires = participant->mUserVolume; -			 -			// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging. -//			LL_DEBUGS("Voice") << "mapping from mUserVolume " << ires << LL_ENDL; -		} -		else if(participant->mVolume != -1) -		{ -			// Map backwards from vivox volume  - -			// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging. -//			LL_DEBUGS("Voice") << "mapping from mVolume " << participant->mVolume << LL_ENDL; +		result = participant->mVolume; -			if(participant->mVolume < 56) -			{ -				ires = (participant->mVolume * 100) / 56; -			} -			else -			{ -				ires = (((participant->mVolume - 56) * 300) / (100 - 56)) + 100; -			} -		} -		result = sqrtf(((F32)ires) / 400.f); +		// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging. +		// LL_DEBUGS("Voice") << "mVolume = " << result <<  " for " << id << LL_ENDL;  	} -	// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging. -//	LL_DEBUGS("Voice") << "returning " << result << LL_ENDL; -  	return result;  } @@ -6334,16 +6378,23 @@ void LLVoiceClient::setUserVolume(const LLUUID& id, F32 volume)  	if(mAudioSession)  	{  		participantState *participant = findParticipantByID(id); -		if (participant) +		if (participant && !participant->mIsSelf)  		{ -			// store this volume setting for future sessions -			LLSpeakerVolumeStorage::getInstance()->storeSpeakerVolume(id, volume); +			if (!is_approx_equal(volume, VOLUME_DEFAULT)) +			{ +				// Store this volume setting for future sessions if it has been +				// changed from the default +				LLSpeakerVolumeStorage::getInstance()->storeSpeakerVolume(id, volume); +			} +			else +			{ +				// Remove stored volume setting if it is returned to the default +				LLSpeakerVolumeStorage::getInstance()->removeSpeakerVolume(id); +			} -			// volume can amplify by as much as 4x! -			S32 ivol = (S32)(400.f * volume * volume); -			participant->mUserVolume = llclamp(ivol, 0, 400); -			participant->mVolumeDirty = TRUE; -			mAudioSession->mVolumeDirty = TRUE; +			participant->mVolume = llclamp(volume, VOLUME_MIN, VOLUME_MAX); +			participant->mVolumeDirty = true; +			mAudioSession->mVolumeDirty = true;  		}  	}  } @@ -6484,6 +6535,7 @@ LLVoiceClient::sessionState::sessionState() :  	mVoiceEnabled(false),  	mReconnect(false),  	mVolumeDirty(false), +	mMuteDirty(false),  	mParticipantsChanged(false)  {  } diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index aaacab69e0..a29c386182 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -101,6 +101,10 @@ class LLVoiceClient: public LLSingleton<LLVoiceClient>  		static F32 OVERDRIVEN_POWER_LEVEL; +		static const F32 VOLUME_MIN; +		static const F32 VOLUME_DEFAULT; +		static const F32 VOLUME_MAX; +  		void updateSettings(); // call after loading settings and whenever they change  		void getCaptureDevicesSendMessage(); @@ -269,7 +273,7 @@ static	void updatePosition(void);  		public:  			participantState(const std::string &uri); -			bool updateMuteState(); +			bool updateMuteState();	// true if mute state has changed  			bool isAvatar();  			std::string mURI; @@ -279,13 +283,13 @@ static	void updatePosition(void);  			LLFrameTimer mSpeakingTimeout;  			F32	mLastSpokeTimestamp;  			F32 mPower; -			int mVolume; +			F32 mVolume;  			std::string mGroupID; -			int mUserVolume;  			bool mPTT;  			bool mIsSpeaking;  			bool mIsModeratorMuted;  			bool mOnMuteList;		// true if this avatar is on the user's mute list (and should be muted) +			bool mVolumeSet;		// true if incoming volume messages should not change the volume  			bool mVolumeDirty;		// true if this participant needs a volume command sent (either mOnMuteList or mUserVolume has changed)  			bool mAvatarIDValid;  			bool mIsSelf; @@ -349,6 +353,7 @@ static	void updatePosition(void);  			// Set to true when the mute state of someone in the participant list changes.  			// The code will have to walk the list to find the changed participant(s).  			bool		mVolumeDirty; +			bool		mMuteDirty;  			bool		mParticipantsChanged;  			participantMap mParticipantsByURI; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index cb362d557c..6b052b8e99 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -369,7 +369,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,  			S32 res2 = unpackTEMessage(*dp);  			if (TEM_INVALID == res2)  			{ -				// Well, crap, there's something bogus in the data that we're unpacking. +				// There's something bogus in the data that we're unpacking.  				dp->dumpBufferToLog();  				llwarns << "Flushing cache files" << llendl;  				std::string mask; diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index 589099673d..63f99273fe 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -62,13 +62,12 @@ class LLOverrideBakedTextureUpdate  public:  	LLOverrideBakedTextureUpdate(bool temp_state)  	{ -		mAvatar = gAgent.getAvatarObject();  		U32 num_bakes = (U32) LLVOAvatarDefines::BAKED_NUM_INDICES;  		for( U32 index = 0; index < num_bakes; ++index )  		{ -			composite_enabled[index] = mAvatar->isCompositeUpdateEnabled(index); +			composite_enabled[index] = gAgentAvatarp->isCompositeUpdateEnabled(index);  		} -		mAvatar->setCompositeUpdatesEnabled(temp_state); +		gAgentAvatarp->setCompositeUpdatesEnabled(temp_state);  	}  	~LLOverrideBakedTextureUpdate() @@ -76,13 +75,11 @@ public:  		U32 num_bakes = (U32)LLVOAvatarDefines::BAKED_NUM_INDICES;		  		for( U32 index = 0; index < num_bakes; ++index )  		{ -			mAvatar->setCompositeUpdatesEnabled(index, composite_enabled[index]); -		}		 +			gAgentAvatarp->setCompositeUpdatesEnabled(index, composite_enabled[index]); +		}  	} -  private:  	bool composite_enabled[LLVOAvatarDefines::BAKED_NUM_INDICES]; -	LLVOAvatarSelf *mAvatar;  };  // Private local functions @@ -205,10 +202,9 @@ BOOL LLWearable::exportFile(LLFILE* file) const  void LLWearable::createVisualParams()  { -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam();  +	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam();   		 param; -		 param = (LLViewerVisualParam*) avatar->getNextVisualParam()) +		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())  	{  		if (param->getWearableType() == mType)  		{ @@ -228,7 +224,7 @@ void LLWearable::createVisualParams()  		param->resetDrivenParams();  		if(!param->linkDrivenParams(boost::bind(wearable_function,(LLWearable*)this, _1), false))  		{ -			if( !param->linkDrivenParams(boost::bind(avatar_function,(LLVOAvatarSelf*)avatar,_1 ), true)) +			if( !param->linkDrivenParams(boost::bind(avatar_function,gAgentAvatarp,_1 ), true))  			{  				llwarns << "could not link driven params for wearable " << getName() << " id: " << param->getID() << llendl;  				continue; @@ -464,12 +460,7 @@ BOOL LLWearable::importFile( LLFILE* file )  // since this wearable was created.  BOOL LLWearable::isOldVersion() const  { -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	llassert( avatar ); -	if( !avatar ) -	{ -		return FALSE; -	} +	if (!isAgentAvatarValid()) return FALSE;  	if( LLWearable::sCurrentDefinitionVersion < mDefinitionVersion )  	{ @@ -483,9 +474,9 @@ BOOL LLWearable::isOldVersion() const  	}  	S32 param_count = 0; -	for( LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam();  +	for( LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam();   		param; -		param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) +		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )  	{  		if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )  		{ @@ -531,17 +522,11 @@ BOOL LLWearable::isOldVersion() const  // only if those values are the same as the defaults.  BOOL LLWearable::isDirty() const  { -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	llassert( avatar ); -	if( !avatar ) -	{ -		return FALSE; -	} - +	if (!isAgentAvatarValid()) return FALSE; -	for( LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam();  +	for( LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam();   		param; -		param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) +		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )  	{  		if( (param->getWearableType() == mType)   			&& (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE )  @@ -602,14 +587,9 @@ BOOL LLWearable::isDirty() const  void LLWearable::setParamsToDefaults()  { -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	llassert( avatar ); -	if( !avatar ) -	{ -		return; -	} +	if (!isAgentAvatarValid()) return; -	for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) +	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )  	{  		if( (((LLViewerVisualParam*)param)->getWearableType() == mType ) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )  		{ @@ -645,18 +625,12 @@ void LLWearable::setTexturesToDefaults()  // Updates the user's avatar's appearance  void LLWearable::writeToAvatar()  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	llassert(avatarp); -	if(!avatarp) -	{ -		llerrs << "could not get avatar object to write to for wearable " << this->getName() << llendl; -		return; -	} +	if (!isAgentAvatarValid()) return; -	ESex old_sex = avatarp->getSex(); +	ESex old_sex = gAgentAvatarp->getSex();  	// Pull params -	for( LLVisualParam* param = avatarp->getFirstVisualParam(); param; param = avatarp->getNextVisualParam() ) +	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )  	{  		// cross-wearable parameters are not authoritative, as they are driven by a different wearable. So don't copy the values to the  		// avatar object if cross wearable. Cross wearable params get their values from the avatar, they shouldn't write the other way. @@ -665,7 +639,7 @@ void LLWearable::writeToAvatar()  			S32 param_id = param->getID();  			F32 weight = getVisualParamWeight(param_id); -			avatarp->setVisualParamWeight( param_id, weight, FALSE ); +			gAgentAvatarp->setVisualParamWeight( param_id, weight, FALSE );  		}  	} @@ -686,14 +660,14 @@ void LLWearable::writeToAvatar()  			}  			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );  			// MULTI-WEARABLE: replace hard-coded 0 -			avatarp->setLocalTextureTE(te, image, 0); +			gAgentAvatarp->setLocalTextureTE(te, image, 0);  		}  	} -	ESex new_sex = avatarp->getSex(); +	ESex new_sex = gAgentAvatarp->getSex();  	if( old_sex != new_sex )  	{ -		avatarp->updateSexDependentLayerSets( FALSE ); +		gAgentAvatarp->updateSexDependentLayerSets( FALSE );  	}	  //	if( upload_bake ) @@ -707,12 +681,7 @@ void LLWearable::writeToAvatar()  // static   void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	llassert(avatarp); -	if(!avatarp) -	{ -		return; -	} +	if (!isAgentAvatarValid()) return;  	// You can't just remove body parts.  	if( (type == WT_SHAPE) || @@ -724,12 +693,12 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )  	}  	// Pull params -	for( LLVisualParam* param = avatarp->getFirstVisualParam(); param; param = avatarp->getNextVisualParam() ) +	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )  	{  		if( (((LLViewerVisualParam*)param)->getWearableType() == type) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )  		{  			S32 param_id = param->getID(); -			avatarp->setVisualParamWeight( param_id, param->getDefaultWeight(), upload_bake ); +			gAgentAvatarp->setVisualParamWeight( param_id, param->getDefaultWeight(), upload_bake );  		}  	} @@ -738,8 +707,8 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )  		gFloaterCustomize->setWearable(type, NULL, PERM_ALL, TRUE);  	} -	avatarp->updateVisualParams(); -	avatarp->wearableUpdated(type, TRUE); +	gAgentAvatarp->updateVisualParams(); +	gAgentAvatarp->wearableUpdated(type, TRUE);  //	if( upload_bake )  //	{ @@ -751,12 +720,7 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )  // Definition version is current: removes obsolete enties and creates default values for new ones.  void LLWearable::copyDataFrom(const LLWearable* src)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	llassert(avatarp); -	if(!avatarp) -	{ -		return; -	} +	if (!isAgentAvatarValid()) return;  	mDefinitionVersion = LLWearable::sCurrentDefinitionVersion; @@ -769,9 +733,9 @@ void LLWearable::copyDataFrom(const LLWearable* src)  	mSavedVisualParamMap.clear();  	// Deep copy of mVisualParamMap (copies only those params that are current, filling in defaults where needed) -	for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatarp->getFirstVisualParam();  +	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam();   		param; -		param = (LLViewerVisualParam*) avatarp->getNextVisualParam() ) +		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )  	{  		if( (param->getWearableType() == mType) )  		{ @@ -876,14 +840,12 @@ void LLWearable::addVisualParam(LLVisualParam *param)  void LLWearable::setVisualParams()  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -  	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); iter++)  	{  		S32 id = iter->first;  		LLVisualParam *wearable_param = iter->second;  		F32 value = wearable_param->getWeight(); -		avatarp->setVisualParamWeight(id, value, FALSE); +		gAgentAvatarp->setVisualParamWeight(id, value, FALSE);  	}  } @@ -1024,8 +986,7 @@ BOOL LLWearable::isOnTop() const  void LLWearable::createLayers(S32 te)  { -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	LLTexLayerSet *layer_set = avatarp->getLayerSet((ETextureIndex)te); +	LLTexLayerSet *layer_set = gAgentAvatarp->getLayerSet((ETextureIndex)te);  	if (layer_set)  	{  		layer_set->cloneTemplates(mTEMap[te], (ETextureIndex)te, this); @@ -1123,10 +1084,9 @@ void LLWearable::destroyTextures()  void LLWearable::pullCrossWearableValues()  {  	// scan through all of the avatar's visual parameters -	LLVOAvatar* avatar = gAgent.getAvatarObject(); -	for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam();  +	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam();   		 param; -		 param = (LLViewerVisualParam*) avatar->getNextVisualParam()) +		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())  	{  		if( param )  		{ diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index 3385b75c65..1a64f9d881 100644 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -103,8 +103,18 @@ void LLWeb::loadURLInternal(const std::string &url)  // static  void LLWeb::loadURLExternal(const std::string& url)  { +	loadURLExternal(url, true); +} + + +// static +void LLWeb::loadURLExternal(const std::string& url, bool async) +{  	std::string escaped_url = escapeURL(url); -	gViewerWindow->getWindow()->spawnWebBrowser(escaped_url); +	if (gViewerWindow) +	{ +		gViewerWindow->getWindow()->spawnWebBrowser(escaped_url, async); +	}  } diff --git a/indra/newview/llweb.h b/indra/newview/llweb.h index f4666c9280..1119b80bb4 100644 --- a/indra/newview/llweb.h +++ b/indra/newview/llweb.h @@ -54,8 +54,10 @@ public:  	static void loadURL(const char* url) { loadURL( ll_safe_string(url) ); }  	/// Load the given url in the Second Life internal web browser  	static void loadURLInternal(const std::string &url); -	/// Load the given url in the operating system's web browser +	/// Load the given url in the operating system's web browser, async if we want to return immediately +	/// before browser has spawned  	static void loadURLExternal(const std::string& url); +	static void loadURLExternal(const std::string& url, bool async);  	/// Returns escaped url (eg, " " to "%20") - used by all loadURL methods  	static std::string escapeURL(const std::string& url); diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 19f303ab88..0b63f5efbd 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -1209,7 +1209,7 @@ static LLVector3d unpackLocalToGlobalPosition(U32 compact_local, const LLVector3  	return pos_global;  } -void LLWorld::getAvatars(std::vector<LLUUID>* avatar_ids, std::vector<LLVector3d>* positions, const LLVector3d& relative_to, F32 radius) const +void LLWorld::getAvatars(uuid_vec_t* avatar_ids, std::vector<LLVector3d>* positions, const LLVector3d& relative_to, F32 radius) const  {  	if(avatar_ids != NULL)  	{ diff --git a/indra/newview/llworld.h b/indra/newview/llworld.h index 48025c700b..502f7b0320 100644 --- a/indra/newview/llworld.h +++ b/indra/newview/llworld.h @@ -158,7 +158,7 @@ public:  	// All arguments are optional. Given containers will be emptied and then filled.  	// Not supplying origin or radius input returns data on all avatars in the known regions.  	void getAvatars( -		std::vector<LLUUID>* avatar_ids = NULL, +		uuid_vec_t* avatar_ids = NULL,  		std::vector<LLVector3d>* positions = NULL,   		const LLVector3d& relative_to = LLVector3d(), F32 radius = FLT_MAX) const; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 685be043fc..4ca251af3e 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -3856,15 +3856,14 @@ void LLPipeline::renderForSelect(std::set<LLViewerObject*>& objects, BOOL render  	}  	// pick HUD objects -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); -	if (avatarp && sShowHUDAttachments) +	if (isAgentAvatarValid() && sShowHUDAttachments)  	{  		glh::matrix4f save_proj(glh_get_current_projection());  		glh::matrix4f save_model(glh_get_current_modelview());  		setup_hud_matrices(screen_rect); -		for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();  -			 iter != avatarp->mAttachmentPoints.end(); ) +		for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();  +			 iter != gAgentAvatarp->mAttachmentPoints.end(); )  		{  			LLVOAvatar::attachment_map_t::iterator curiter = iter++;  			LLViewerJointAttachment* attachment = curiter->second; @@ -3964,9 +3963,9 @@ void LLPipeline::rebuildPools()  		max_count--;  	} -	if (gAgent.getAvatarObject()) +	if (isAgentAvatarValid())  	{ -		gAgent.getAvatarObject()->rebuildHUD(); +		gAgentAvatarp->rebuildHUD();  	}  } @@ -4598,8 +4597,8 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)  		glLightfv(gllight, GL_SPECULAR, LLColor4::black.mV);  	} -	if (gAgent.getAvatarObject() && -		gAgent.getAvatarObject()->mSpecialRenderMode == 3) +	if (isAgentAvatarValid() && +		gAgentAvatarp->mSpecialRenderMode == 3)  	{  		LLColor4  light_color = LLColor4::white;  		light_color.mV[3] = 0.0f; @@ -4708,15 +4707,13 @@ void LLPipeline::enableLightsDynamic()  		glColor4f(0.f, 0.f, 0.f, 1.f); // no local lighting by default  	} -	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); - -	if (avatarp && getLightingDetail() <= 0) +	if (isAgentAvatarValid() && getLightingDetail() <= 0)  	{ -		if (avatarp->mSpecialRenderMode == 0) // normal +		if (gAgentAvatarp->mSpecialRenderMode == 0) // normal  		{  			gPipeline.enableLightsAvatar();  		} -		else if (avatarp->mSpecialRenderMode >= 1)  // anim preview +		else if (gAgentAvatarp->mSpecialRenderMode >= 1)  // anim preview  		{  			gPipeline.enableLightsAvatarEdit(LLColor4(0.7f, 0.6f, 0.3f, 1.f));  		} @@ -7101,15 +7098,15 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)  {  	if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)  	{ -		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject(); +		BOOL skip_avatar_update = FALSE;  		if (gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK)  		{ -			avatarp = NULL; +			skip_avatar_update = TRUE;  		} -		if (avatarp) +		if (!skip_avatar_update)  		{ -			avatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON); +			gAgentAvatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON);  		}  		LLVertexBuffer::unbind(); @@ -7333,9 +7330,9 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)  		LLGLState::checkTextureChannels();  		LLGLState::checkClientArrays(); -		if (avatarp) +		if (!skip_avatar_update)  		{ -			avatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode()); +			gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());  		}  	}  } diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp index 5677308fb0..7e9a8336e7 100644 --- a/indra/test_apps/llplugintest/llmediaplugintest.cpp +++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp @@ -1955,7 +1955,7 @@ void LLMediaPluginTest::updateStatusBar()  		 cached_distance == mDistanceCameraToSelectedGeometry  	   )  	{ -		// nothing changed so don't spend time in this shitty function +		// nothing changed so don't spend time here  		return;  	}; | 
