diff options
| author | Vadim Savchuk <vsavchuk@productengine.com> | 2010-05-05 21:10:51 +0300 | 
|---|---|---|
| committer | Vadim Savchuk <vsavchuk@productengine.com> | 2010-05-05 21:10:51 +0300 | 
| commit | 140c576c37e365bd1a616ae6eca1b7ce9f77ffab (patch) | |
| tree | 81e069b31fb25893cc3d8012116a66380455075d /indra/newview | |
| parent | f73f2c410e12abc2ccf3e0ae2719111cb285962a (diff) | |
| parent | e2e329b2e22dbab52d12ff309fb78533cb52c8e9 (diff) | |
Merge from default branch (first sync with dessie/viewer-public).
--HG--
branch : product-engine
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/llfloaterurlentry.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llinventorymodelbackgroundfetch.cpp | 178 | ||||
| -rw-r--r-- | indra/newview/llinventorymodelbackgroundfetch.h | 21 | ||||
| -rw-r--r-- | indra/newview/llviewerinventory.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llvoavatar.cpp | 27 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 2 | 
7 files changed, 149 insertions, 97 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index d689822e4e..db5da4c9e5 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1652,6 +1652,17 @@        <key>Value</key>        <string />      </map> +	<key>DebugAvatarRezTime</key> +	<map> +		<key>Comment</key> +		<string>Display times for avatars to resolve.</string> +		<key>Persist</key> +		<integer>1</integer> +		<key>Type</key> +		<string>Boolean</string> +		<key>Value</key> +		<integer>0</integer> +	</map>      <key>DebugBeaconLineWidth</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llfloaterurlentry.cpp b/indra/newview/llfloaterurlentry.cpp index 002d417e4c..0e802e9736 100644 --- a/indra/newview/llfloaterurlentry.cpp +++ b/indra/newview/llfloaterurlentry.cpp @@ -70,11 +70,6 @@ public:  		  completeAny(status, mime_type);  	  } -	  virtual void error( U32 status, const std::string& reason ) -	  { -		  completeAny(status, LLMIMETypes::getDefaultMimeType()); -	  } -  	  void completeAny(U32 status, const std::string& mime_type)  	  {  		  // Set empty type to none/none.  Empty string is reserved for legacy parcels diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp index cfbc2c3e05..0ff6ab2644 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.cpp +++ b/indra/newview/llinventorymodelbackgroundfetch.cpp @@ -46,26 +46,11 @@  const F32 MAX_TIME_FOR_SINGLE_FETCH = 10.f;  const S32 MAX_FETCH_RETRIES = 10; -// RN: for some reason, using std::queue in the header file confuses the compiler which thinks it's an xmlrpc_queue -static std::deque<LLUUID> sFetchQueue; -bool fetchQueueContainsNoDescendentsOf(const LLUUID& cat_id) -{ -	for (std::deque<LLUUID>::iterator it = sFetchQueue.begin(); -		 it != sFetchQueue.end(); ++it) -	{ -		const LLUUID& fetch_id = *it; -		if (gInventory.isObjectDescendentOf(fetch_id, cat_id)) -			return false; -	} -	return true; -} - -  LLInventoryModelBackgroundFetch::LLInventoryModelBackgroundFetch() :  	mBackgroundFetchActive(FALSE),  	mAllFoldersFetched(FALSE), -	mInventoryFetchStarted(FALSE), -	mLibraryFetchStarted(FALSE), +	mRecursiveInventoryFetchStarted(FALSE), +	mRecursiveLibraryFetchStarted(FALSE),  	mNumFetchRetries(0),  	mMinTimeBetweenFetches(0.3f),  	mMaxTimeBetweenFetches(10.f), @@ -80,12 +65,12 @@ LLInventoryModelBackgroundFetch::~LLInventoryModelBackgroundFetch()  bool LLInventoryModelBackgroundFetch::isBulkFetchProcessingComplete()  { -	return sFetchQueue.empty() && mBulkFetchCount<=0; +	return mFetchQueue.empty() && mBulkFetchCount<=0;  }  bool LLInventoryModelBackgroundFetch::libraryFetchStarted()  { -	return mLibraryFetchStarted; +	return mRecursiveLibraryFetchStarted;  }  bool LLInventoryModelBackgroundFetch::libraryFetchCompleted() @@ -100,7 +85,7 @@ bool LLInventoryModelBackgroundFetch::libraryFetchInProgress()  bool LLInventoryModelBackgroundFetch::inventoryFetchStarted()  { -	return mInventoryFetchStarted; +	return mRecursiveInventoryFetchStarted;  }  bool LLInventoryModelBackgroundFetch::inventoryFetchCompleted() @@ -123,41 +108,41 @@ BOOL LLInventoryModelBackgroundFetch::backgroundFetchActive()  	return mBackgroundFetchActive;  } -void LLInventoryModelBackgroundFetch::start(const LLUUID& cat_id) +void LLInventoryModelBackgroundFetch::start(const LLUUID& cat_id, BOOL recursive)  {  	if (!mAllFoldersFetched)  	{  		mBackgroundFetchActive = TRUE;  		if (cat_id.isNull())  		{ -			if (!mInventoryFetchStarted) +			if (!mRecursiveInventoryFetchStarted)  			{ -				mInventoryFetchStarted = TRUE; -				sFetchQueue.push_back(gInventory.getRootFolderID()); +				mRecursiveInventoryFetchStarted |= recursive; +				mFetchQueue.push_back(FetchQueueInfo(gInventory.getRootFolderID(), recursive));  				gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL);  			} -			if (!mLibraryFetchStarted) +			if (!mRecursiveLibraryFetchStarted)  			{ -				mLibraryFetchStarted = TRUE; -				sFetchQueue.push_back(gInventory.getLibraryRootFolderID()); +				mRecursiveLibraryFetchStarted |= recursive; +				mFetchQueue.push_back(FetchQueueInfo(gInventory.getLibraryRootFolderID(), recursive));  				gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL);  			}  		}  		else  		{  			// specific folder requests go to front of queue -			if (sFetchQueue.empty() || sFetchQueue.front() != cat_id) +			if (mFetchQueue.empty() || mFetchQueue.front().mCatUUID != cat_id)  			{ -				sFetchQueue.push_front(cat_id); +				mFetchQueue.push_front(FetchQueueInfo(cat_id, recursive));  				gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL);  			}  			if (cat_id == gInventory.getLibraryRootFolderID())  			{ -				mLibraryFetchStarted = TRUE; +				mRecursiveLibraryFetchStarted |= recursive;  			}  			if (cat_id == gInventory.getRootFolderID())  			{ -				mInventoryFetchStarted = TRUE; +				mRecursiveInventoryFetchStarted |= recursive;  			}  		}  	} @@ -166,7 +151,7 @@ void LLInventoryModelBackgroundFetch::start(const LLUUID& cat_id)  void LLInventoryModelBackgroundFetch::findLostItems()  {  	mBackgroundFetchActive = TRUE; -    sFetchQueue.push_back(LLUUID::null); +    mFetchQueue.push_back(FetchQueueInfo(LLUUID::null, TRUE));      gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL);  } @@ -183,8 +168,8 @@ void LLInventoryModelBackgroundFetch::stopBackgroundFetch()  void LLInventoryModelBackgroundFetch::setAllFoldersFetched()  { -	if (mInventoryFetchStarted && -		mLibraryFetchStarted) +	if (mRecursiveInventoryFetchStarted && +		mRecursiveLibraryFetchStarted)  	{  		mAllFoldersFetched = TRUE;  	} @@ -210,7 +195,7 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  		//DEPRECATED OLD CODE FOLLOWS.  		// no more categories to fetch, stop fetch process -		if (sFetchQueue.empty()) +		if (mFetchQueue.empty())  		{  			llinfos << "Inventory fetch completed" << llendl; @@ -232,7 +217,7 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  		while(1)  		{ -			if (sFetchQueue.empty()) +			if (mFetchQueue.empty())  			{  				break;  			} @@ -243,12 +228,13 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  				break;  			} -			LLViewerInventoryCategory* cat = gInventory.getCategory(sFetchQueue.front()); +			const FetchQueueInfo info = mFetchQueue.front(); +			LLViewerInventoryCategory* cat = gInventory.getCategory(info.mCatUUID);  			// category has been deleted, remove from queue.  			if (!cat)  			{ -				sFetchQueue.pop_front(); +				mFetchQueue.pop_front();  				continue;  			} @@ -271,10 +257,10 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  				}  			}  			// do I have all my children? -			else if (gInventory.isCategoryComplete(sFetchQueue.front())) +			else if (gInventory.isCategoryComplete(info.mCatUUID))  			{  				// finished with this category, remove from queue -				sFetchQueue.pop_front(); +				mFetchQueue.pop_front();  				// add all children to queue  				LLInventoryModel::cat_array_t* categories; @@ -284,7 +270,7 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  					 it != categories->end();  					 ++it)  				{ -					sFetchQueue.push_back((*it)->getUUID()); +					mFetchQueue.push_back(FetchQueueInfo((*it)->getUUID(),info.mRecursive));  				}  				// we received a response in less than the fast time @@ -303,13 +289,12 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  			{  				// received first packet, but our num descendants does not match db's num descendants  				// so try again later -				LLUUID fetch_id = sFetchQueue.front(); -				sFetchQueue.pop_front(); +				mFetchQueue.pop_front();  				if (mNumFetchRetries++ < MAX_FETCH_RETRIES)  				{  					// push on back of queue -					sFetchQueue.push_back(fetch_id); +					mFetchQueue.push_back(info);  				}  				mTimelyFetchPending = FALSE;  				mFetchTimer.reset(); @@ -334,20 +319,25 @@ void LLInventoryModelBackgroundFetch::incrBulkFetch(S16 fetching)  class LLInventoryModelFetchDescendentsResponder: public LLHTTPClient::Responder  { -	public: -		LLInventoryModelFetchDescendentsResponder(const LLSD& request_sd) : mRequestSD(request_sd) {}; -		//LLInventoryModelFetchDescendentsResponder() {}; -		void result(const LLSD& content); -		void error(U32 status, const std::string& reason); -	public: -		typedef std::vector<LLViewerInventoryCategory*> folder_ref_t; -	protected: -		LLSD mRequestSD; +public: +	LLInventoryModelFetchDescendentsResponder(const LLSD& request_sd, uuid_vec_t recursive_cats) :  +		mRequestSD(request_sd), +		mRecursiveCatUUIDs(recursive_cats) +	{}; +	//LLInventoryModelFetchDescendentsResponder() {}; +	void result(const LLSD& content); +	void error(U32 status, const std::string& reason); +protected: +	BOOL getIsRecursive(const LLUUID& cat_id) const; +private: +	LLSD mRequestSD; +	uuid_vec_t mRecursiveCatUUIDs; // Hack for storing away which cat fetches are recursive.  };  //If we get back a normal response, handle it here -void  LLInventoryModelFetchDescendentsResponder::result(const LLSD& content) +void LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)  { +	LLInventoryModelBackgroundFetch *fetcher = LLInventoryModelBackgroundFetch::getInstance();  	if (content.has("folders"))	  	{ @@ -412,11 +402,12 @@ void  LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)  			{	  				LLSD category = *category_it;  				tcategory->fromLLSD(category);  -							 -				if (LLInventoryModelBackgroundFetch::instance().inventoryFetchStarted() || -					LLInventoryModelBackgroundFetch::instance().libraryFetchStarted()) +				 +				const BOOL recursive = getIsRecursive(tcategory->getUUID()); +				 +				if (recursive)  				{ -					sFetchQueue.push_back(tcategory->getUUID()); +					fetcher->mFetchQueue.push_back(LLInventoryModelBackgroundFetch::FetchQueueInfo(tcategory->getUUID(), recursive));  				}  				else if ( !gInventory.isCategoryComplete(tcategory->getUUID()) )  				{ @@ -461,12 +452,12 @@ void  LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)  		}  	} -	LLInventoryModelBackgroundFetch::instance().incrBulkFetch(-1); +	fetcher->incrBulkFetch(-1); -	if (LLInventoryModelBackgroundFetch::instance().isBulkFetchProcessingComplete()) +	if (fetcher->isBulkFetchProcessingComplete())  	{  		llinfos << "Inventory fetch completed" << llendl; -		LLInventoryModelBackgroundFetch::instance().setAllFoldersFetched(); +		fetcher->setAllFoldersFetched();  	}  	gInventory.notifyObservers("fetchDescendents"); @@ -475,12 +466,14 @@ void  LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)  //If we get back an error (not found, etc...), handle it here  void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::string& reason)  { +	LLInventoryModelBackgroundFetch *fetcher = LLInventoryModelBackgroundFetch::getInstance(); +  	llinfos << "LLInventoryModelFetchDescendentsResponder::error "  		<< status << ": " << reason << llendl; -	LLInventoryModelBackgroundFetch::instance().incrBulkFetch(-1); +	fetcher->incrBulkFetch(-1); -	if (status==499)		//timed out.  Let's be awesome! +	if (status==499) // Timed out.  	{  		for(LLSD::array_const_iterator folder_it = mRequestSD["folders"].beginArray();  			folder_it != mRequestSD["folders"].endArray(); @@ -488,24 +481,30 @@ void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::str  		{	  			LLSD folder_sd = *folder_it;  			LLUUID folder_id = folder_sd["folder_id"]; -			sFetchQueue.push_front(folder_id); +			const BOOL recursive = getIsRecursive(folder_id); +			fetcher->mFetchQueue.push_front(LLInventoryModelBackgroundFetch::FetchQueueInfo(folder_id, recursive));  		}  	}  	else  	{ -		if (LLInventoryModelBackgroundFetch::instance().isBulkFetchProcessingComplete()) +		if (fetcher->isBulkFetchProcessingComplete())  		{ -			LLInventoryModelBackgroundFetch::instance().setAllFoldersFetched(); +			fetcher->setAllFoldersFetched();  		}  	}  	gInventory.notifyObservers("fetchDescendents");  } +BOOL LLInventoryModelFetchDescendentsResponder::getIsRecursive(const LLUUID& cat_id) const +{ +	return (std::find(mRecursiveCatUUIDs.begin(),mRecursiveCatUUIDs.end(), cat_id) != mRecursiveCatUUIDs.end()); +} +  //static   Bundle up a bunch of requests to send all at once.  void LLInventoryModelBackgroundFetch::bulkFetch(std::string url)  {  	//Background fetch is called from gIdleCallbacks in a loop until background fetch is stopped. -	//If there are items in sFetchQueue, we want to check the time since the last bulkFetch was  +	//If there are items in mFetchQueue, we want to check the time since the last bulkFetch was   	//sent.  If it exceeds our retry time, go ahead and fire off another batch.    	//Stopbackgroundfetch will be run from the Responder instead of here.   @@ -528,11 +527,16 @@ void LLInventoryModelBackgroundFetch::bulkFetch(std::string url)  	U32 sort_order = gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER) & 0x1; +	uuid_vec_t recursive_cats; +  	LLSD body;  	LLSD body_lib; -	while (!(sFetchQueue.empty()) && (folder_count < max_batch_size)) + +	while (!(mFetchQueue.empty()) && (folder_count < max_batch_size))  	{ -        if (sFetchQueue.front().isNull()) //DEV-17797 +		const FetchQueueInfo& fetch_info = mFetchQueue.front(); +		const LLUUID &cat_id = fetch_info.mCatUUID; +        if (cat_id.isNull()) //DEV-17797          {  			LLSD folder_sd;  			folder_sd["folder_id"]		= LLUUID::null.asString(); @@ -545,7 +549,7 @@ void LLInventoryModelBackgroundFetch::bulkFetch(std::string url)          }          else          { -		    LLViewerInventoryCategory* cat = gInventory.getCategory(sFetchQueue.front()); +		    const LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id);  		    if (cat)  		    { @@ -564,9 +568,9 @@ void LLInventoryModelBackgroundFetch::bulkFetch(std::string url)  					    body["folders"].append(folder_sd);  				    folder_count++;  			    } -			    if (mInventoryFetchStarted || mLibraryFetchStarted) -			    {	//Already have this folder but append child folders to list. -				    // add all children to queue +				// May already have this folder, but append child folders to list. +			    if (fetch_info.mRecursive) +			    {	  					LLInventoryModel::cat_array_t* categories;  					LLInventoryModel::item_array_t* items;  					gInventory.getDirectDescendentsOf(cat->getUUID(), categories, items); @@ -574,12 +578,15 @@ void LLInventoryModelBackgroundFetch::bulkFetch(std::string url)  						 it != categories->end();  						 ++it)  					{ -						sFetchQueue.push_back((*it)->getUUID()); +						mFetchQueue.push_back(FetchQueueInfo((*it)->getUUID(), fetch_info.mRecursive));  				    }  			    }  		    }          } -		sFetchQueue.pop_front(); +		if (fetch_info.mRecursive) +			recursive_cats.push_back(cat_id); + +		mFetchQueue.pop_front();  	}  	if (folder_count > 0) @@ -587,12 +594,15 @@ void LLInventoryModelBackgroundFetch::bulkFetch(std::string url)  		mBulkFetchCount++;  		if (body["folders"].size())  		{ -			LLHTTPClient::post(url, body, new LLInventoryModelFetchDescendentsResponder(body),300.0); +			LLInventoryModelFetchDescendentsResponder *fetcher = new LLInventoryModelFetchDescendentsResponder(body, recursive_cats); +			LLHTTPClient::post(url, body, fetcher, 300.0);  		}  		if (body_lib["folders"].size())  		{  			std::string url_lib = gAgent.getRegion()->getCapability("FetchLibDescendents"); -			LLHTTPClient::post(url_lib, body_lib, new LLInventoryModelFetchDescendentsResponder(body_lib),300.0); +			 +			LLInventoryModelFetchDescendentsResponder *fetcher = new LLInventoryModelFetchDescendentsResponder(body_lib, recursive_cats); +			LLHTTPClient::post(url_lib, body_lib, fetcher, 300.0);  		}  		mFetchTimer.reset();  	} @@ -601,3 +611,17 @@ void LLInventoryModelBackgroundFetch::bulkFetch(std::string url)  		setAllFoldersFetched();  	}  } + +bool LLInventoryModelBackgroundFetch::fetchQueueContainsNoDescendentsOf(const LLUUID& cat_id) const +{ +	for (fetch_queue_t::const_iterator it = mFetchQueue.begin(); +		 it != mFetchQueue.end(); ++it) +	{ +		const LLUUID& fetch_id = (*it).mCatUUID; +		if (gInventory.isObjectDescendentOf(fetch_id, cat_id)) +			return false; +	} +	return true; +} + + diff --git a/indra/newview/llinventorymodelbackgroundfetch.h b/indra/newview/llinventorymodelbackgroundfetch.h index 94606fae23..c1e37eda8f 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.h +++ b/indra/newview/llinventorymodelbackgroundfetch.h @@ -68,13 +68,15 @@ class LLInventoryCollectFunctor;  class LLInventoryModelBackgroundFetch : public LLSingleton<LLInventoryModelBackgroundFetch>  { +	friend class LLInventoryModelFetchDescendentsResponder; +  public:  	LLInventoryModelBackgroundFetch();  	~LLInventoryModelBackgroundFetch();  	// Start and stop background breadth-first fetching of inventory contents.  	// This gets triggered when performing a filter-search -	void start(const LLUUID& cat_id = LLUUID::null); +	void start(const LLUUID& cat_id = LLUUID::null, BOOL recursive = TRUE);  	BOOL backgroundFetchActive();  	bool isEverythingFetched();  	void incrBulkFetch(S16 fetching); @@ -98,9 +100,20 @@ public:  	static void backgroundFetchCB(void*); // background fetch idle function  	void backgroundFetch(); +	struct FetchQueueInfo +	{ +		FetchQueueInfo(const LLUUID& id, BOOL recursive) : +			mCatUUID(id), mRecursive(recursive) +		{ +		} +		LLUUID mCatUUID; +		BOOL mRecursive; +	}; +protected: +	bool fetchQueueContainsNoDescendentsOf(const LLUUID& cat_id) const;  private: - 	BOOL mInventoryFetchStarted; -	BOOL mLibraryFetchStarted; + 	BOOL mRecursiveInventoryFetchStarted; +	BOOL mRecursiveLibraryFetchStarted;  	BOOL mAllFoldersFetched;  	// completing the fetch once per session should be sufficient @@ -113,6 +126,8 @@ private:  	F32 mMinTimeBetweenFetches;  	F32 mMaxTimeBetweenFetches; +	typedef std::deque<FetchQueueInfo> fetch_queue_t; +	fetch_queue_t mFetchQueue;  };  #endif // LL_LLINVENTORYMODELBACKGROUNDFETCH_H diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index b39ee8b2e0..ed3d6a0464 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -587,7 +587,7 @@ bool LLViewerInventoryCategory::fetch()  		std::string url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents");  		if (!url.empty()) //Capability found.  Build up LLSD and use it.  		{ -			LLInventoryModelBackgroundFetch::instance().start(mUUID);			 +			LLInventoryModelBackgroundFetch::instance().start(mUUID, false);			  		}  		else  		{	//Deprecated, but if we don't have a capability, use the old system. diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 69d2ef7dd7..4ed2147d3b 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -102,8 +102,6 @@  #include <boost/lexical_cast.hpp> -#define DISPLAY_AVATAR_LOAD_TIMES -  using namespace LLVOAvatarDefines;  //----------------------------------------------------------------------------- @@ -5474,6 +5472,14 @@ LLViewerJointAttachment* LLVOAvatar::getTargetAttachmentPoint(LLViewerObject* vi  {  	S32 attachmentID = ATTACHMENT_ID_FROM_STATE(viewer_object->getState()); +	// This should never happen unless the server didn't process the attachment point +	// correctly, but putting this check in here to be safe. +	if (attachmentID & ATTACHMENT_ADD) +	{ +		llwarns << "Got an attachment with ATTACHMENT_ADD mask, removing ( attach pt:" << attachmentID << " )" << llendl; +		attachmentID &= ~ATTACHMENT_ADD; +	} +	  	LLViewerJointAttachment* attachment = get_if_there(mAttachmentPoints, attachmentID, (LLViewerJointAttachment*)NULL);  	if (!attachment) @@ -5885,16 +5891,17 @@ BOOL LLVOAvatar::processFullyLoadedChange(bool loading)  	mFullyLoaded = (mFullyLoadedTimer.getElapsedTimeF32() > PAUSE); -#ifdef DISPLAY_AVATAR_LOAD_TIMES -	if (!mPreviousFullyLoaded && !loading && mFullyLoaded) +	if (gSavedSettings.getBOOL("DebugAvatarRezTime"))  	{ -		llinfos << "Avatar '" << getFullname() << "' resolved in " << mRuthDebugTimer.getElapsedTimeF32() << " seconds." << llendl; -		LLSD args; -		args["TIME"] = llformat("%d",(U32)mRuthDebugTimer.getElapsedTimeF32()); -		args["NAME"] = getFullname(); -		LLNotificationsUtil::add("AvatarRezNotification",args); +		if (!mPreviousFullyLoaded && !loading && mFullyLoaded) +		{ +			llinfos << "Avatar '" << getFullname() << "' resolved in " << mRuthDebugTimer.getElapsedTimeF32() << " seconds." << llendl; +			LLSD args; +			args["TIME"] = llformat("%d",(U32)mRuthDebugTimer.getElapsedTimeF32()); +			args["NAME"] = getFullname(); +			LLNotificationsUtil::add("AvatarRezNotification",args); +		}  	} -#endif  	// did our loading state "change" from last call?  	const S32 UPDATE_RATE = 30; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 2d2fc38573..bdcd648689 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -265,7 +265,7 @@ BOOL	LLPipeline::sRenderParticleBeacons = FALSE;  BOOL	LLPipeline::sRenderSoundBeacons = FALSE;  BOOL	LLPipeline::sRenderBeacons = FALSE;  BOOL	LLPipeline::sRenderHighlight = TRUE; -BOOL	LLPipeline::sForceOldBakedUpload = FALSE; +BOOL	LLPipeline::sForceOldBakedUpload = TRUE;  S32		LLPipeline::sUseOcclusion = 0;  BOOL	LLPipeline::sDelayVBUpdate = TRUE;  BOOL	LLPipeline::sFastAlpha = TRUE; | 
