diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llagentcamera.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/llagentwearables.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llagentwearablesfetch.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llfloatergroups.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llpaneloutfitedit.cpp | 14 | ||||
| -rw-r--r-- | indra/newview/llpaneloutfitedit.h | 1 | ||||
| -rw-r--r-- | indra/newview/llpaneltopinfobar.cpp | 23 | ||||
| -rw-r--r-- | indra/newview/llpaneltopinfobar.h | 5 | ||||
| -rw-r--r-- | indra/newview/llsidepanelappearance.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/lltexturefetch.cpp | 129 | ||||
| -rw-r--r-- | indra/newview/lltexturefetch.h | 14 | ||||
| -rw-r--r-- | indra/newview/llviewerjointattachment.cpp | 20 | ||||
| -rw-r--r-- | indra/newview/llviewermenu.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.cpp | 25 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.h | 10 | ||||
| -rw-r--r-- | indra/newview/llvoavatar.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llvoavatarself.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llwearableitemslist.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llwearableitemslist.h | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_search.xml | 8 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/strings.xml | 3 | 
21 files changed, 145 insertions, 159 deletions
| diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 4dc78e9a1d..e97e152a38 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -1149,10 +1149,9 @@ void LLAgentCamera::updateCamera()  	static LLFastTimer::DeclareTimer ftm("Camera");  	LLFastTimer t(ftm); -	//Ventrella - changed camera_skyward to the new global "mCameraUpVector" +	// - changed camera_skyward to the new global "mCameraUpVector"  	mCameraUpVector = LLVector3::z_axis;  	//LLVector3	camera_skyward(0.f, 0.f, 1.f); -	//end Ventrella  	U32 camera_mode = mCameraAnimating ? mLastCameraMode : mCameraMode; @@ -1162,10 +1161,8 @@ void LLAgentCamera::updateCamera()  		gAgentAvatarp->isSitting() &&  		camera_mode == CAMERA_MODE_MOUSELOOK)  	{ -		//Ventrella  		//changed camera_skyward to the new global "mCameraUpVector"  		mCameraUpVector = mCameraUpVector * gAgentAvatarp->getRenderRotation(); -		//end Ventrella  	}  	if (cameraThirdPerson() && mFocusOnAvatar && LLFollowCamMgr::getActiveFollowCamParams()) @@ -1173,13 +1170,11 @@ void LLAgentCamera::updateCamera()  		changeCameraToFollow();  	} -	//Ventrella  	//NOTE - this needs to be integrated into a general upVector system here within llAgent.   	if ( camera_mode == CAMERA_MODE_FOLLOW && mFocusOnAvatar )  	{  		mCameraUpVector = mFollowCam.getUpVector();  	} -	//end Ventrella  	if (mSitCameraEnabled)  	{ @@ -1256,7 +1251,6 @@ void LLAgentCamera::updateCamera()  	// lerp camera focus offset  	mCameraFocusOffset = lerp(mCameraFocusOffset, mCameraFocusOffsetTarget, LLCriticalDamp::getInterpolant(CAMERA_FOCUS_HALF_LIFE)); -	//Ventrella  	if ( mCameraMode == CAMERA_MODE_FOLLOW )  	{  		if (isAgentAvatarValid()) @@ -1283,7 +1277,6 @@ void LLAgentCamera::updateCamera()  			}  		}  	} -	// end Ventrella  	BOOL hit_limit;  	LLVector3d camera_pos_global; @@ -1414,10 +1407,8 @@ void LLAgentCamera::updateCamera()  	// Move the camera -	//Ventrella  	LLViewerCamera::getInstance()->updateCameraLocation(mCameraPositionAgent, mCameraUpVector, focus_agent);  	//LLViewerCamera::getInstance()->updateCameraLocation(mCameraPositionAgent, camera_skyward, focus_agent); -	//end Ventrella  	// Change FOV  	LLViewerCamera::getInstance()->setView(LLViewerCamera::getInstance()->getDefaultFOV() / (1.f + mCameraCurrentFOVZoomFactor)); @@ -1532,12 +1523,11 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()  		clearFocusObject();  	} -	// Ventrella  	if (mCameraMode == CAMERA_MODE_FOLLOW && mFocusOnAvatar)  	{  		mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(mFollowCam.getSimulatedFocus());  		return mFocusTargetGlobal; -	}// End Ventrella  +	}  	else if (mCameraMode == CAMERA_MODE_MOUSELOOK)  	{  		LLVector3d at_axis(1.0, 0.0, 0.0); @@ -1706,11 +1696,10 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)  	LLVector3d camera_position_global; -	// Ventrella   	if (mCameraMode == CAMERA_MODE_FOLLOW && mFocusOnAvatar)  	{  		camera_position_global = gAgent.getPosGlobalFromAgent(mFollowCam.getSimulatedPosition()); -	}// End Ventrella +	}  	else if (mCameraMode == CAMERA_MODE_MOUSELOOK)  	{  		if (!isAgentAvatarValid() || gAgentAvatarp->mDrawable.isNull()) @@ -2130,7 +2119,6 @@ void LLAgentCamera::changeCameraToDefault()  } -// Ventrella  //-----------------------------------------------------------------------------  // changeCameraToFollow()  //----------------------------------------------------------------------------- diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 337878cf96..5db16d9250 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1756,7 +1756,7 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj  			LLViewerObject *objectp = (*attachment_iter);  			if (objectp)  			{ -				LLUUID object_item_id = objectp->getItemID(); +				LLUUID object_item_id = objectp->getAttachmentItemID();  				if (requested_item_ids.find(object_item_id) != requested_item_ids.end())  				{  					// Object currently worn, was requested. diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp index d911d123f4..f6bb1b9bc9 100644 --- a/indra/newview/llagentwearablesfetch.cpp +++ b/indra/newview/llagentwearablesfetch.cpp @@ -215,7 +215,7 @@ void LLInitialWearablesFetch::processWearablesMessage()  				{  					LLViewerObject* attached_object = (*attachment_iter);  					if (!attached_object) continue; -					const LLUUID& item_id = attached_object->getItemID(); +					const LLUUID& item_id = attached_object->getAttachmentItemID();  					if (item_id.isNull()) continue;  					ids.push_back(item_id);  				} diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp index 0bd8215e5c..43f158658a 100644 --- a/indra/newview/llfloatergroups.cpp +++ b/indra/newview/llfloatergroups.cpp @@ -47,7 +47,6 @@  #include "llbutton.h"  #include "llgroupactions.h"  #include "llscrolllistctrl.h" -#include "llselectmgr.h"  #include "lltextbox.h"  #include "lluictrlfactory.h"  #include "lltrans.h" @@ -90,8 +89,6 @@ BOOL LLFloaterGroupPicker::postBuild()  		list_ctrl->setContextMenu(LLScrollListCtrl::MENU_GROUP);  	} -	LLSelectMgr::getInstance()->mUpdateSignal.connect(boost::bind(&LLFloaterGroupPicker::onBtnCancel, this)); -  	childSetAction("OK", onBtnOK, this);  	childSetAction("Cancel", onBtnCancel, this); diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index 0464aa377e..cfd31b6829 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -543,12 +543,26 @@ BOOL LLPanelOutfitEdit::postBuild()  	childSetAction(REVERT_BTN, boost::bind(&LLAppearanceMgr::wearBaseOutfit, LLAppearanceMgr::getInstance())); +	/* +	 * By default AT_CLOTHING are sorted by (in in MY OUTFITS): +	 *  - by type (types order determined in LLWearableType::EType) +	 *  - each LLWearableType::EType by outer layer on top +	 * +	 * In Add More panel AT_CLOTHING should be sorted in a such way: +	 *  - by type (types order determined in LLWearableType::EType) +	 *  - each LLWearableType::EType by name (EXT-8205) +	*/ +	mWearableListViewItemsComparator = new LLWearableItemTypeNameComparator(); +	mWearableListViewItemsComparator->setOrder(LLAssetType::AT_CLOTHING, LLWearableItemTypeNameComparator::ORDER_RANK_1, false, true); +  	mWearablesListViewPanel = getChild<LLPanel>("filtered_wearables_panel");  	mWearableItemsList = getChild<LLWearableItemsList>("list_view");  	mWearableItemsList->setCommitOnSelectionChange(true);  	mWearableItemsList->setCommitCallback(boost::bind(&LLPanelOutfitEdit::updatePlusButton, this));  	mWearableItemsList->setDoubleClickCallback(boost::bind(&LLPanelOutfitEdit::onPlusBtnClicked, this)); +	mWearableItemsList->setComparator(mWearableListViewItemsComparator); +  	mSaveComboBtn.reset(new LLSaveOutfitComboBtn(this));  	return TRUE;  } diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h index 871ed8d7ec..8d0325a4d6 100644 --- a/indra/newview/llpaneloutfitedit.h +++ b/indra/newview/llpaneloutfitedit.h @@ -232,6 +232,7 @@ private:  	LLFilteredWearableListManager* 	mWearableListManager;  	LLWearableItemsList* 			mWearableItemsList;  	LLPanel*						mWearablesListViewPanel; +	LLWearableItemTypeNameComparator* mWearableListViewItemsComparator;  	LLCOFDragAndDropObserver* mCOFDragAndDropObserver; diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp index 68dc1cdf71..e73d1fb7c2 100644 --- a/indra/newview/llpaneltopinfobar.cpp +++ b/indra/newview/llpaneltopinfobar.cpp @@ -161,6 +161,8 @@ BOOL LLPanelTopInfoBar::postBuild()  	mParcelMgrConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(  			boost::bind(&LLPanelTopInfoBar::onAgentParcelChange, this)); +	setVisibleCallback(boost::bind(&LLPanelTopInfoBar::onVisibilityChange, this, _2)); +  	return TRUE;  } @@ -174,6 +176,27 @@ void LLPanelTopInfoBar::onNavBarShowParcelPropertiesCtrlChanged()  	setParcelInfoText(new_text);  } +// when panel is shown, all minimized floaters should be shifted downwards to prevent overlapping of +// PanelTopInfoBar. See EXT-7951. +void LLPanelTopInfoBar::onVisibilityChange(const LLSD& show) +{ +	// this height is used as a vertical offset for ALREADY MINIMIZED floaters +	// when PanelTopInfoBar visibility changes +	S32 height = getRect().getHeight(); + +	// this vertical offset is used for a start minimize position of floaters that +	// are NOT MIMIMIZED YET +	S32 minimize_pos_offset = 0; + +	if (show.asBoolean()) +	{ +		height = minimize_pos_offset = -height; +	} + +	gFloaterView->shiftFloaters(0, height); +	gFloaterView->setMinimizePositionVerticalOffset(minimize_pos_offset); +} +  void LLPanelTopInfoBar::draw()  {  	updateParcelInfoText(); diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h index 6e6fbc08ab..0603ee744f 100644 --- a/indra/newview/llpaneltopinfobar.h +++ b/indra/newview/llpaneltopinfobar.h @@ -58,6 +58,11 @@ public:  	 */  	void handleLoginComplete(); +	/** +	 * Called when the top info bar gets shown or hidden +	 */ +	void onVisibilityChange(const LLSD& show); +  private:  	class LLParcelChangeObserver; diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index adfd457664..33a464fea6 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -473,7 +473,7 @@ void LLSidepanelAppearance::fetchInventory()  			{  				LLViewerObject* attached_object = (*attachment_iter);  				if (!attached_object) continue; -				const LLUUID& item_id = attached_object->getItemID(); +				const LLUUID& item_id = attached_object->getAttachmentItemID();  				if (item_id.isNull()) continue;  				ids.push_back(item_id);  			} diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 846cba4a3b..f4899d0d5d 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -54,6 +54,7 @@  #include "llviewertexturelist.h"  #include "llviewertexture.h"  #include "llviewerregion.h" +#include "llviewerstats.h"  #include "llworld.h"  ////////////////////////////////////////////////////////////////////////////// @@ -150,7 +151,7 @@ public:  	~LLTextureFetchWorker();  	void relese() { --mActiveCount; } -	void callbackHttpGet(const LLChannelDescriptors& channels, +	S32 callbackHttpGet(const LLChannelDescriptors& channels,  						 const LLIOPipe::buffer_ptr_t& buffer,  						 bool partial, bool success);  	void callbackCacheRead(bool success, LLImageFormatted* image, @@ -335,8 +336,9 @@ public:  				worker->setGetStatus(status, reason);  // 				llwarns << "CURL GET FAILED, status:" << status << " reason:" << reason << llendl;  			} -			mFetcher->removeFromHTTPQueue(mID); -			worker->callbackHttpGet(channels, buffer, partial, success); +			 +			S32 data_size = worker->callbackHttpGet(channels, buffer, partial, success); +			mFetcher->removeFromHTTPQueue(mID, data_size);  		}  		else  		{ @@ -850,19 +852,10 @@ bool LLTextureFetchWorker::doWork(S32 param)  	{  		if(mCanUseHTTP)  		{ -			// *TODO: Integrate this with llviewerthrottle -			// Note: LLViewerThrottle uses dynamic throttling which makes sense for UDP, -			// but probably not for Textures. -			// Set the throttle to the entire bandwidth, assuming UDP packets will get priority -			// when they are needed -			//F32 max_bandwidth = mFetcher->mMaxBandwidth; -			if (mFetcher->isHTTPThrottled(mDesiredSize))// || -				//mFetcher->getTextureBandwidth() > max_bandwidth) -			{ -				// Make normal priority and return (i.e. wait until there is room in the queue) -				setPriority(LLWorkerThread::PRIORITY_NORMAL | mWorkPriority); -				return false; -			} +			//NOTE: +			//it seems ok to let sim control the UDP traffic +			//so there is no throttle for http here. +			//  			mFetcher->removeFromNetworkQueue(this, false); @@ -979,6 +972,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  					else  					{  						resetFormattedData(); +						mState = DONE;  						return true; // failed  					}  				} @@ -1271,8 +1265,7 @@ bool LLTextureFetchWorker::deleteOK()  	if ((haveWork() &&  		 // not ok to delete from these states -		 ((mState == WAIT_HTTP_REQ) || -		  (mState >= WRITE_TO_CACHE && mState <= WAIT_ON_WRITE)))) +		 ((mState >= WRITE_TO_CACHE && mState <= WAIT_ON_WRITE))))  	{  		delete_ok = false;  	} @@ -1351,29 +1344,29 @@ bool LLTextureFetchWorker::processSimulatorPackets()  ////////////////////////////////////////////////////////////////////////////// -void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels, +S32 LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,  										   const LLIOPipe::buffer_ptr_t& buffer,  										   bool partial, bool success)  { +	S32 data_size = 0 ; +  	LLMutexLock lock(&mWorkMutex);  	if (mState != WAIT_HTTP_REQ)  	{  		llwarns << "callbackHttpGet for unrequested fetch worker: " << mID  				<< " req=" << mSentRequest << " state= " << mState << llendl; -		return; +		return data_size;  	}  	if (mLoaded)  	{  		llwarns << "Duplicate callback for " << mID.asString() << llendl; -		return; // ignore duplicate callback +		return data_size ; // ignore duplicate callback  	}  	if (success)  	{  		// get length of stream: -		S32 data_size = buffer->countAfter(channels.in(), NULL); - -		gTextureList.sTextureBits += data_size * 8; // Approximate - does not include header bits +		data_size = buffer->countAfter(channels.in(), NULL);		  		LL_DEBUGS("Texture") << "HTTP RECEIVED: " << mID.asString() << " Bytes: " << data_size << LL_ENDL;  		if (data_size > 0) @@ -1410,6 +1403,8 @@ void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,  	}  	mLoaded = TRUE;  	setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority); + +	return data_size ;  }  ////////////////////////////////////////////////////////////////////////////// @@ -1528,15 +1523,11 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image  	  mTextureCache(cache),  	  mImageDecodeThread(imagedecodethread),  	  mTextureBandwidth(0), +	  mHTTPTextureBits(0),  	  mCurlGetRequest(NULL)  {  	mMaxBandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS");  	mTextureInfo.setUpLogging(gSavedSettings.getBOOL("LogTextureDownloadsToViewerLog"), gSavedSettings.getBOOL("LogTextureDownloadsToSimulator"), gSavedSettings.getU32("TextureLoggingThreshold")); -	 -	for(S32 i = 0 ; i < TOTAL_TEXTURE_TYPES; i++) -	{ -		mHTTPThrottleFlag[i] = FALSE ; -	}  }  LLTextureFetch::~LLTextureFetch() @@ -1678,69 +1669,11 @@ void LLTextureFetch::addToHTTPQueue(const LLUUID& id)  	mHTTPTextureQueue.insert(id);  } -void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id) +void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id, S32 received_size)  {  	LLMutexLock lock(&mNetworkQueueMutex);  	mHTTPTextureQueue.erase(id); -} - -void LLTextureFetch::clearHTTPThrottleFlag() -{ -	static const F32 WAIT_TIME = 0.3f ; //seconds. -	static LLFrameTimer timer ; - -	if(timer.getElapsedTimeF32() < WAIT_TIME) //wait for WAIT_TIME -	{ -		return ; -	} -	timer.reset() ; - -	LLMutexLock lock(&mNetworkQueueMutex); -	for(S32 i = 0 ; i < TOTAL_TEXTURE_TYPES; i++)//reset the http throttle flags. -	{ -		mHTTPThrottleFlag[i] = FALSE ; -	} -} - -//check if need to throttle this fetching request. -//rule: if a request can not be inserted into the http queue due to a full queue, -//      block all future insertions of requests with larger fetching size requirement. -//because: -//      later insertions are usually at lower priorities; and -//      small textures need chance to be fetched. -bool LLTextureFetch::isHTTPThrottled(S32 requested_size) -{ -	static const S32 SMALL_TEXTURE_MAX_SIZE = 64 * 64 * 4 ; -	static const S32 MEDIUM_TEXTURE_MAX_SIZE = 256 * 256 * 4 ; -	static const U32 MAX_HTTP_QUEUE_SIZE = 8 ; - -	//determine the class of the texture: SMALL, MEDIUM, or LARGE. -	S32 type = LARGE_TEXTURE ; -	if(requested_size <= SMALL_TEXTURE_MAX_SIZE) -	{ -		type = SMALL_TEXTURE ; -	} -	else if(requested_size <= MEDIUM_TEXTURE_MAX_SIZE) -	{ -		type = MEDIUM_TEXTURE ; -	} - -	LLMutexLock lock(&mNetworkQueueMutex); - -	if(mHTTPTextureQueue.size() >= MAX_HTTP_QUEUE_SIZE)//if the http queue is full. -	{ -		if(!mHTTPThrottleFlag[type + 1]) -		{ -			for(S32 i = type + 1 ; i < TOTAL_TEXTURE_TYPES; i++) //block all requests with fetching size larger than this request.		 -			{ -				mHTTPThrottleFlag[i] = TRUE ;			 -			} -		} -		 -		return true ; -	} - -	return mHTTPThrottleFlag[type] ; //true if this request can not be inserted to the http queue. +	mHTTPTextureBits += received_size * 8; // Approximate - does not include header bits	  }  void LLTextureFetch::deleteRequest(const LLUUID& id, bool cancel) @@ -1888,12 +1821,19 @@ bool LLTextureFetch::updateRequestPriority(const LLUUID& id, F32 priority)  //virtual  S32 LLTextureFetch::update(U32 max_time_ms)  { -	S32 res; -	  	static LLCachedControl<F32> band_width(gSavedSettings,"ThrottleBandwidthKBPS"); -	mMaxBandwidth = band_width ; -	 -	res = LLWorkerThread::update(max_time_ms); + +	{ +		mNetworkQueueMutex.lock() ; +		mMaxBandwidth = band_width ; + +		gTextureList.sTextureBits += mHTTPTextureBits ; +		mHTTPTextureBits = 0 ; + +		mNetworkQueueMutex.unlock() ; +	} + +	S32 res = LLWorkerThread::update(max_time_ms);  	if (!mDebugPause)  	{ @@ -1909,7 +1849,6 @@ S32 LLTextureFetch::update(U32 max_time_ms)  			lldebugs << "processed: " << processed << " messages." << llendl;  		}  	} -	clearHTTPThrottleFlag();  	return res;  } diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index c31c38b04a..2024165e7e 100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -94,9 +94,7 @@ protected:  	void addToNetworkQueue(LLTextureFetchWorker* worker);  	void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel);  	void addToHTTPQueue(const LLUUID& id); -	void removeFromHTTPQueue(const LLUUID& id); -	bool isHTTPThrottled(S32 requested_size); -	void clearHTTPThrottleFlag(); +	void removeFromHTTPQueue(const LLUUID& id, S32 received_size = 0);  	void removeRequest(LLTextureFetchWorker* worker, bool cancel);  	// Called from worker thread (during doWork)  	void processCurlRequests();	 @@ -136,15 +134,7 @@ private:  	F32 mMaxBandwidth;  	LLTextureInfo mTextureInfo; -	enum -	{ -		SMALL_TEXTURE = 0 , //size <= 64 * 64 -		MEDIUM_TEXTURE,     //size <= 256 * 256 -		LARGE_TEXTURE,      //size > 256 * 256 -		DUMMY, -		TOTAL_TEXTURE_TYPES -	}; -	BOOL mHTTPThrottleFlag[TOTAL_TEXTURE_TYPES]; +	U32 mHTTPTextureBits;  };  #endif // LL_LLTEXTUREFETCH_H diff --git a/indra/newview/llviewerjointattachment.cpp b/indra/newview/llviewerjointattachment.cpp index 2b4b78d82d..da4960b69d 100644 --- a/indra/newview/llviewerjointattachment.cpp +++ b/indra/newview/llviewerjointattachment.cpp @@ -172,19 +172,7 @@ BOOL LLViewerJointAttachment::addObject(LLViewerObject* object)  		// re-connect object to the joint correctly  	} -	// Find the inventory item ID of the attached object -	LLNameValue* item_id_nv = object->getNVPair("AttachItemID"); -	if( item_id_nv ) -	{ -		const char* s = item_id_nv->getString(); -		if( s ) -		{ -			LLUUID item_id; -			item_id.set(s); -			object->setItemID(item_id); -			lldebugs << "getNVPair( AttachItemID ) = " << item_id << llendl; -		} -	} +	object->extractAttachmentItemID();  	mAttachedObjects.push_back(object);  	setupDrawable(object); @@ -303,7 +291,7 @@ void LLViewerJointAttachment::removeObject(LLViewerObject *object)  	{  		mUpdateXform = FALSE;  	} -	object->setItemID(LLUUID::null); +	object->setAttachmentItemID(LLUUID::null);  }  //----------------------------------------------------------------------------- @@ -429,7 +417,7 @@ const LLViewerObject *LLViewerJointAttachment::getAttachedObject(const LLUUID &o  		 ++iter)  	{  		const LLViewerObject* attached_object = (*iter); -		if (attached_object->getItemID() == object_id) +		if (attached_object->getAttachmentItemID() == object_id)  		{  			return attached_object;  		} @@ -444,7 +432,7 @@ LLViewerObject *LLViewerJointAttachment::getAttachedObject(const LLUUID &object_  		 ++iter)  	{  		LLViewerObject* attached_object = (*iter); -		if (attached_object->getItemID() == object_id) +		if (attached_object->getAttachmentItemID() == object_id)  		{  			return attached_object;  		} diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 40bf62acc9..2a72e255d0 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -6074,7 +6074,7 @@ static bool onEnableAttachmentLabel(LLUICtrl* ctrl, const LLSD& data)  				const LLViewerObject* attached_object = (*attachment_iter);  				if (attached_object)  				{ -					LLViewerInventoryItem* itemp = gInventory.getItem(attached_object->getItemID()); +					LLViewerInventoryItem* itemp = gInventory.getItem(attached_object->getAttachmentItemID());  					if (itemp)  					{  						label += std::string(" (") + itemp->getName() + std::string(")"); @@ -6193,14 +6193,14 @@ class LLAttachmentEnableDrop : public view_listener_t  				{  					// make sure item is in your inventory (it could be a delayed attach message being sent from the sim)  					// so check to see if the item is in the inventory already -					item = gInventory.getItem((*attachment_iter)->getItemID()); +					item = gInventory.getItem((*attachment_iter)->getAttachmentItemID());  					if (!item)  					{  						// Item does not exist, make an observer to enable the pie menu   						// when the item finishes fetching worst case scenario   						// if a fetch is already out there (being sent from a slow sim)  						// we refetch and there are 2 fetches -						LLWornItemFetchedObserver* worn_item_fetched = new LLWornItemFetchedObserver((*attachment_iter)->getItemID());		 +						LLWornItemFetchedObserver* worn_item_fetched = new LLWornItemFetchedObserver((*attachment_iter)->getAttachmentItemID());		  						worn_item_fetched->startFetch();  						gInventory.addObserver(worn_item_fetched);  					} @@ -6547,7 +6547,7 @@ void handle_dump_attachments(void*)  							!attached_object->mDrawable->isRenderType(0));  			LLVector3 pos;  			if (visible) pos = attached_object->mDrawable->getPosition(); -			llinfos << "ATTACHMENT " << key << ": item_id=" << attached_object->getItemID() +			llinfos << "ATTACHMENT " << key << ": item_id=" << attached_object->getAttachmentItemID()  					<< (attached_object ? " present " : " absent ")  					<< (visible ? "visible " : "invisible ")  					<<  " at " << pos diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 15bdf126c5..d3e6f01bc8 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -5233,3 +5233,28 @@ void LLViewerObject::resetChildrenPosition(const LLVector3& offset, BOOL simplif  	return ;  } +const LLUUID &LLViewerObject::getAttachmentItemID() const +{ +	return mAttachmentItemID; +} + +void LLViewerObject::setAttachmentItemID(const LLUUID &id) +{ +	mAttachmentItemID = id; +} + +const LLUUID &LLViewerObject::extractAttachmentItemID() +{ +	LLUUID item_id = LLUUID::null; +	LLNameValue* item_id_nv = getNVPair("AttachItemID"); +	if( item_id_nv ) +	{ +		const char* s = item_id_nv->getString(); +		if( s ) +		{ +			item_id.set(s); +		} +	} +	setAttachmentItemID(item_id); +	return getAttachmentItemID(); +} diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index be83fb7ef8..33fda9fa2d 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -678,11 +678,15 @@ protected:  private:	  	static S32 sNumObjects; +	//-------------------------------------------------------------------- +	// For objects that are attachments +	//--------------------------------------------------------------------  public: -	const LLUUID &getItemID() const { return mAttachmentItemID; } -	void setItemID(const LLUUID &id) { mAttachmentItemID = id; } +	const LLUUID &getAttachmentItemID() const; +	void setAttachmentItemID(const LLUUID &id); +	const LLUUID &extractAttachmentItemID(); // find&set the inventory item ID of the attached object  private: -	LLUUID mAttachmentItemID; // ItemID when item is in user inventory. +	LLUUID mAttachmentItemID; // ItemID of the associated object is in user inventory.  };  /////////////////// diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 6392aad248..455900eb3a 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2753,7 +2753,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)  {  	// update chat bubble  	//-------------------------------------------------------------------- -	// draw text label over characters head +	// draw text label over character's head  	//--------------------------------------------------------------------  	if (mChatTimer.getElapsedTimeF32() > BUBBLE_CHAT_TIME)  	{ @@ -5553,6 +5553,7 @@ BOOL LLVOAvatar::setParent(LLViewerObject* parent)  void LLVOAvatar::addChild(LLViewerObject *childp)  { +	childp->extractAttachmentItemID(); // find the inventory item this object is associated with.  	LLViewerObject::addChild(childp);  	if (childp->mDrawable)  	{ diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index bddde08ca9..95402c2e06 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -1067,7 +1067,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view  	// Should just be the last object added  	if (attachment->isObjectAttached(viewer_object))  	{ -		const LLUUID& attachment_id = viewer_object->getItemID(); +		const LLUUID& attachment_id = viewer_object->getAttachmentItemID();  		LLAppearanceMgr::instance().registerAttachment(attachment_id);  	} @@ -1077,7 +1077,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view  //virtual  BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)  { -	const LLUUID attachment_id = viewer_object->getItemID(); +	const LLUUID attachment_id = viewer_object->getAttachmentItemID();  	if (LLVOAvatar::detachObject(viewer_object))  	{  		// the simulator should automatically handle permission revocation diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index e2a5489fcf..4d916db714 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -527,6 +527,8 @@ bool LLWearableItemTypeNameComparator::doCompare(const LLPanelInventoryListItemB  	const LLWearableType::EType item_wearable_type2 = wearable_item2->getWearableType();  	if (item_wearable_type1 != item_wearable_type2) +		// If items are of different LLWearableType::EType types they are compared +		// by LLWearableType::EType. types order determined in LLWearableType::EType.  	{  		// If items are of different LLWearableType::EType types they are compared  		// by LLWearableType::EType. types order determined in LLWearableType::EType. @@ -549,6 +551,7 @@ LLWearableItemTypeNameComparator::ETypeListOrder LLWearableItemTypeNameComparato  {  	wearable_type_order_map_t::const_iterator const_it = mWearableOrder.find(item_type); +  	if(const_it == mWearableOrder.end())  	{  		llwarns<<"Absent information about order rang of items of "<<LLAssetType::getDesc(item_type)<<" type"<<llendl; @@ -562,25 +565,30 @@ bool LLWearableItemTypeNameComparator::sortAssetTypeByName(LLAssetType::EType it  {  	wearable_type_order_map_t::const_iterator const_it = mWearableOrder.find(item_type); +  	if(const_it == mWearableOrder.end())  	{  		llwarns<<"Absent information about sorting items of "<<LLAssetType::getDesc(item_type)<<" type"<<llendl;  		return true;  	} +  	return const_it->second.mSortAssetTypeByName;  	} +  bool LLWearableItemTypeNameComparator::sortWearableTypeByName(LLAssetType::EType item_type) const  {  	wearable_type_order_map_t::const_iterator const_it = mWearableOrder.find(item_type); +  	if(const_it == mWearableOrder.end())  	{  		llwarns<<"Absent information about sorting items of "<<LLAssetType::getDesc(item_type)<<" type"<<llendl;  		return true;  } +  	return const_it->second.mSortWearableTypeByName;  } diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h index d7970e0838..b5e64abad0 100644 --- a/indra/newview/llwearableitemslist.h +++ b/indra/newview/llwearableitemslist.h @@ -325,7 +325,7 @@ protected:  	/**  	 * All information about sort order is stored in mWearableOrder map  	 * -	 * mWearableOrder :      KYES              VALUES +	 * mWearableOrder :      KEYS              VALUES  	 *                  [LLAssetType] [struct LLWearableTypeOrder]  	 *  	 *--------------------------------------------------------------------------------------------- diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index 49b3b58113..354f1de85e 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -22,7 +22,7 @@          Done      </floater.string>      <layout_stack -     bottom="595" +     height="580"       follows="left|right|top|bottom"       layout="topleft"       left="10" @@ -30,6 +30,7 @@       top="20"       width="630">          <layout_panel +         height="570"           layout="topleft"           left_delta="0"           top_delta="0" @@ -37,13 +38,12 @@           user_resize="false"           width="630">              <web_browser -             bottom="-10"               follows="left|right|top|bottom"               layout="topleft"               left="0"               name="browser"               top="0" -             height="555" +             height="540"               width="630" />              <text               follows="bottom|left" @@ -51,7 +51,7 @@               layout="topleft"               left_delta="0"               name="status_text" -             top_pad="7" +             top_pad="10"               width="150" />              <text               visible="false" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 2aa34b746b..7a292ab943 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2282,6 +2282,9 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="accel-win-alt">Alt+</string>  	<string name="accel-win-shift">Shift+</string> +	<string name="Key_Esc">Esc</string> +	<string name="Key_Home">Home</string> +  	<!-- Previews -->  	<string name="FileSaved">File Saved</string>  	<string name="Receiving">Receiving</string> | 
