diff options
| -rw-r--r-- | indra/newview/llagent.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llappviewer.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/llappviewer.h | 2 | ||||
| -rw-r--r-- | indra/newview/lltexturefetch.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/lltexturefetch.h | 2 | ||||
| -rw-r--r-- | indra/newview/llviewerassetstats.cpp | 36 | ||||
| -rw-r--r-- | indra/newview/llviewerassetstats.h | 31 | ||||
| -rw-r--r-- | indra/newview/llviewerregion.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/tests/llviewerassetstats_test.cpp | 88 | 
9 files changed, 102 insertions, 95 deletions
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index e2b1c89402..d5eec0e151 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -639,7 +639,7 @@ void LLAgent::setRegion(LLViewerRegion *regionp)  		}  		// Pass new region along to metrics components that care about this level of detail. -		LLAppViewer::metricsUpdateRegion(regionp->getRegionID()); +		LLAppViewer::metricsUpdateRegion(regionp->getHandle());  	}  	mRegionp = regionp; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index bf79523078..d73f3cd2fc 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -4579,20 +4579,20 @@ bool LLAppViewer::getMasterSystemAudioMute()   * on the main thread, we need to send a message to move the data over safely   * and cheaply (amortized over a run).   */ -void LLAppViewer::metricsUpdateRegion(const LLUUID & region_id) +void LLAppViewer::metricsUpdateRegion(U64 region_handle)  { -	if (! region_id.isNull()) +	if (0 != region_handle)  	{ -		LLViewerAssetStatsFF::set_region_main(region_id); +		LLViewerAssetStatsFF::set_region_main(region_handle);  		if (LLAppViewer::sTextureFetch)  		{  			// Send a region update message into 'thread1' to get the new region. -			LLAppViewer::sTextureFetch->commandSetRegion(region_id); +			LLAppViewer::sTextureFetch->commandSetRegion(region_handle);  		}  		else  		{  			// No 'thread1', a.k.a. TextureFetch, so update directly -			LLViewerAssetStatsFF::set_region_thread1(region_id); +			LLViewerAssetStatsFF::set_region_thread1(region_handle);  		}  	}  } diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index 27c104626a..6b83f2d80c 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -169,7 +169,7 @@ public:  	virtual bool getMasterSystemAudioMute();  	// Metrics policy helper statics. -	static void metricsUpdateRegion(const LLUUID & region_id); +	static void metricsUpdateRegion(U64 region_handle);  	static void metricsSend(bool enable_reporting);  protected: diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index f5e2e35e1e..3793085e55 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -506,9 +506,9 @@ public:  class TFReqSetRegion : public TFRequest  {  public: -	TFReqSetRegion(const LLUUID & region_id) +	TFReqSetRegion(U64 region_handle)  		: TFRequest(), -		  mRegionID(region_id) +		  mRegionHandle(region_handle)  		{}  	TFReqSetRegion & operator=(const TFReqSetRegion &);	// Not defined @@ -518,7 +518,7 @@ public:  	virtual bool doWork(LLTextureFetch * fetcher);  public: -	const LLUUID mRegionID; +	const U64 mRegionHandle;  }; @@ -2654,9 +2654,9 @@ void LLTextureFetch::dump()  // cross-thread command methods -void LLTextureFetch::commandSetRegion(const LLUUID & region_id) +void LLTextureFetch::commandSetRegion(U64 region_handle)  { -	TFReqSetRegion * req = new TFReqSetRegion(region_id); +	TFReqSetRegion * req = new TFReqSetRegion(region_handle);  	cmdEnqueue(req);  } @@ -2735,7 +2735,7 @@ namespace  bool  TFReqSetRegion::doWork(LLTextureFetch *)  { -	LLViewerAssetStatsFF::set_region_thread1(mRegionID); +	LLViewerAssetStatsFF::set_region_thread1(mRegionHandle);  	return true;  } @@ -2806,9 +2806,9 @@ TFReqSendMetrics::doWork(LLTextureFetch * fetcher)  	// still being careful, regardless.  	LLSD & main_stats = *mReportMain; -	LLSD thread1_stats = gViewerAssetStatsThread1->asLLSD();			// 'duration' & 'regions' from here -	thread1_stats["message"] = "ViewerAssetMetrics"; -	thread1_stats["sequence"] = report_sequence; +	LLSD thread1_stats = gViewerAssetStatsThread1->asLLSD();			// 'duration' & 'regions' from this LLSD +	thread1_stats["message"] = "ViewerAssetMetrics";					// Identifies the type of metrics +	thread1_stats["sequence"] = report_sequence;						// Sequence number  	thread1_stats["initial"] = ! reporting_started;						// Initial data from viewer  	thread1_stats["break"] = LLTextureFetch::svMetricsDataBreak;		// Break in data prior to this report diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index bad0a1498f..03e2462058 100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -86,7 +86,7 @@ public:  	LLTextureInfo* getTextureInfo() { return &mTextureInfo; }  	// Commands available to other threads to control metrics gathering operations. -	void commandSetRegion(const LLUUID & region_id); +	void commandSetRegion(U64 region_handle);  	void commandSendMetrics(const std::string & caps_url, LLSD * report_main);  	void commandDataBreak(); diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp index 502a3aa340..cc41a95893 100644 --- a/indra/newview/llviewerassetstats.cpp +++ b/indra/newview/llviewerassetstats.cpp @@ -130,6 +130,7 @@ LLViewerAssetStats::PerRegionStats::accumulateTime(duration_t now)  // LLViewerAssetStats class definition  // ------------------------------------------------------  LLViewerAssetStats::LLViewerAssetStats() +	: mRegionHandle(U64(0))  {  	reset();  } @@ -149,11 +150,11 @@ LLViewerAssetStats::reset()  	}  	else  	{ -		mCurRegionStats = new PerRegionStats(mRegionID); +		mCurRegionStats = new PerRegionStats(mRegionHandle);  	}  	// And add reference to map -	mRegionStats[mRegionID] = mCurRegionStats; +	mRegionStats[mRegionHandle] = mCurRegionStats;  	// Start timestamp consistent with per-region collector  	mResetTimestamp = mCurRegionStats->mStartTimestamp; @@ -161,9 +162,9 @@ LLViewerAssetStats::reset()  void -LLViewerAssetStats::setRegionID(const LLUUID & region_id) +LLViewerAssetStats::setRegion(region_handle_t region_handle)  { -	if (region_id == mRegionID) +	if (region_handle == mRegionHandle)  	{  		// Already active, ignore.  		return; @@ -174,19 +175,19 @@ LLViewerAssetStats::setRegionID(const LLUUID & region_id)  	mCurRegionStats->accumulateTime(now);  	// Prepare new set -	PerRegionContainer::iterator new_stats = mRegionStats.find(region_id); +	PerRegionContainer::iterator new_stats = mRegionStats.find(region_handle);  	if (mRegionStats.end() == new_stats)  	{  		// Haven't seen this region_id before, create a new block and make it current. -		mCurRegionStats = new PerRegionStats(region_id); -		mRegionStats[region_id] = mCurRegionStats; +		mCurRegionStats = new PerRegionStats(region_handle); +		mRegionStats[region_handle] = mCurRegionStats;  	}  	else  	{  		mCurRegionStats = new_stats->second;  	}  	mCurRegionStats->mStartTimestamp = now; -	mRegionID = region_id; +	mRegionHandle = region_handle;  } @@ -245,9 +246,9 @@ LLViewerAssetStats::asLLSD()  		 mRegionStats.end() != it;  		 ++it)  	{ -		if (it->first.isNull()) +		if (0 == it->first)  		{ -			// Never emit NULL UUID in results. +			// Never emit NULL UUID/handle in results.  			continue;  		} @@ -269,8 +270,11 @@ LLViewerAssetStats::asLLSD()  		}  		reg_stat["duration"] = LLSD::Real(stats.mTotalTime * 1.0e-6); -		 -		regions[it->first.asString()] = reg_stat; +		std::stringstream reg_handle; +		reg_handle.width(16); +		reg_handle.fill('0'); +		reg_handle << std::hex << it->first; +		regions[reg_handle.str()] = reg_stat;  	}  	LLSD ret = LLSD::emptyMap(); @@ -487,12 +491,12 @@ namespace LLViewerAssetStatsFF  // 'main' thread - initial program thread  void -set_region_main(const LLUUID & region_id) +set_region_main(LLViewerAssetStats::region_handle_t region_handle)  {  	if (! gViewerAssetStatsMain)  		return; -	gViewerAssetStatsMain->setRegionID(region_id); +	gViewerAssetStatsMain->setRegion(region_handle);  }  void @@ -526,12 +530,12 @@ record_response_main(LLViewerAssetType::EType at, bool with_http, bool is_temp,  // 'thread1' - should be for TextureFetch thread  void -set_region_thread1(const LLUUID & region_id) +set_region_thread1(LLViewerAssetStats::region_handle_t region_handle)  {  	if (! gViewerAssetStatsThread1)  		return; -	gViewerAssetStatsThread1->setRegionID(region_id); +	gViewerAssetStatsThread1->setRegion(region_handle);  }  void diff --git a/indra/newview/llviewerassetstats.h b/indra/newview/llviewerassetstats.h index b0fb17ae17..ed2d0f3922 100644 --- a/indra/newview/llviewerassetstats.h +++ b/indra/newview/llviewerassetstats.h @@ -101,7 +101,14 @@ public:  	 * fetcher class, LLTextureFetch.  	 */  	typedef U64 duration_t; -	 + +	/** +	 * Type for the region identifier used in stats.  Currently uses +	 * the region handle's type (a U64) rather than the regions's LLUUID +	 * as the latter isn't available immediately. +	 */ +	typedef U64 region_handle_t; +  	/**  	 * @brief Collected data for a single region visited by the avatar.  	 * @@ -112,9 +119,9 @@ public:  	class PerRegionStats : public LLRefCount  	{  	public: -		PerRegionStats(const LLUUID & region_id) +		PerRegionStats(const region_handle_t region_handle)  			: LLRefCount(), -			  mRegionID(region_id) +			  mRegionHandle(region_handle)  			{  				reset();  			} @@ -127,7 +134,7 @@ public:  		void accumulateTime(duration_t now);  	public: -		LLUUID mRegionID; +		region_handle_t mRegionHandle;  		duration_t mTotalTime;  		duration_t mStartTimestamp; @@ -151,14 +158,14 @@ public:  	// Set hidden region argument and establish context for subsequent  	// collection calls. -	void setRegionID(const LLUUID & region_id); +	void setRegion(region_handle_t region_handle);  	// Asset GET Requests  	void recordGetEnqueued(LLViewerAssetType::EType at, bool with_http, bool is_temp);  	void recordGetDequeued(LLViewerAssetType::EType at, bool with_http, bool is_temp);  	void recordGetServiced(LLViewerAssetType::EType at, bool with_http, bool is_temp, duration_t duration); -	// Retrieve current metrics for all visited regions (NULL region UUID excluded) +	// Retrieve current metrics for all visited regions (NULL region UUID/handle excluded)      // Returned LLSD is structured as follows:  	//  	// &stats_group = { @@ -173,7 +180,7 @@ public:  	// {  	//   duration: int  	//   regions: { -	//     $: { +	//     $: {			// Keys are strings of the region's handle in hex  	//       duration:                 : int,  	//       get_texture_temp_http     : &stats_group,  	//       get_texture_temp_udp      : &stats_group, @@ -198,12 +205,12 @@ public:  	static void mergeRegionsLLSD(const LLSD & src, LLSD & dst);  protected: -	typedef std::map<LLUUID, LLPointer<PerRegionStats> > PerRegionContainer; +	typedef std::map<region_handle_t, LLPointer<PerRegionStats> > PerRegionContainer;  	// Region of the currently-active region.  Always valid but may -	// be a NULL UUID after construction or when explicitly set.  Unchanged +	// be zero after construction or when explicitly set.  Unchanged  	// by a reset() call. -	LLUUID mRegionID; +	region_handle_t mRegionHandle;  	// Pointer to metrics collection for currently-active region.  Always  	// valid and unchanged after reset() though contents will be changed. @@ -262,7 +269,7 @@ inline LLViewerAssetStats::duration_t get_timestamp()  /**   * Region context, event and duration loggers for the Main thread.   */ -void set_region_main(const LLUUID & region_id); +void set_region_main(LLViewerAssetStats::region_handle_t region_handle);  void record_enqueue_main(LLViewerAssetType::EType at, bool with_http, bool is_temp); @@ -275,7 +282,7 @@ void record_response_main(LLViewerAssetType::EType at, bool with_http, bool is_t  /**   * Region context, event and duration loggers for Thread 1.   */ -void set_region_thread1(const LLUUID & region_id); +void set_region_thread1(LLViewerAssetStats::region_handle_t region_handle);  void record_enqueue_thread1(LLViewerAssetType::EType at, bool with_http, bool is_temp); diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 717ef40465..79b45a459f 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1341,14 +1341,6 @@ void LLViewerRegion::unpackRegionHandshake()  	msg->nextBlock("RegionInfo");  	msg->addU32("Flags", 0x0 );  	msg->sendReliable(host); - -	// Inform metrics when a region associated with an agent -	// receives a regionID. -	if (gAgent.getRegion() == this) -	{ -		// Region is active in agent, tell metrics about the region ID -		LLAppViewer::metricsUpdateRegion(region_id); -	}  }  void LLViewerRegion::setSeedCapability(const std::string& url) diff --git a/indra/newview/tests/llviewerassetstats_test.cpp b/indra/newview/tests/llviewerassetstats_test.cpp index 8bedd2c860..153056b3cd 100644 --- a/indra/newview/tests/llviewerassetstats_test.cpp +++ b/indra/newview/tests/llviewerassetstats_test.cpp @@ -78,6 +78,10 @@ static const char * sub_keys[] =  static const LLUUID region1("4e2d81a3-6263-6ffe-ad5c-8ce04bee07e8");  static const LLUUID region2("68762cc8-b68b-4e45-854b-e830734f2d4a"); +static const U64 region1_handle(0x00000401000003f7ULL); +static const U64 region2_handle(0x000003f800000420ULL); +static const std::string region1_handle_str("00000401000003f7"); +static const std::string region2_handle_str("000003f800000420");  #if 0  static bool @@ -144,12 +148,12 @@ namespace tut  		ensure("Stat-less LLSD initially", is_no_stats_map(sd_full));  		// Once the region is set, we will get a response even with no data collection -		it->setRegionID(region1); +		it->setRegion(region1_handle);  		sd_full = it->asLLSD();  		ensure("Correct single-key LLSD map root", is_double_key_map(sd_full, "duration", "regions")); -		ensure("Correct single-key LLSD map regions", is_single_key_map(sd_full["regions"], region1.asString())); +		ensure("Correct single-key LLSD map regions", is_single_key_map(sd_full["regions"], region1_handle_str)); -		LLSD sd = sd_full["regions"][region1.asString()]; +		LLSD sd = sd_full["regions"][region1_handle_str];  		delete it; @@ -175,12 +179,12 @@ namespace tut  	void tst_viewerassetstats_index_object_t::test<3>()  	{  		LLViewerAssetStats * it = new LLViewerAssetStats(); -		it->setRegionID(region1); +		it->setRegion(region1_handle);  		LLSD sd = it->asLLSD();  		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration")); -		ensure("Correct single-key LLSD map regions", is_single_key_map(sd["regions"], region1.asString())); -		sd = sd[region1.asString()]; +		ensure("Correct single-key LLSD map regions", is_single_key_map(sd["regions"], region1_handle_str)); +		sd = sd[region1_handle_str];  		delete it; @@ -194,7 +198,7 @@ namespace tut  	void tst_viewerassetstats_index_object_t::test<4>()  	{  		gViewerAssetStatsMain = new LLViewerAssetStats(); -		LLViewerAssetStatsFF::set_region_main(region1); +		LLViewerAssetStatsFF::set_region_main(region1_handle);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);  		LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, false, false); @@ -204,8 +208,8 @@ namespace tut  		LLSD sd = gViewerAssetStatsMain->asLLSD();  		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration")); -		ensure("Correct single-key LLSD map regions", is_single_key_map(sd["regions"], region1.asString())); -		sd = sd["regions"][region1.asString()]; +		ensure("Correct single-key LLSD map regions", is_single_key_map(sd["regions"], region1_handle_str)); +		sd = sd["regions"][region1_handle_str];  		// Check a few points on the tree for content  		ensure("sd[get_texture_non_temp_udp][enqueued] is 1", (1 == sd["get_texture_non_temp_udp"]["enqueued"].asInteger())); @@ -217,7 +221,7 @@ namespace tut  		// Reset and check zeros...  		// Reset leaves current region in place  		gViewerAssetStatsMain->reset(); -		sd = gViewerAssetStatsMain->asLLSD()["regions"][region1.asString()]; +		sd = gViewerAssetStatsMain->asLLSD()["regions"][region1_handle_str];  		delete gViewerAssetStatsMain;  		gViewerAssetStatsMain = NULL; @@ -232,7 +236,7 @@ namespace tut  	{  		gViewerAssetStatsThread1 = new LLViewerAssetStats();  		gViewerAssetStatsMain = new LLViewerAssetStats(); -		LLViewerAssetStatsFF::set_region_main(region1); +		LLViewerAssetStatsFF::set_region_main(region1_handle);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);  		LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, false, false); @@ -244,8 +248,8 @@ namespace tut  		ensure("Other collector is empty", is_no_stats_map(sd));  		sd = gViewerAssetStatsMain->asLLSD();  		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration")); -		ensure("Correct single-key LLSD map regions", is_single_key_map(sd["regions"], region1.asString())); -		sd = sd["regions"][region1.asString()]; +		ensure("Correct single-key LLSD map regions", is_single_key_map(sd["regions"], region1_handle_str)); +		sd = sd["regions"][region1_handle_str];  		// Check a few points on the tree for content  		ensure("sd[get_texture_non_temp_udp][enqueued] is 1", (1 == sd["get_texture_non_temp_udp"]["enqueued"].asInteger())); @@ -257,7 +261,7 @@ namespace tut  		// Reset and check zeros...  		// Reset leaves current region in place  		gViewerAssetStatsMain->reset(); -		sd = gViewerAssetStatsMain->asLLSD()["regions"][region1.asString()]; +		sd = gViewerAssetStatsMain->asLLSD()["regions"][region1_handle_str];  		delete gViewerAssetStatsMain;  		gViewerAssetStatsMain = NULL; @@ -274,7 +278,7 @@ namespace tut  	{  		gViewerAssetStatsMain = new LLViewerAssetStats(); -		LLViewerAssetStatsFF::set_region_main(region1); +		LLViewerAssetStatsFF::set_region_main(region1_handle);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);  		LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, false, false); @@ -282,7 +286,7 @@ namespace tut  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_BODYPART, false, false);  		LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, false, false); -		LLViewerAssetStatsFF::set_region_main(region2); +		LLViewerAssetStatsFF::set_region_main(region2_handle);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false); @@ -294,9 +298,9 @@ namespace tut  		// std::cout << sd << std::endl;  		ensure("Correct double-key LLSD map root", is_double_key_map(sd, "duration", "regions")); -		ensure("Correct double-key LLSD map regions", is_double_key_map(sd["regions"], region1.asString(), region2.asString())); -		LLSD sd1 = sd["regions"][region1.asString()]; -		LLSD sd2 = sd["regions"][region2.asString()]; +		ensure("Correct double-key LLSD map regions", is_double_key_map(sd["regions"], region1_handle_str, region2_handle_str)); +		LLSD sd1 = sd["regions"][region1_handle_str]; +		LLSD sd2 = sd["regions"][region2_handle_str];  		// Check a few points on the tree for content  		ensure("sd1[get_texture_non_temp_udp][enqueued] is 1", (1 == sd1["get_texture_non_temp_udp"]["enqueued"].asInteger())); @@ -315,8 +319,8 @@ namespace tut  		gViewerAssetStatsMain->reset();  		sd = gViewerAssetStatsMain->asLLSD();  		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration")); -		ensure("Correct single-key LLSD map regions", is_single_key_map(sd["regions"], region2.asString())); -		sd2 = sd["regions"][region2.asString()]; +		ensure("Correct single-key LLSD map regions", is_single_key_map(sd["regions"], region2_handle_str)); +		sd2 = sd["regions"][region2_handle_str];  		delete gViewerAssetStatsMain;  		gViewerAssetStatsMain = NULL; @@ -331,7 +335,7 @@ namespace tut  	{  		gViewerAssetStatsMain = new LLViewerAssetStats(); -		LLViewerAssetStatsFF::set_region_main(region1); +		LLViewerAssetStatsFF::set_region_main(region1_handle);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);  		LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, false, false); @@ -339,14 +343,14 @@ namespace tut  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_BODYPART, false, false);  		LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, false, false); -		LLViewerAssetStatsFF::set_region_main(region2); +		LLViewerAssetStatsFF::set_region_main(region2_handle);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false); -		LLViewerAssetStatsFF::set_region_main(region1); +		LLViewerAssetStatsFF::set_region_main(region1_handle);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, true, true);  		LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, true, true); @@ -354,7 +358,7 @@ namespace tut  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_BODYPART, false, false);  		LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_BODYPART, false, false); -		LLViewerAssetStatsFF::set_region_main(region2); +		LLViewerAssetStatsFF::set_region_main(region2_handle);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_GESTURE, false, false); @@ -364,9 +368,9 @@ namespace tut  		LLSD sd = gViewerAssetStatsMain->asLLSD();  		ensure("Correct double-key LLSD map root", is_double_key_map(sd, "duration", "regions")); -		ensure("Correct double-key LLSD map regions", is_double_key_map(sd["regions"], region1.asString(), region2.asString())); -		LLSD sd1 = sd["regions"][region1.asString()]; -		LLSD sd2 = sd["regions"][region2.asString()]; +		ensure("Correct double-key LLSD map regions", is_double_key_map(sd["regions"], region1_handle_str, region2_handle_str)); +		LLSD sd1 = sd["regions"][region1_handle_str]; +		LLSD sd2 = sd["regions"][region2_handle_str];  		// Check a few points on the tree for content  		ensure("sd1[get_texture_non_temp_udp][enqueued] is 1", (1 == sd1["get_texture_non_temp_udp"]["enqueued"].asInteger())); @@ -385,8 +389,8 @@ namespace tut  		gViewerAssetStatsMain->reset();  		sd = gViewerAssetStatsMain->asLLSD();  		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "duration", "regions")); -		ensure("Correct single-key LLSD map regions", is_single_key_map(sd["regions"], region2.asString())); -		sd2 = sd["regions"][region2.asString()]; +		ensure("Correct single-key LLSD map regions", is_single_key_map(sd["regions"], region2_handle_str)); +		sd2 = sd["regions"][region2_handle_str];  		delete gViewerAssetStatsMain;  		gViewerAssetStatsMain = NULL; @@ -401,7 +405,7 @@ namespace tut  	{  		gViewerAssetStatsThread1 = new LLViewerAssetStats();  		gViewerAssetStatsMain = new LLViewerAssetStats(); -		LLViewerAssetStatsFF::set_region_main(region1); +		LLViewerAssetStatsFF::set_region_main(region1_handle);  		LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);  		LLViewerAssetStatsFF::record_dequeue_main(LLViewerAssetType::AT_TEXTURE, false, false); @@ -430,8 +434,8 @@ namespace tut  		ensure("Other collector is empty", is_no_stats_map(sd));  		sd = gViewerAssetStatsMain->asLLSD();  		ensure("Correct single-key LLSD map root", is_double_key_map(sd, "regions", "duration")); -		ensure("Correct single-key LLSD map regions", is_single_key_map(sd["regions"], region1.asString())); -		sd = sd["regions"][region1.asString()]; +		ensure("Correct single-key LLSD map regions", is_single_key_map(sd["regions"], region1_handle_str)); +		sd = sd["regions"][region1_handle_str];  		// Check a few points on the tree for content  		ensure("sd[get_gesture_udp][enqueued] is 0", (0 == sd["get_gesture_udp"]["enqueued"].asInteger())); @@ -446,7 +450,7 @@ namespace tut  		// Reset and check zeros...  		// Reset leaves current region in place  		gViewerAssetStatsMain->reset(); -		sd = gViewerAssetStatsMain->asLLSD()["regions"][region1.asString()]; +		sd = gViewerAssetStatsMain->asLLSD()["regions"][region1_handle_str];  		delete gViewerAssetStatsMain;  		gViewerAssetStatsMain = NULL; @@ -461,8 +465,8 @@ namespace tut  	template<> template<>  	void tst_viewerassetstats_index_object_t::test<9>()  	{ -		LLSD::String reg1_name = region1.asString(); -		LLSD::String reg2_name = region2.asString(); +		LLSD::String reg1_name = region1_handle_str; +		LLSD::String reg2_name = region2_handle_str;  		LLSD reg1_stats = LLSD::emptyMap();  		LLSD reg2_stats = LLSD::emptyMap(); @@ -523,8 +527,8 @@ namespace tut  	template<> template<>  	void tst_viewerassetstats_index_object_t::test<10>()  	{ -		LLSD::String reg1_name = region1.asString(); -		LLSD::String reg2_name = region2.asString(); +		LLSD::String reg1_name = region1_handle_str; +		LLSD::String reg2_name = region2_handle_str;  		LLSD reg1_stats = LLSD::emptyMap();  		LLSD reg2_stats = LLSD::emptyMap(); @@ -580,8 +584,8 @@ namespace tut  	template<> template<>  	void tst_viewerassetstats_index_object_t::test<11>()  	{ -		LLSD::String reg1_name = region1.asString(); -		LLSD::String reg2_name = region2.asString(); +		LLSD::String reg1_name = region1_handle_str; +		LLSD::String reg2_name = region2_handle_str;  		LLSD reg1_stats = LLSD::emptyMap();  		LLSD reg2_stats = LLSD::emptyMap(); @@ -637,8 +641,8 @@ namespace tut  	template<> template<>  	void tst_viewerassetstats_index_object_t::test<12>()  	{ -		LLSD::String reg1_name = region1.asString(); -		LLSD::String reg2_name = region2.asString(); +		LLSD::String reg1_name = region1_handle_str; +		LLSD::String reg2_name = region2_handle_str;  		LLSD reg1_stats = LLSD::emptyMap();  		LLSD reg2_stats = LLSD::emptyMap();  | 
