diff options
| author | Richard Linden <none@none> | 2013-08-19 10:20:55 -0700 | 
|---|---|---|
| committer | Richard Linden <none@none> | 2013-08-19 10:20:55 -0700 | 
| commit | 08eb52c10ca1f916d937fe1927eb659f6d69a6d3 (patch) | |
| tree | 98e7faecca7ded1dd8732dfef7c13abd424b858b | |
| parent | 4290365ebbf5505bee4fbed8043996fa7687fd03 (diff) | |
| parent | 612892b45a3413b16e40c49d3bfde77a4ca927fd (diff) | |
merge
74 files changed, 1642 insertions, 1365 deletions
| diff --git a/indra/llcommon/llcriticaldamp.cpp b/indra/llcommon/llcriticaldamp.cpp index 5ffad88973..9f4cb09000 100755 --- a/indra/llcommon/llcriticaldamp.cpp +++ b/indra/llcommon/llcriticaldamp.cpp @@ -81,7 +81,7 @@ void LLSmoothInterpolation::updateInterpolants()  //-----------------------------------------------------------------------------  // getInterpolant()  //----------------------------------------------------------------------------- -F32 LLSmoothInterpolation::getInterpolant(LLUnitImplicit<F32, LLUnits::Seconds> time_constant, bool use_cache) +F32 LLSmoothInterpolation::getInterpolant(F32SecondsImplicit time_constant, bool use_cache)  {  	if (time_constant == 0.f)  	{ diff --git a/indra/llcommon/llcriticaldamp.h b/indra/llcommon/llcriticaldamp.h index 7b2a414459..a02a2a0dcf 100755 --- a/indra/llcommon/llcriticaldamp.h +++ b/indra/llcommon/llcriticaldamp.h @@ -42,10 +42,10 @@ public:  	static void updateInterpolants();  	// ACCESSORS -	static F32 getInterpolant(LLUnitImplicit<F32, LLUnits::Seconds> time_constant, bool use_cache = true); +	static F32 getInterpolant(F32SecondsImplicit time_constant, bool use_cache = true);  	template<typename T>  -	static T lerp(T a, T b, LLUnitImplicit<F32, LLUnits::Seconds> time_constant, bool use_cache = true) +	static T lerp(T a, T b, F32SecondsImplicit time_constant, bool use_cache = true)  	{  		F32 interpolant = getInterpolant(time_constant, use_cache);  		return ((a * (1.f - interpolant))  diff --git a/indra/llcommon/lldate.cpp b/indra/llcommon/lldate.cpp index cb6f239396..4f2e1304b2 100755 --- a/indra/llcommon/lldate.cpp +++ b/indra/llcommon/lldate.cpp @@ -55,7 +55,7 @@ LLDate::LLDate(const LLDate& date) :  	mSecondsSinceEpoch(date.mSecondsSinceEpoch)  {} -LLDate::LLDate(LLUnitImplicit<F64, LLUnits::Seconds> seconds_since_epoch) : +LLDate::LLDate(F64SecondsImplicit seconds_since_epoch) :  	mSecondsSinceEpoch(seconds_since_epoch.value())  {} diff --git a/indra/llcommon/lldate.h b/indra/llcommon/lldate.h index 816bc62b14..aecf3b765e 100755 --- a/indra/llcommon/lldate.h +++ b/indra/llcommon/lldate.h @@ -59,7 +59,7 @@ public:  	 *  	 * @param seconds_since_epoch The number of seconds since UTC epoch.  	 */ -	LLDate(LLUnitImplicit<F64, LLUnits::Seconds> seconds_since_epoch); +	LLDate(F64SecondsImplicit seconds_since_epoch);  	/**   	 * @brief Construct a date from a string representation diff --git a/indra/llcommon/llframetimer.h b/indra/llcommon/llframetimer.h index d64009440c..81bd5da8a3 100755 --- a/indra/llcommon/llframetimer.h +++ b/indra/llcommon/llframetimer.h @@ -43,7 +43,7 @@ public:  	// Return the number of seconds since the start of this  	// application instance. -	static F64 getElapsedSeconds() +	static F64SecondsImplicit getElapsedSeconds()  	{  		// Loses msec precision after ~4.5 hours...  		return sFrameTime; @@ -52,7 +52,7 @@ public:  	// Return a low precision usec since epoch  	static U64 getTotalTime()  	{ -		return sTotalTime ? LLUnitImplicit<U64, LLUnits::Microseconds>(sTotalTime) : totalTime(); +		return sTotalTime ? U64MicrosecondsImplicit(sTotalTime) : totalTime();  	}  	// Return a low precision seconds since epoch diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp index c59b61471a..d46e205500 100755 --- a/indra/llcommon/llmemory.cpp +++ b/indra/llcommon/llmemory.cpp @@ -47,11 +47,11 @@  //static  char* LLMemory::reserveMem = 0; -U32Kibibytes LLMemory::sAvailPhysicalMemInKB(U32_MAX); -U32Kibibytes LLMemory::sMaxPhysicalMemInKB(0); -U32Kibibytes LLMemory::sAllocatedMemInKB(0); -U32Kibibytes LLMemory::sAllocatedPageSizeInKB(0); -U32Kibibytes LLMemory::sMaxHeapSizeInKB(U32_MAX); +U32Kilobytes LLMemory::sAvailPhysicalMemInKB(U32_MAX); +U32Kilobytes LLMemory::sMaxPhysicalMemInKB(0); +U32Kilobytes LLMemory::sAllocatedMemInKB(0); +U32Kilobytes LLMemory::sAllocatedPageSizeInKB(0); +U32Kilobytes LLMemory::sMaxHeapSizeInKB(U32_MAX);  BOOL LLMemory::sEnableMemoryFailurePrevention = FALSE;  #if __DEBUG_PRIVATE_MEM__ @@ -94,9 +94,9 @@ void LLMemory::freeReserve()  }  //static  -void LLMemory::initMaxHeapSizeGB(F32 max_heap_size_gb, BOOL prevent_heap_failure) +void LLMemory::initMaxHeapSizeGB(F32Gigabytes max_heap_size, BOOL prevent_heap_failure)  { -	sMaxHeapSizeInKB = (U32)(max_heap_size_gb * 1024 * 1024) ; +	sMaxHeapSizeInKB = max_heap_size;  	sEnableMemoryFailurePrevention = prevent_heap_failure ;  } @@ -113,10 +113,10 @@ void LLMemory::updateMemoryInfo()  		return ;  	} -	sAllocatedMemInKB = (U32)(counters.WorkingSetSize / 1024) ; -	sAllocatedPageSizeInKB = (U32)(counters.PagefileUsage / 1024) ; +	sAllocatedMemInKB = (U32Bytes)(counters.WorkingSetSize) ; +	sAllocatedPageSizeInKB = (U32Bytes)(counters.PagefileUsage) ; -	U32Kibibytes avail_phys, avail_virtual; +	U32Kilobytes avail_phys, avail_virtual;  	LLMemoryInfo::getAvailableMemoryKB(avail_phys, avail_virtual) ;  	sMaxPhysicalMemInKB = llmin(avail_phys + sAllocatedMemInKB, sMaxHeapSizeInKB); @@ -126,7 +126,7 @@ void LLMemory::updateMemoryInfo()  	}  	else  	{ -		sAvailPhysicalMemInKB = 0 ; +		sAvailPhysicalMemInKB = U32Kilobytes(0);  	}  #else  	//not valid for other systems for now. @@ -187,8 +187,8 @@ void LLMemory::logMemoryInfo(BOOL update)  //static   bool LLMemory::isMemoryPoolLow()  { -	static const U32 LOW_MEMEOY_POOL_THRESHOLD_KB = 64 * 1024 ; //64 MB for emergency use -	const static U32 MAX_SIZE_CHECKED_MEMORY_BLOCK = 64 * 1024 * 1024 ; //64 MB +	static const U32Megabytes LOW_MEMORY_POOL_THRESHOLD(64); +	const static U32Megabytes MAX_SIZE_CHECKED_MEMORY_BLOCK(64);  	static void* last_reserved_address = NULL ;  	if(!sEnableMemoryFailurePrevention) @@ -196,32 +196,32 @@ bool LLMemory::isMemoryPoolLow()  		return false ; //no memory failure prevention.  	} -	if(sAvailPhysicalMemInKB < (LOW_MEMEOY_POOL_THRESHOLD_KB >> 2)) //out of physical memory +	if(sAvailPhysicalMemInKB < (LOW_MEMORY_POOL_THRESHOLD / 4)) //out of physical memory  	{  		return true ;  	} -	if(sAllocatedPageSizeInKB + (LOW_MEMEOY_POOL_THRESHOLD_KB >> 2) > sMaxHeapSizeInKB) //out of virtual address space. +	if(sAllocatedPageSizeInKB + (LOW_MEMORY_POOL_THRESHOLD / 4) > sMaxHeapSizeInKB) //out of virtual address space.  	{  		return true ;  	} -	bool is_low = (S32)(sAvailPhysicalMemInKB < LOW_MEMEOY_POOL_THRESHOLD_KB ||  -		sAllocatedPageSizeInKB + LOW_MEMEOY_POOL_THRESHOLD_KB > sMaxHeapSizeInKB) ; +	bool is_low = (S32)(sAvailPhysicalMemInKB < LOW_MEMORY_POOL_THRESHOLD ||  +		sAllocatedPageSizeInKB + LOW_MEMORY_POOL_THRESHOLD > sMaxHeapSizeInKB) ;  	//check the virtual address space fragmentation  	if(!is_low)  	{  		if(!last_reserved_address)  		{ -			last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK) ; +			last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK.value()) ;  		}  		else  		{ -			last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK) ; +			last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK.value()) ;  			if(!last_reserved_address) //failed, try once more  			{ -				last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK) ; +				last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK.value()) ;  			}  		} @@ -232,19 +232,19 @@ bool LLMemory::isMemoryPoolLow()  }  //static  -U32Kibibytes LLMemory::getAvailableMemKB()  +U32Kilobytes LLMemory::getAvailableMemKB()   {  	return sAvailPhysicalMemInKB ;  }  //static  -U32Kibibytes LLMemory::getMaxMemKB()  +U32Kilobytes LLMemory::getMaxMemKB()   {  	return sMaxPhysicalMemInKB ;  }  //static  -U32Kibibytes LLMemory::getAllocatedMemKB()  +U32Kilobytes LLMemory::getAllocatedMemKB()   {  	return sAllocatedMemInKB ;  } diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h index c45c7ed213..23be1e5b2d 100755 --- a/indra/llcommon/llmemory.h +++ b/indra/llcommon/llmemory.h @@ -166,22 +166,22 @@ public:  	static U64 getCurrentRSS();  	static U32 getWorkingSetSize();  	static void* tryToAlloc(void* address, U32 size); -	static void initMaxHeapSizeGB(F32 max_heap_size_gb, BOOL prevent_heap_failure); +	static void initMaxHeapSizeGB(F32Gigabytes max_heap_size, BOOL prevent_heap_failure);  	static void updateMemoryInfo() ;  	static void logMemoryInfo(BOOL update = FALSE);  	static bool isMemoryPoolLow(); -	static U32Kibibytes getAvailableMemKB() ; -	static U32Kibibytes getMaxMemKB() ; -	static U32Kibibytes getAllocatedMemKB() ; +	static U32Kilobytes getAvailableMemKB() ; +	static U32Kilobytes getMaxMemKB() ; +	static U32Kilobytes getAllocatedMemKB() ;  private:  	static char* reserveMem; -	static U32Kibibytes sAvailPhysicalMemInKB ; -	static U32Kibibytes sMaxPhysicalMemInKB ; -	static U32Kibibytes sAllocatedMemInKB; -	static U32Kibibytes sAllocatedPageSizeInKB ; +	static U32Kilobytes sAvailPhysicalMemInKB ; +	static U32Kilobytes sMaxPhysicalMemInKB ; +	static U32Kilobytes sAllocatedMemInKB; +	static U32Kilobytes sAllocatedPageSizeInKB ; -	static U32Kibibytes sMaxHeapSizeInKB; +	static U32Kilobytes sMaxHeapSizeInKB;  	static BOOL sEnableMemoryFailurePrevention;  }; diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp index 80b86153e4..69043dc173 100755 --- a/indra/llcommon/llprocessor.cpp +++ b/indra/llcommon/llprocessor.cpp @@ -875,7 +875,7 @@ LLProcessorInfo::LLProcessorInfo() : mImpl(NULL)  LLProcessorInfo::~LLProcessorInfo() {} -LLUnitImplicit<F64, LLUnits::Megahertz> LLProcessorInfo::getCPUFrequency() const { return mImpl->getCPUFrequency(); } +F64MegahertzImplicit LLProcessorInfo::getCPUFrequency() const { return mImpl->getCPUFrequency(); }  bool LLProcessorInfo::hasSSE() const { return mImpl->hasSSE(); }  bool LLProcessorInfo::hasSSE2() const { return mImpl->hasSSE2(); }  bool LLProcessorInfo::hasAltivec() const { return mImpl->hasAltivec(); } diff --git a/indra/llcommon/llprocessor.h b/indra/llcommon/llprocessor.h index 7f220467b0..4956a39700 100755 --- a/indra/llcommon/llprocessor.h +++ b/indra/llcommon/llprocessor.h @@ -37,7 +37,7 @@ public:  	LLProcessorInfo();    	~LLProcessorInfo(); -	LLUnitImplicit<F64, LLUnits::Megahertz> getCPUFrequency() const; +	F64MegahertzImplicit getCPUFrequency() const;  	bool hasSSE() const;  	bool hasSSE2() const;  	bool hasAltivec() const; diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp index 8f7e60fb68..1ff45d3d90 100755 --- a/indra/llcommon/llsys.cpp +++ b/indra/llcommon/llsys.cpp @@ -832,7 +832,7 @@ LLMemoryInfo::LLMemoryInfo()  }  #if LL_WINDOWS -static U32Kibibytes LLMemoryAdjustKBResult(U32Kibibytes inKB) +static U32Kilobytes LLMemoryAdjustKBResult(U32Kilobytes inKB)  {  	// Moved this here from llfloaterabout.cpp @@ -843,16 +843,16 @@ static U32Kibibytes LLMemoryAdjustKBResult(U32Kibibytes inKB)  	// returned from the GetMemoryStatusEx function.  Here we keep the  	// original adjustment from llfoaterabout.cpp until this can be  	// fixed somehow. -	inKB += U32Mibibytes(1); +	inKB += U32Megabytes(1);  	return inKB;  }  #endif -U32Kibibytes LLMemoryInfo::getPhysicalMemoryKB() const +U32Kilobytes LLMemoryInfo::getPhysicalMemoryKB() const  {  #if LL_WINDOWS -	return LLMemoryAdjustKBResult(U32Kibibytes(mStatsMap["Total Physical KB"].asInteger())); +	return LLMemoryAdjustKBResult(U32Kilobytes(mStatsMap["Total Physical KB"].asInteger()));  #elif LL_DARWIN  	// This might work on Linux as well.  Someone check... @@ -885,8 +885,8 @@ U32Bytes LLMemoryInfo::getPhysicalMemoryClamped() const  	// Return the total physical memory in bytes, but clamp it  	// to no more than U32_MAX -	U32Bytes phys_kb = getPhysicalMemoryKB(); -	if (phys_kb >= 4194304 /* 4GB in KB */) +	U32Kilobytes phys_kb = getPhysicalMemoryKB(); +	if (phys_kb >= U32Gigabytes(4))  	{  		return U32Bytes(U32_MAX);  	} @@ -897,15 +897,15 @@ U32Bytes LLMemoryInfo::getPhysicalMemoryClamped() const  }  //static -void LLMemoryInfo::getAvailableMemoryKB(U32Kibibytes& avail_physical_mem_kb, U32Kibibytes& avail_virtual_mem_kb) +void LLMemoryInfo::getAvailableMemoryKB(U32Kilobytes& avail_physical_mem_kb, U32Kilobytes& avail_virtual_mem_kb)  {  #if LL_WINDOWS  	// Sigh, this shouldn't be a static method, then we wouldn't have to  	// reload this data separately from refresh()  	LLSD statsMap(loadStatsMap()); -	avail_physical_mem_kb = statsMap["Avail Physical KB"].asInteger(); -	avail_virtual_mem_kb  = statsMap["Avail Virtual KB"].asInteger(); +	avail_physical_mem_kb = (U32Kilobytes)statsMap["Avail Physical KB"].asInteger(); +	avail_virtual_mem_kb  = (U32Kilobytes)statsMap["Avail Virtual KB"].asInteger();  #elif LL_DARWIN  	// mStatsMap is derived from vm_stat, look for (e.g.) "kb free": diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h index ad4f243d05..962367f69f 100755 --- a/indra/llcommon/llsys.h +++ b/indra/llcommon/llsys.h @@ -112,7 +112,7 @@ public:  	LLMemoryInfo(); ///< Default constructor  	void stream(std::ostream& s) const;	///< output text info to s -	U32Kibibytes getPhysicalMemoryKB() const;  +	U32Kilobytes getPhysicalMemoryKB() const;   	/*! Memory size in bytes, if total memory is >= 4GB then U32_MAX will  	**  be returned. @@ -120,7 +120,7 @@ public:  	U32Bytes getPhysicalMemoryClamped() const; ///< Memory size in clamped bytes  	//get the available memory infomation in KiloBytes. -	static void getAvailableMemoryKB(U32Kibibytes& avail_physical_mem_kb, U32Kibibytes& avail_virtual_mem_kb); +	static void getAvailableMemoryKB(U32Kilobytes& avail_physical_mem_kb, U32Kilobytes& avail_virtual_mem_kb);  	// Retrieve a map of memory statistics. The keys of the map are platform-  	// dependent. The values are in kilobytes to try to avoid integer overflow. diff --git a/indra/llcommon/lltimer.cpp b/indra/llcommon/lltimer.cpp index 74f3a7f587..da9d2b646c 100755 --- a/indra/llcommon/lltimer.cpp +++ b/indra/llcommon/lltimer.cpp @@ -225,7 +225,7 @@ void update_clock_frequencies()  // returns a U64 number that represents the number of   // microseconds since the unix epoch - Jan 1, 1970 -LLUnitImplicit<U64, LLUnits::Microseconds> totalTime() +U64MicrosecondsImplicit totalTime()  {  	U64 current_clock_count = get_clock_count();  	if (!gTotalTimeClockCount) @@ -295,14 +295,14 @@ void LLTimer::cleanupClass()  }  // static -LLUnitImplicit<U64, LLUnits::Microseconds> LLTimer::getTotalTime() +U64MicrosecondsImplicit LLTimer::getTotalTime()  {  	// simply call into the implementation function.  	return totalTime();  }	  // static -LLUnitImplicit<F64, LLUnits::Seconds> LLTimer::getTotalSeconds() +F64SecondsImplicit LLTimer::getTotalSeconds()  {  	return U64_to_F64(getTotalTime()) * USEC_TO_SEC_F64;  } @@ -351,36 +351,36 @@ U64 getElapsedTimeAndUpdate(U64& lastClockCount)  } -LLUnitImplicit<F64, LLUnits::Seconds> LLTimer::getElapsedTimeF64() const +F64SecondsImplicit LLTimer::getElapsedTimeF64() const  {  	U64 last = mLastClockCount;  	return (F64)getElapsedTimeAndUpdate(last) * gClockFrequencyInv;  } -LLUnitImplicit<F32, LLUnits::Seconds> LLTimer::getElapsedTimeF32() const +F32SecondsImplicit LLTimer::getElapsedTimeF32() const  {  	return (F32)getElapsedTimeF64();  } -LLUnitImplicit<F64, LLUnits::Seconds> LLTimer::getElapsedTimeAndResetF64() +F64SecondsImplicit LLTimer::getElapsedTimeAndResetF64()  {  	return (F64)getElapsedTimeAndUpdate(mLastClockCount) * gClockFrequencyInv;  } -LLUnitImplicit<F32, LLUnits::Seconds> LLTimer::getElapsedTimeAndResetF32() +F32SecondsImplicit LLTimer::getElapsedTimeAndResetF32()  {  	return (F32)getElapsedTimeAndResetF64();  }  /////////////////////////////////////////////////////////////////////////////// -void  LLTimer::setTimerExpirySec(LLUnitImplicit<F32, LLUnits::Seconds> expiration) +void  LLTimer::setTimerExpirySec(F32SecondsImplicit expiration)  {  	mExpirationTicks = get_clock_count()  		+ (U64)((F32)(expiration * gClockFrequency));  } -LLUnitImplicit<F32, LLUnits::Seconds> LLTimer::getRemainingTimeF32() const +F32SecondsImplicit LLTimer::getRemainingTimeF32() const  {  	U64 cur_ticks = get_clock_count();  	if (cur_ticks > mExpirationTicks) diff --git a/indra/llcommon/lltimer.h b/indra/llcommon/lltimer.h index 1f2c56432b..12a453e897 100755 --- a/indra/llcommon/lltimer.h +++ b/indra/llcommon/lltimer.h @@ -67,7 +67,7 @@ public:  	// Return a high precision number of seconds since the start of  	// this application instance. -	static LLUnitImplicit<F64, LLUnits::Seconds> getElapsedSeconds() +	static F64SecondsImplicit getElapsedSeconds()  	{  		if (sTimer)   		{ @@ -80,10 +80,10 @@ public:  	}  	// Return a high precision usec since epoch -	static LLUnitImplicit<U64, LLUnits::Microseconds> getTotalTime(); +	static U64MicrosecondsImplicit getTotalTime();  	// Return a high precision seconds since epoch -	static LLUnitImplicit<F64, LLUnits::Seconds> getTotalSeconds(); +	static F64SecondsImplicit getTotalSeconds();  	// MANIPULATORS @@ -91,19 +91,19 @@ public:  	void stop() { mStarted = FALSE; }  	void reset();								// Resets the timer  	void setLastClockCount(U64 current_count);		// Sets the timer so that the next elapsed call will be relative to this time -	void setTimerExpirySec(LLUnitImplicit<F32, LLUnits::Seconds> expiration); +	void setTimerExpirySec(F32SecondsImplicit expiration);  	BOOL checkExpirationAndReset(F32 expiration);  	BOOL hasExpired() const; -	LLUnitImplicit<F32, LLUnits::Seconds> getElapsedTimeAndResetF32();	// Returns elapsed time in seconds with reset -	LLUnitImplicit<F64, LLUnits::Seconds> getElapsedTimeAndResetF64(); +	F32SecondsImplicit getElapsedTimeAndResetF32();	// Returns elapsed time in seconds with reset +	F64SecondsImplicit getElapsedTimeAndResetF64(); -	LLUnitImplicit<F32, LLUnits::Seconds> getRemainingTimeF32() const; +	F32SecondsImplicit getRemainingTimeF32() const;  	static BOOL knownBadTimer();  	// ACCESSORS -	LLUnitImplicit<F32, LLUnits::Seconds> getElapsedTimeF32() const;			// Returns elapsed time in seconds -	LLUnitImplicit<F64, LLUnits::Seconds> getElapsedTimeF64() const;			// Returns elapsed time in seconds +	F32SecondsImplicit getElapsedTimeF32() const;			// Returns elapsed time in seconds +	F64SecondsImplicit getElapsedTimeF64() const;			// Returns elapsed time in seconds  	bool getStarted() const { return mStarted; } @@ -171,6 +171,6 @@ LL_COMMON_API struct tm* utc_to_pacific_time(time_t utc_time, BOOL pacific_dayli  LL_COMMON_API void microsecondsToTimecodeString(U64 current_time, std::string& tcstring);  LL_COMMON_API void secondsToTimecodeString(F32 current_time, std::string& tcstring); -LLUnitImplicit<U64, LLUnits::Microseconds> LL_COMMON_API totalTime();					// Returns current system time in microseconds +U64MicrosecondsImplicit LL_COMMON_API totalTime();					// Returns current system time in microseconds  #endif diff --git a/indra/llcommon/lltraceaccumulators.cpp b/indra/llcommon/lltraceaccumulators.cpp index a632f5634c..1fb68c8158 100644 --- a/indra/llcommon/lltraceaccumulators.cpp +++ b/indra/llcommon/lltraceaccumulators.cpp @@ -114,7 +114,7 @@ void AccumulatorBufferGroup::reset(AccumulatorBufferGroup* other)  void AccumulatorBufferGroup::sync()  { -	LLUnitImplicit<F64, LLUnits::Seconds> time_stamp = LLTimer::getTotalSeconds(); +	F64SecondsImplicit time_stamp = LLTimer::getTotalSeconds();  	mSamples.sync(time_stamp);  	mMemStats.sync(time_stamp); diff --git a/indra/llcommon/lltraceaccumulators.h b/indra/llcommon/lltraceaccumulators.h index 73da6bd2d8..f9d223066d 100644 --- a/indra/llcommon/lltraceaccumulators.h +++ b/indra/llcommon/lltraceaccumulators.h @@ -118,7 +118,7 @@ namespace LLTrace  			}  		} -		void sync(LLUnitImplicit<F64, LLUnits::Seconds> time_stamp) +		void sync(F64SecondsImplicit time_stamp)  		{  			llassert(mStorageSize >= sNextStorageSlot);  			for (size_t i = 0; i < sNextStorageSlot; i++) @@ -260,7 +260,7 @@ namespace LLTrace  		void addSamples(const EventAccumulator& other, EBufferAppendType append_type);  		void reset(const EventAccumulator* other); -		void sync(LLUnitImplicit<F64, LLUnits::Seconds>) {} +		void sync(F64SecondsImplicit) {}  		F64	getSum() const               { return mSum; }  		F64	getMin() const               { return mMin; } @@ -305,7 +305,7 @@ namespace LLTrace  		void sample(F64 value)  		{ -			LLUnitImplicit<F64, LLUnits::Seconds> time_stamp = LLTimer::getTotalSeconds(); +			F64SecondsImplicit time_stamp = LLTimer::getTotalSeconds();  			// store effect of last value  			sync(time_stamp); @@ -332,11 +332,11 @@ namespace LLTrace  		void addSamples(const SampleAccumulator& other, EBufferAppendType append_type);  		void reset(const SampleAccumulator* other); -		void sync(LLUnitImplicit<F64, LLUnits::Seconds> time_stamp) +		void sync(F64SecondsImplicit time_stamp)  		{  			if (mHasValue)  			{ -				LLUnitImplicit<F64, LLUnits::Seconds> delta_time = time_stamp - mLastSampleTimeStamp; +				F64SecondsImplicit delta_time = time_stamp - mLastSampleTimeStamp;  				mSum += mLastValue * delta_time;  				mTotalSamplingTime += delta_time;  				F64 old_mean = mMean; @@ -353,7 +353,7 @@ namespace LLTrace  		F64	getMean() const              { return mMean; }  		F64 getStandardDeviation() const { return sqrtf(mSumOfSquares / mTotalSamplingTime); }  		F64 getSumOfSquares() const		 { return mSumOfSquares; } -		LLUnitImplicit<F64, LLUnits::Seconds> getSamplingTime() { return mTotalSamplingTime; } +		F64SecondsImplicit getSamplingTime() { return mTotalSamplingTime; }  		U32 getSampleCount() const       { return mNumSamples; }  		bool hasValue() const            { return mHasValue; } @@ -368,7 +368,7 @@ namespace LLTrace  		F64		mMean,  				mSumOfSquares; -		LLUnitImplicit<F64, LLUnits::Seconds>	 +		F64SecondsImplicit	  				mLastSampleTimeStamp,  				mTotalSamplingTime; @@ -403,7 +403,7 @@ namespace LLTrace  			mSum = 0;  		} -		void sync(LLUnitImplicit<F64, LLUnits::Seconds>) {} +		void sync(F64SecondsImplicit) {}  		F64	getSum() const { return mSum; } @@ -435,7 +435,7 @@ namespace LLTrace  		TimeBlockAccumulator();  		void addSamples(const self_t& other, EBufferAppendType append_type);  		void reset(const self_t* other); -		void sync(LLUnitImplicit<F64, LLUnits::Seconds>) {} +		void sync(F64SecondsImplicit) {}  		//  		// members @@ -516,7 +516,7 @@ namespace LLTrace  			mDeallocatedCount = 0;  		} -		void sync(LLUnitImplicit<F64, LLUnits::Seconds> time_stamp)  +		void sync(F64SecondsImplicit time_stamp)   		{  			mSize.sync(time_stamp);  			mChildSize.sync(time_stamp); diff --git a/indra/llcommon/lltracerecording.h b/indra/llcommon/lltracerecording.h index f5fb2bf561..ea090e6ee1 100644 --- a/indra/llcommon/lltracerecording.h +++ b/indra/llcommon/lltracerecording.h @@ -490,7 +490,7 @@ namespace LLTrace  			for (S32 i = 1; i <= num_periods; i++)  			{  				Recording& recording = getPrevRecording(i); -				if (recording.getDuration() > 0.f) +				if (recording.getDuration() > (F32Seconds)0.f)  				{  					mean += recording.getSum(stat);  				} @@ -530,7 +530,7 @@ namespace LLTrace  			for (S32 i = 1; i <= num_periods; i++)  			{  				Recording& recording = getPrevRecording(i); -				if (recording.getDuration() > 0.f) +				if (recording.getDuration() > (F32Seconds)0.f)  				{  					mean += recording.getPerSec(stat);  				} diff --git a/indra/llcommon/llunit.h b/indra/llcommon/llunit.h index b62bebc440..c49c882f23 100644 --- a/indra/llcommon/llunit.h +++ b/indra/llcommon/llunit.h @@ -31,11 +31,29 @@  #include "llpreprocessor.h"  #include "llerror.h" +//lightweight replacement of type traits for simple type equality check +template<typename S, typename T>  +struct LLIsSameType +{ +	static const bool value = false; +}; + +template<typename T> +struct LLIsSameType<T, T> +{ +	static const bool value = true; +}; + +template<typename S, typename T> +struct LLPromotedType +{ +	typedef decltype(S() + T()) type_t; +}; +  template<typename STORAGE_TYPE, typename UNIT_TYPE>  struct LLUnit  {  	typedef LLUnit<STORAGE_TYPE, UNIT_TYPE> self_t; -  	typedef STORAGE_TYPE storage_t;  	// value initialization @@ -49,18 +67,6 @@ struct LLUnit  	:	mValue(convert(other).mValue)  	{} -	bool operator == (const self_t& other) -	{ -		return mValue = other.mValue; -	} - -	// value assignment -	self_t& operator = (storage_t value) -	{ -		mValue = value; -		return *this; -	} -  	// unit assignment  	template<typename OTHER_STORAGE, typename OTHER_UNIT>  	self_t& operator = (LLUnit<OTHER_STORAGE, OTHER_UNIT> other) @@ -91,22 +97,12 @@ struct LLUnit  		*this = LLUnit<storage_t, NEW_UNIT_TYPE>(value);  	} -	void operator += (storage_t value) -	{ -		mValue += value; -	} -  	template<typename OTHER_STORAGE, typename OTHER_UNIT>  	void operator += (LLUnit<OTHER_STORAGE, OTHER_UNIT> other)  	{  		mValue += convert(other).mValue;  	} -	void operator -= (storage_t value) -	{ -		mValue -= value; -	} -  	template<typename OTHER_STORAGE, typename OTHER_UNIT>  	void operator -= (LLUnit<OTHER_STORAGE, OTHER_UNIT> other)  	{ @@ -161,7 +157,7 @@ std::istream& operator >>(std::istream& s, LLUnit<STORAGE_TYPE, UNIT_TYPE>& unit  {          STORAGE_TYPE val;          s >> val; -        unit = val; +        unit.value(val);          return s;  } @@ -181,12 +177,37 @@ struct LLUnitImplicit : public LLUnit<STORAGE_TYPE, UNIT_TYPE>  	:	base_t(convert(other))  	{} -	// unlike LLUnit, LLUnitImplicit is *implicitly* convertable to a POD scalar (F32, S32, etc) +	// unlike LLUnit, LLUnitImplicit is *implicitly* convertable to a POD value (F32, S32, etc)  	// this allows for interoperability with legacy code  	operator storage_t() const  	{  		return base_t::value();  	} + +	using base_t::operator +=; +	void operator += (storage_t value) +	{ +		mValue += value; +	} + +	template<typename OTHER_STORAGE, typename OTHER_UNIT> +	void operator += (LLUnitImplicit<OTHER_STORAGE, OTHER_UNIT> other) +	{ +		mValue += convert(other).value(); +	} + +	using base_t::operator -=; +	void operator -= (storage_t value) +	{ +		mValue -= value; +	} + +	template<typename OTHER_STORAGE, typename OTHER_UNIT> +	void operator -= (LLUnitImplicit<OTHER_STORAGE, OTHER_UNIT> other) +	{ +		mValue -= convert(other).value(); +	} +  };  template<typename STORAGE_TYPE, typename UNIT_TYPE> @@ -205,24 +226,12 @@ std::istream& operator >>(std::istream& s, LLUnitImplicit<STORAGE_TYPE, UNIT_TYP          return s;  } -template<typename S, typename T>  -struct LLIsSameType -{ -	static const bool value = false; -}; - -template<typename T> -struct LLIsSameType<T, T> -{ -	static const bool value = true; -}; -  template<typename S1, typename T1, typename S2, typename T2>  LL_FORCE_INLINE void ll_convert_units(LLUnit<S1, T1> in, LLUnit<S2, T2>& out, ...)  {  	LL_STATIC_ASSERT((LLIsSameType<T1, T2>::value   		|| !LLIsSameType<T1, typename T1::base_unit_t>::value  -		|| !LLIsSameType<T2, typename T2::base_unit_t>::value), "invalid conversion"); +		|| !LLIsSameType<T2, typename T2::base_unit_t>::value), "invalid conversion: incompatible units");  	if (LLIsSameType<T1, typename T1::base_unit_t>::value)  	{ @@ -253,65 +262,63 @@ LL_FORCE_INLINE void ll_convert_units(LLUnit<S1, T1> in, LLUnit<S2, T2>& out, ..  // operator +  //  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2> -LLUnit<STORAGE_TYPE1, UNIT_TYPE1> operator + (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second) +LLUnit<decltype(STORAGE_TYPE1() + STORAGE_TYPE2()), UNIT_TYPE1> operator + (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second)  { -	LLUnit<STORAGE_TYPE1, UNIT_TYPE1> result(first); +	LLUnit<decltype(STORAGE_TYPE1() + STORAGE_TYPE2()), UNIT_TYPE1> result(first);  	result += second;  	return result;  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnit<STORAGE_TYPE, UNIT_TYPE> operator + (LLUnit<STORAGE_TYPE, UNIT_TYPE> first, SCALAR_TYPE second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS> +LLUnit<STORAGE_TYPE, UNIT_TYPE> operator + (LLUnit<STORAGE_TYPE, UNIT_TYPE> first, UNITLESS second)  { -	LLUnit<STORAGE_TYPE, UNIT_TYPE> result(first); -	result += second; -	return result; +	LL_BAD_TEMPLATE_INSTANTIATION(STORAGE_TYPE1, "operator + requires compatible unit types"); +	return LLUnit<STORAGE_TYPE, UNIT_TYPE>(0);  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnit<STORAGE_TYPE, UNIT_TYPE> operator + (SCALAR_TYPE first, LLUnit<STORAGE_TYPE, UNIT_TYPE> second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS> +LLUnit<STORAGE_TYPE, UNIT_TYPE> operator + (UNITLESS first, LLUnit<STORAGE_TYPE, UNIT_TYPE> second)  { -	LLUnit<STORAGE_TYPE, UNIT_TYPE> result(first); -	result += second; -	return result; +	LL_BAD_TEMPLATE_INSTANTIATION(STORAGE_TYPE1, "operator + requires compatible unit types"); +	return LLUnit<STORAGE_TYPE, UNIT_TYPE>(0);  }  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2> -LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> operator + (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second) +LLUnitImplicit<decltype(STORAGE_TYPE1() + STORAGE_TYPE2()), UNIT_TYPE1> operator + (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second)  { -	LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> result(first); +	LLUnitImplicit<decltype(STORAGE_TYPE1() + STORAGE_TYPE2()), UNIT_TYPE1> result(first);  	result += second;  	return result;  }  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2> -LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> operator + (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second) +LLUnitImplicit<decltype(STORAGE_TYPE1() + STORAGE_TYPE2()), UNIT_TYPE1> operator + (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second)  { -	LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> result(first); +	LLUnitImplicit<decltype(STORAGE_TYPE1() + STORAGE_TYPE2()), UNIT_TYPE1> result(first);  	result += second;  	return result;  }  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2> -LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> operator + (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second) +LLUnitImplicit<decltype(STORAGE_TYPE1() + STORAGE_TYPE2()), UNIT_TYPE1> operator + (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second)  { -	LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> result(first); +	LLUnitImplicit<decltype(STORAGE_TYPE1() + STORAGE_TYPE2()), UNIT_TYPE1> result(first);  	result += LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1>(second);  	return result;  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> operator + (LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> first, SCALAR_TYPE second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE> +LLUnitImplicit<decltype(STORAGE_TYPE() + UNITLESS_TYPE()), UNIT_TYPE> operator + (LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> first, UNITLESS_TYPE second)  { -	LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> result(first); +	LLUnitImplicit<decltype(STORAGE_TYPE() + UNITLESS_TYPE()), UNIT_TYPE> result(first);  	result += second;  	return result;  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> operator + (SCALAR_TYPE first, LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE> +LLUnitImplicit<decltype(UNITLESS_TYPE() + STORAGE_TYPE()), UNIT_TYPE> operator + (UNITLESS_TYPE first, LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> second)  { -	LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> result(first); +	LLUnitImplicit<decltype(UNITLESS_TYPE() + STORAGE_TYPE()), UNIT_TYPE> result(first);  	result += second;  	return result;  } @@ -320,65 +327,63 @@ LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> operator + (SCALAR_TYPE first, LLUnitImp  // operator -  //  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2> -LLUnit<STORAGE_TYPE1, UNIT_TYPE1> operator - (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second) +LLUnit<decltype(STORAGE_TYPE1() - STORAGE_TYPE2()), UNIT_TYPE1> operator - (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second)  { -	LLUnit<STORAGE_TYPE1, UNIT_TYPE1> result(first); +	LLUnit<decltype(STORAGE_TYPE1() - STORAGE_TYPE2()), UNIT_TYPE1> result(first);  	result -= second;  	return result;  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnit<STORAGE_TYPE, UNIT_TYPE> operator - (LLUnit<STORAGE_TYPE, UNIT_TYPE> first, SCALAR_TYPE second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS> +LLUnit<STORAGE_TYPE, UNIT_TYPE> operator - (LLUnit<STORAGE_TYPE, UNIT_TYPE> first, UNITLESS second)  { -	LLUnit<STORAGE_TYPE, UNIT_TYPE> result(first); -	result -= second; -	return result; +	LL_BAD_TEMPLATE_INSTANTIATION(STORAGE_TYPE1, "operator - requires compatible unit types"); +	return LLUnit<STORAGE_TYPE, UNIT_TYPE>(0);  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnit<STORAGE_TYPE, UNIT_TYPE> operator - (SCALAR_TYPE first, LLUnit<STORAGE_TYPE, UNIT_TYPE> second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS> +LLUnit<STORAGE_TYPE, UNIT_TYPE> operator - (UNITLESS first, LLUnit<STORAGE_TYPE, UNIT_TYPE> second)  { -	LLUnit<STORAGE_TYPE, UNIT_TYPE> result(first); -	result -= second; -	return result; +	LL_BAD_TEMPLATE_INSTANTIATION(STORAGE_TYPE1, "operator - requires compatible unit types"); +	return LLUnit<STORAGE_TYPE, UNIT_TYPE>(0);  }  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2> -LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> operator - (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second) +LLUnitImplicit<decltype(STORAGE_TYPE1() - STORAGE_TYPE2()), UNIT_TYPE1> operator - (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second)  { -	LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> result(first); +	LLUnitImplicit<decltype(STORAGE_TYPE1() - STORAGE_TYPE2()), UNIT_TYPE1> result(first);  	result -= second;  	return result;  }  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2> -LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> operator - (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second) +LLUnitImplicit<decltype(STORAGE_TYPE1() - STORAGE_TYPE2()), UNIT_TYPE1> operator - (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second)  { -	LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> result(first); +	LLUnitImplicit<decltype(STORAGE_TYPE1() - STORAGE_TYPE2()), UNIT_TYPE1> result(first);  	result -= second;  	return result;  }  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2> -LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> operator - (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second) +LLUnitImplicit<decltype(STORAGE_TYPE1() - STORAGE_TYPE2()), UNIT_TYPE1> operator - (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second)  { -	LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> result(first); +	LLUnitImplicit<decltype(STORAGE_TYPE1() - STORAGE_TYPE2()), UNIT_TYPE1> result(first);  	result -= LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1>(second);  	return result;  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> operator - (LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> first, SCALAR_TYPE second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE> +LLUnitImplicit<decltype(STORAGE_TYPE() - UNITLESS_TYPE()), UNIT_TYPE> operator - (LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> first, UNITLESS_TYPE second)  { -	LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> result(first); +	LLUnitImplicit<decltype(STORAGE_TYPE() - UNITLESS_TYPE()), UNIT_TYPE> result(first);  	result -= second;  	return result;  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> operator - (SCALAR_TYPE first, LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE> +LLUnitImplicit<decltype(UNITLESS_TYPE() - STORAGE_TYPE()), UNIT_TYPE> operator - (UNITLESS_TYPE first, LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> second)  { -	LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> result(first); +	LLUnitImplicit<decltype(UNITLESS_TYPE() - STORAGE_TYPE()), UNIT_TYPE> result(first);  	result -= second;  	return result;  } @@ -390,119 +395,144 @@ template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, ty  LLUnit<STORAGE_TYPE1, UNIT_TYPE1> operator * (LLUnit<STORAGE_TYPE1, UNIT_TYPE1>, LLUnit<STORAGE_TYPE2, UNIT_TYPE2>)  {  	// spurious use of dependent type to stop gcc from triggering the static assertion before instantiating the template -	LL_BAD_TEMPLATE_INSTANTIATION(STORAGE_TYPE1, "Multiplication of unit types results in new unit type - not supported."); +	LL_BAD_TEMPLATE_INSTANTIATION(STORAGE_TYPE1, "multiplication of unit types results in new unit type - not supported.");  	return LLUnit<STORAGE_TYPE1, UNIT_TYPE1>();  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnit<STORAGE_TYPE, UNIT_TYPE> operator * (LLUnit<STORAGE_TYPE, UNIT_TYPE> first, SCALAR_TYPE second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE> +LLUnit<decltype(STORAGE_TYPE() * UNITLESS_TYPE()), UNIT_TYPE> operator * (LLUnit<STORAGE_TYPE, UNIT_TYPE> first, UNITLESS_TYPE second)  { -	return LLUnit<STORAGE_TYPE, UNIT_TYPE>((STORAGE_TYPE)(first.value() * second)); +	return LLUnit<decltype(STORAGE_TYPE() * UNITLESS_TYPE()), UNIT_TYPE>(first.value() * second);  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnit<STORAGE_TYPE, UNIT_TYPE> operator * (SCALAR_TYPE first, LLUnit<STORAGE_TYPE, UNIT_TYPE> second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE> +LLUnit<decltype(UNITLESS_TYPE() * STORAGE_TYPE()), UNIT_TYPE> operator * (UNITLESS_TYPE first, LLUnit<STORAGE_TYPE, UNIT_TYPE> second)  { -	return LLUnit<STORAGE_TYPE, UNIT_TYPE>((STORAGE_TYPE)(first * second.value())); +	return LLUnit<decltype(UNITLESS_TYPE() * STORAGE_TYPE()), UNIT_TYPE>(first * second.value());  }  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2>  LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> operator * (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1>, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2>)  {  	// spurious use of dependent type to stop gcc from triggering the static assertion before instantiating the template -	LL_BAD_TEMPLATE_INSTANTIATION(STORAGE_TYPE1, "Multiplication of unit types results in new unit type - not supported."); +	LL_BAD_TEMPLATE_INSTANTIATION(STORAGE_TYPE1, "multiplication of unit types results in new unit type - not supported.");  	return LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1>();  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> operator * (LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> first, SCALAR_TYPE second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE> +LLUnitImplicit<decltype(STORAGE_TYPE() * UNITLESS_TYPE()), UNIT_TYPE> operator * (LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> first, UNITLESS_TYPE second)  { -	return LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE>(first.value() * second); +	return LLUnitImplicit<decltype(STORAGE_TYPE() * UNITLESS_TYPE()), UNIT_TYPE>(first.value() * second);  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> operator * (SCALAR_TYPE first, LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE> +LLUnitImplicit<decltype(UNITLESS_TYPE() * STORAGE_TYPE()), UNIT_TYPE> operator * (UNITLESS_TYPE first, LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> second)  { -	return LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE>(first * second.value()); +	return LLUnitImplicit<decltype(UNITLESS_TYPE() * STORAGE_TYPE()), UNIT_TYPE>(first * second.value());  }  //  // operator /  // -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -SCALAR_TYPE operator / (SCALAR_TYPE first, LLUnit<STORAGE_TYPE, UNIT_TYPE> second) -{ -	return SCALAR_TYPE(first / second.value()); -} -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnit<STORAGE_TYPE, UNIT_TYPE> operator / (LLUnit<STORAGE_TYPE, UNIT_TYPE> first, SCALAR_TYPE second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE> +LLUnit<decltype(STORAGE_TYPE() / UNITLESS_TYPE()), UNIT_TYPE> operator / (LLUnit<STORAGE_TYPE, UNIT_TYPE> first, UNITLESS_TYPE second)  { -	return LLUnit<STORAGE_TYPE, UNIT_TYPE>((STORAGE_TYPE)(first.value() / second)); +	return LLUnit<decltype(STORAGE_TYPE() / UNITLESS_TYPE()), UNIT_TYPE>(first.value() / second);  }  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2> -STORAGE_TYPE1 operator / (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second) +decltype(STORAGE_TYPE1() / STORAGE_TYPE2()) operator / (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second)  { -	return STORAGE_TYPE1(first.value() / first.convert(second)); +	return first.value() / first.convert(second).value();  } -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE> -LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> operator / (LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> first, SCALAR_TYPE second) +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE> +LLUnitImplicit<decltype(STORAGE_TYPE() / UNITLESS_TYPE()), UNIT_TYPE> operator / (LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> first, UNITLESS_TYPE second)  { -	return LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE>((STORAGE_TYPE)(first.value() / second)); +	return LLUnitImplicit<decltype(STORAGE_TYPE() / UNITLESS_TYPE()), UNIT_TYPE>(first.value() / second);  }  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2> -STORAGE_TYPE1 operator / (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second) +decltype(STORAGE_TYPE1() / STORAGE_TYPE2()) operator / (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second)  { -	return STORAGE_TYPE1(first.value() / first.convert(second)); +	return (decltype(STORAGE_TYPE1() / STORAGE_TYPE2()))(first.value() / first.convert(second).value());  }  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2> -STORAGE_TYPE1 operator / (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second) +decltype(STORAGE_TYPE1() / STORAGE_TYPE2()) operator / (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second)  { -	return STORAGE_TYPE1(first.value() / first.convert(second)); +	return (decltype(STORAGE_TYPE1() / STORAGE_TYPE2()))(first.value() / first.convert(second).value());  }  template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2> -STORAGE_TYPE1 operator / (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second) -{ -	return STORAGE_TYPE1(first.value() / first.convert(second)); -} - -#define COMPARISON_OPERATORS(op)                                                                                     \ -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE>                                            \ -bool operator op (SCALAR_TYPE first, LLUnit<STORAGE_TYPE, UNIT_TYPE> second)                                         \ -{                                                                                                                    \ -	return first op second.value();                                                                                  \ -}                                                                                                                    \ -	                                                                                                                 \ -template<typename STORAGE_TYPE, typename UNIT_TYPE, typename SCALAR_TYPE>                                            \ -bool operator op (LLUnit<STORAGE_TYPE, UNIT_TYPE> first, SCALAR_TYPE second)                                         \ -{                                                                                                                    \ -	return first.value() op second;                                                                                  \ -}                                                                                                                    \ -	                                                                                                                 \ -template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2>                   \ -bool operator op (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second) \ -{                                                                                                                    \ -	return first.value() op first.convert(second);                                                                   \ -}                                                                                                                    \ -	                                                                                                                 \ -template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2>                   \ -	bool operator op (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second)             \ -{                                                                                                                    \ -	return first.value() op first.convert(second);                                                                   \ -} - -COMPARISON_OPERATORS(<) -COMPARISON_OPERATORS(<=) -COMPARISON_OPERATORS(>) -COMPARISON_OPERATORS(>=) -COMPARISON_OPERATORS(==) -COMPARISON_OPERATORS(!=) +decltype(STORAGE_TYPE1() / STORAGE_TYPE2()) operator / (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second) +{ +	return (decltype(STORAGE_TYPE1() / STORAGE_TYPE2()))(first.value() / first.convert(second).value()); +} + +// +// comparison operators +// + +#define LL_UNIT_DECLARE_COMPARISON_OPERATOR(op)                                                                            \ +template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2>                         \ +bool operator op (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second)       \ +{                                                                                                                          \ +	return first.value() op first.convert(second).value();                                                                 \ +}                                                                                                                          \ +	                                                                                                                       \ +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE>                                                \ +bool operator op (LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> first, UNITLESS_TYPE second)                                     \ +{                                                                                                                          \ +	return first.value() op second;                                                                                        \ +}                                                                                                                          \ +                                                                                                                           \ +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE>                                                \ +bool operator op (UNITLESS_TYPE first, LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE> second)                                     \ +{                                                                                                                          \ +	return first op second.value();                                                                                        \ +}                                                                                                                          \ +                                                                                                                           \ +template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2>                         \ +bool operator op (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second)                       \ +{                                                                                                                          \ +	return first.value() op first.convert(second).value();                                                                 \ +}                                                                                                                          \ +                                                                                                                           \ +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE>                                                \ +bool operator op (LLUnit<STORAGE_TYPE, UNIT_TYPE> first, UNITLESS_TYPE second)                                             \ +{                                                                                                                          \ +	LL_BAD_TEMPLATE_INSTANTIATION(UNITLESS_TYPE, "operator " #op " requires compatible unit types");                       \ +	return false;                                                                                                          \ +}                                                                                                                          \ +                                                                                                                           \ +template<typename STORAGE_TYPE, typename UNIT_TYPE, typename UNITLESS_TYPE>                                                \ +bool operator op (UNITLESS_TYPE first, LLUnit<STORAGE_TYPE, UNIT_TYPE> second)                                             \ +{                                                                                                                          \ +	LL_BAD_TEMPLATE_INSTANTIATION(UNITLESS_TYPE, "operator " #op " requires compatible unit types");                       \ +	return false;                                                                                                          \ +}                                                                                                                          \ +	                                                                                                                       \ +template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2>                         \ +bool operator op (LLUnit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnitImplicit<STORAGE_TYPE2, UNIT_TYPE2> second)               \ +{                                                                                                                          \ +	return first.value() op first.convert(second).value();                                                                 \ +}                                                                                                                          \ +                                                                                                                           \ +template<typename STORAGE_TYPE1, typename UNIT_TYPE1, typename STORAGE_TYPE2, typename UNIT_TYPE2>                         \ +bool operator op (LLUnitImplicit<STORAGE_TYPE1, UNIT_TYPE1> first, LLUnit<STORAGE_TYPE2, UNIT_TYPE2> second)               \ +{                                                                                                                          \ +	return first.value() op first.convert(second).value();                                                                 \ +} + +LL_UNIT_DECLARE_COMPARISON_OPERATOR(<); +LL_UNIT_DECLARE_COMPARISON_OPERATOR(<=); +LL_UNIT_DECLARE_COMPARISON_OPERATOR(>); +LL_UNIT_DECLARE_COMPARISON_OPERATOR(>=); +LL_UNIT_DECLARE_COMPARISON_OPERATOR(==); +LL_UNIT_DECLARE_COMPARISON_OPERATOR(!=);  template<typename T>  @@ -517,8 +547,6 @@ struct LLGetUnitLabel<LLUnit<STORAGE_T, T> >  	static const char* getUnitLabel() { return T::getUnitLabel(); }  }; -#define LL_UNIT_PROMOTE_VALUE(output_type, value) ((true ? (output_type)(1) : (value/value)) * value) -  template<typename INPUT_TYPE, typename OUTPUT_TYPE>  struct LLUnitLinearOps  { @@ -534,25 +562,25 @@ struct LLUnitLinearOps  	template<typename T>  	output_t operator * (T other)  	{ -		return mInput * other; +		return typename LLPromotedType<INPUT_TYPE, OUTPUT_TYPE>::type_t(mInput) * other;  	}  	template<typename T>  	output_t operator / (T other)  	{ -		return LL_UNIT_PROMOTE_VALUE(OUTPUT_TYPE, mInput) / other; +		return typename LLPromotedType<INPUT_TYPE, OUTPUT_TYPE>::type_t(mInput) / other;  	}  	template<typename T>  	output_t operator + (T other)  	{ -		return mInput + other; +		return typename LLPromotedType<INPUT_TYPE, OUTPUT_TYPE>::type_t(mInput) + other;  	}  	template<typename T>  	output_t operator - (T other)  	{ -		return mInput - other; +		return typename LLPromotedType<INPUT_TYPE, OUTPUT_TYPE>::type_t(mInput) - other;  	}  }; @@ -571,25 +599,25 @@ struct LLUnitInverseLinearOps  	template<typename T>  	output_t operator * (T other)  	{ -		return LL_UNIT_PROMOTE_VALUE(OUTPUT_TYPE, mInput) / other; +		return typename LLPromotedType<INPUT_TYPE, OUTPUT_TYPE>::type_t(mInput) / other;  	}  	template<typename T>  	output_t operator / (T other)  	{ -		return mInput * other; +		return typename LLPromotedType<INPUT_TYPE, OUTPUT_TYPE>::type_t(mInput) * other;  	}  	template<typename T>  	output_t operator + (T other)  	{ -		return mInput - other; +		return typename LLPromotedType<INPUT_TYPE, OUTPUT_TYPE>::type_t(mInput) - other;  	}  	template<typename T>  	output_t operator - (T other)  	{ -		return mInput + other; +		return typename LLPromotedType<INPUT_TYPE, OUTPUT_TYPE>::type_t(mInput) + other;  	}  }; @@ -621,13 +649,13 @@ struct unit_name  template<typename S1, typename S2>                                                                      \  void ll_convert_units(LLUnit<S1, unit_name> in, LLUnit<S2, base_unit_name>& out)                        \  {                                                                                                       \ -	out = LLUnit<S2, base_unit_name>((S2)(LLUnitLinearOps<S1, S2>(in.value()) conversion_operation));		\ +	out = LLUnit<S2, base_unit_name>((S2)(LLUnitLinearOps<S1, S2>(in.value()) conversion_operation));	\  }                                                                                                       \                                                                                                          \  template<typename S1, typename S2>                                                                      \  void ll_convert_units(LLUnit<S1, base_unit_name> in, LLUnit<S2, unit_name>& out)                        \  {                                                                                                       \ -	out = LLUnit<S2, unit_name>((S2)(LLUnitInverseLinearOps<S1, S2>(in.value()) conversion_operation));     \ +	out = LLUnit<S2, unit_name>((S2)(LLUnitInverseLinearOps<S1, S2>(in.value()) conversion_operation)); \  }                                                                                                 // @@ -637,120 +665,140 @@ void ll_convert_units(LLUnit<S1, base_unit_name> in, LLUnit<S2, unit_name>& out)  namespace LLUnits  {  LL_DECLARE_BASE_UNIT(Bytes, "B"); -LL_DECLARE_DERIVED_UNIT(Bytes, * 1000,			Kilobytes, "KB"); -LL_DECLARE_DERIVED_UNIT(Kilobytes, * 1000,		Megabytes, "MB"); -LL_DECLARE_DERIVED_UNIT(Megabytes, * 1000,		Gigabytes, "GB"); -LL_DECLARE_DERIVED_UNIT(Bytes, * 1024,			Kibibytes, "KiB"); -LL_DECLARE_DERIVED_UNIT(Kibibytes, * 1024,		Mibibytes, "MiB"); -LL_DECLARE_DERIVED_UNIT(Mibibytes, * 1024,		Gibibytes, "GiB"); +// technically, these are kibibytes, mibibytes, etc. but we should stick with commonly accepted terminology +LL_DECLARE_DERIVED_UNIT(Bytes, * 1024,			Kilobytes, "KB"); +LL_DECLARE_DERIVED_UNIT(Kilobytes, * 1024,		Megabytes, "MB"); +LL_DECLARE_DERIVED_UNIT(Megabytes, * 1024,		Gigabytes, "GB");  }  typedef LLUnit<F32, LLUnits::Bytes>     F32Bytes;  typedef LLUnit<F32, LLUnits::Kilobytes> F32Kilobytes;  typedef LLUnit<F32, LLUnits::Megabytes> F32Megabytes;  typedef LLUnit<F32, LLUnits::Gigabytes> F32Gigabytes; -typedef LLUnit<F32, LLUnits::Kibibytes> F32Kibibytes; -typedef LLUnit<F32, LLUnits::Mibibytes> F32Mibibytes; -typedef LLUnit<F32, LLUnits::Gibibytes> F32Gibibytes; + +typedef LLUnitImplicit<F32, LLUnits::Bytes>     F32BytesImplicit; +typedef LLUnitImplicit<F32, LLUnits::Kilobytes> F32KilobytesImplicit; +typedef LLUnitImplicit<F32, LLUnits::Megabytes> F32MegabytesImplicit; +typedef LLUnitImplicit<F32, LLUnits::Gigabytes> F32GigabytesImplicit;  typedef LLUnit<F64, LLUnits::Bytes>     F64Bytes;  typedef LLUnit<F64, LLUnits::Kilobytes> F64Kilobytes;  typedef LLUnit<F64, LLUnits::Megabytes> F64Megabytes;  typedef LLUnit<F64, LLUnits::Gigabytes> F64Gigabytes; -typedef LLUnit<F64, LLUnits::Kibibytes> F64Kibibytes; -typedef LLUnit<F64, LLUnits::Mibibytes> F64Mibibytes; -typedef LLUnit<F64, LLUnits::Gibibytes> F64Gibibytes; + +typedef LLUnitImplicit<F64, LLUnits::Bytes>     F64BytesImplicit; +typedef LLUnitImplicit<F64, LLUnits::Kilobytes> F64KilobytesImplicit; +typedef LLUnitImplicit<F64, LLUnits::Megabytes> F64MegabytesImplicit; +typedef LLUnitImplicit<F64, LLUnits::Gigabytes> F64GigabytesImplicit;  typedef LLUnit<S32, LLUnits::Bytes>     S32Bytes;  typedef LLUnit<S32, LLUnits::Kilobytes> S32Kilobytes;  typedef LLUnit<S32, LLUnits::Megabytes> S32Megabytes;  typedef LLUnit<S32, LLUnits::Gigabytes> S32Gigabytes; -typedef LLUnit<S32, LLUnits::Kibibytes> S32Kibibytes; -typedef LLUnit<S32, LLUnits::Mibibytes> S32Mibibytes; -typedef LLUnit<S32, LLUnits::Gibibytes> S32Gibibytes; -typedef LLUnit<U32, LLUnits::Bytes>     U32Bytes; -typedef LLUnit<U32, LLUnits::Kilobytes> U32Kilobytes; -typedef LLUnit<U32, LLUnits::Megabytes> U32Megabytes; -typedef LLUnit<U32, LLUnits::Gigabytes> U32Gigabytes; -typedef LLUnit<U32, LLUnits::Kibibytes> U32Kibibytes; -typedef LLUnit<U32, LLUnits::Mibibytes> U32Mibibytes; -typedef LLUnit<U32, LLUnits::Gibibytes> U32Gibibytes; +typedef LLUnitImplicit<S32, LLUnits::Bytes>     S32BytesImplicit; +typedef LLUnitImplicit<S32, LLUnits::Kilobytes> S32KilobytesImplicit; +typedef LLUnitImplicit<S32, LLUnits::Megabytes> S32MegabytesImplicit; +typedef LLUnitImplicit<S32, LLUnits::Gigabytes> S32GigabytesImplicit;  typedef LLUnit<S64, LLUnits::Bytes>     S64Bytes;  typedef LLUnit<S64, LLUnits::Kilobytes> S64Kilobytes;  typedef LLUnit<S64, LLUnits::Megabytes> S64Megabytes;  typedef LLUnit<S64, LLUnits::Gigabytes> S64Gigabytes; -typedef LLUnit<S64, LLUnits::Kibibytes> S64Kibibytes; -typedef LLUnit<S64, LLUnits::Mibibytes> S64Mibibytes; -typedef LLUnit<S64, LLUnits::Gibibytes> S64Gibibytes; + +typedef LLUnitImplicit<S64, LLUnits::Bytes>     S64BytesImplicit; +typedef LLUnitImplicit<S64, LLUnits::Kilobytes> S64KilobytesImplicit; +typedef LLUnitImplicit<S64, LLUnits::Megabytes> S64MegabytesImplicit; +typedef LLUnitImplicit<S64, LLUnits::Gigabytes> S64GigabytesImplicit; + +typedef LLUnit<U32, LLUnits::Bytes>     U32Bytes; +typedef LLUnit<U32, LLUnits::Kilobytes> U32Kilobytes; +typedef LLUnit<U32, LLUnits::Megabytes> U32Megabytes; +typedef LLUnit<U32, LLUnits::Gigabytes> U32Gigabytes; + +typedef LLUnitImplicit<U32, LLUnits::Bytes>     U32BytesImplicit; +typedef LLUnitImplicit<U32, LLUnits::Kilobytes> U32KilobytesImplicit; +typedef LLUnitImplicit<U32, LLUnits::Megabytes> U32MegabytesImplicit; +typedef LLUnitImplicit<U32, LLUnits::Gigabytes> U32GigabytesImplicit;  typedef LLUnit<U64, LLUnits::Bytes>     U64Bytes;  typedef LLUnit<U64, LLUnits::Kilobytes> U64Kilobytes;  typedef LLUnit<U64, LLUnits::Megabytes> U64Megabytes;  typedef LLUnit<U64, LLUnits::Gigabytes> U64Gigabytes; -typedef LLUnit<U64, LLUnits::Kibibytes> U64Kibibytes; -typedef LLUnit<U64, LLUnits::Mibibytes> U64Mibibytes; -typedef LLUnit<U64, LLUnits::Gibibytes> U64Gibibytes; + +typedef LLUnitImplicit<U64, LLUnits::Bytes>     U64BytesImplicit; +typedef LLUnitImplicit<U64, LLUnits::Kilobytes> U64KilobytesImplicit; +typedef LLUnitImplicit<U64, LLUnits::Megabytes> U64MegabytesImplicit; +typedef LLUnitImplicit<U64, LLUnits::Gigabytes> U64GigabytesImplicit;  namespace LLUnits  { +// technically, these are kibibits, mibibits, etc. but we should stick with commonly accepted terminology  LL_DECLARE_DERIVED_UNIT(Bytes, / 8,				Bits, "b"); -LL_DECLARE_DERIVED_UNIT(Bits, * 1000,			Kilobits, "Kb"); -LL_DECLARE_DERIVED_UNIT(Kilobits, * 1000,		Megabits, "Mb"); -LL_DECLARE_DERIVED_UNIT(Megabits, * 1000,		Gigabits, "Gb"); -LL_DECLARE_DERIVED_UNIT(Bits, * 1024,			Kibibits, "Kib"); -LL_DECLARE_DERIVED_UNIT(Kibibits, * 1024,		Mibibits, "Mib");   -LL_DECLARE_DERIVED_UNIT(Mibibits, * 1024,		Gibibits, "Gib"); +LL_DECLARE_DERIVED_UNIT(Bits, * 1024,			Kilobits, "Kb"); +LL_DECLARE_DERIVED_UNIT(Kilobits, * 1024,		Megabits, "Mb");   +LL_DECLARE_DERIVED_UNIT(Megabits, * 1024,		Gigabits, "Gb");  }  typedef LLUnit<F32, LLUnits::Bits>     F32Bits;  typedef LLUnit<F32, LLUnits::Kilobits> F32Kilobits;  typedef LLUnit<F32, LLUnits::Megabits> F32Megabits;  typedef LLUnit<F32, LLUnits::Gigabits> F32Gigabits; -typedef LLUnit<F32, LLUnits::Kibibits> F32Kibibits; -typedef LLUnit<F32, LLUnits::Mibibits> F32Mibibits; -typedef LLUnit<F32, LLUnits::Gibibits> F32Gibibits; -					 + +typedef LLUnitImplicit<F32, LLUnits::Bits>     F32BitsImplicit; +typedef LLUnitImplicit<F32, LLUnits::Kilobits> F32KilobitsImplicit; +typedef LLUnitImplicit<F32, LLUnits::Megabits> F32MegabitsImplicit; +typedef LLUnitImplicit<F32, LLUnits::Gigabits> F32GigabitsImplicit; +  typedef LLUnit<F64, LLUnits::Bits>     F64Bits;  typedef LLUnit<F64, LLUnits::Kilobits> F64Kilobits;  typedef LLUnit<F64, LLUnits::Megabits> F64Megabits;  typedef LLUnit<F64, LLUnits::Gigabits> F64Gigabits; -typedef LLUnit<F64, LLUnits::Kibibits> F64Kibibits; -typedef LLUnit<F64, LLUnits::Mibibits> F64Mibibits; -typedef LLUnit<F64, LLUnits::Gibibits> F64Gibibits; + +typedef LLUnitImplicit<F64, LLUnits::Bits>     F64BitsImplicit; +typedef LLUnitImplicit<F64, LLUnits::Kilobits> F64KilobitsImplicit; +typedef LLUnitImplicit<F64, LLUnits::Megabits> F64MegabitsImplicit; +typedef LLUnitImplicit<F64, LLUnits::Gigabits> F64GigabitsImplicit;  typedef LLUnit<S32, LLUnits::Bits>     S32Bits;  typedef LLUnit<S32, LLUnits::Kilobits> S32Kilobits;  typedef LLUnit<S32, LLUnits::Megabits> S32Megabits;  typedef LLUnit<S32, LLUnits::Gigabits> S32Gigabits; -typedef LLUnit<S32, LLUnits::Kibibits> S32Kibibits; -typedef LLUnit<S32, LLUnits::Mibibits> S32Mibibits; -typedef LLUnit<S32, LLUnits::Gibibits> S32Gibibits; -typedef LLUnit<U32, LLUnits::Bits>     U32Bits; -typedef LLUnit<U32, LLUnits::Kilobits> U32Kilobits; -typedef LLUnit<U32, LLUnits::Megabits> U32Megabits; -typedef LLUnit<U32, LLUnits::Gigabits> U32Gigabits; -typedef LLUnit<U32, LLUnits::Kibibits> U32Kibibits; -typedef LLUnit<U32, LLUnits::Mibibits> U32Mibibits; -typedef LLUnit<U32, LLUnits::Gibibits> U32Gibibits; +typedef LLUnitImplicit<S32, LLUnits::Bits>     S32BitsImplicit; +typedef LLUnitImplicit<S32, LLUnits::Kilobits> S32KilobitsImplicit; +typedef LLUnitImplicit<S32, LLUnits::Megabits> S32MegabitsImplicit; +typedef LLUnitImplicit<S32, LLUnits::Gigabits> S32GigabitsImplicit;  typedef LLUnit<S64, LLUnits::Bits>     S64Bits;  typedef LLUnit<S64, LLUnits::Kilobits> S64Kilobits;  typedef LLUnit<S64, LLUnits::Megabits> S64Megabits;  typedef LLUnit<S64, LLUnits::Gigabits> S64Gigabits; -typedef LLUnit<S64, LLUnits::Kibibits> S64Kibibits; -typedef LLUnit<S64, LLUnits::Mibibits> S64Mibibits; -typedef LLUnit<S64, LLUnits::Gibibits> S64Gibibits; + +typedef LLUnitImplicit<S64, LLUnits::Bits>     S64BitsImplicit; +typedef LLUnitImplicit<S64, LLUnits::Kilobits> S64KilobitsImplicit; +typedef LLUnitImplicit<S64, LLUnits::Megabits> S64MegabitsImplicit; +typedef LLUnitImplicit<S64, LLUnits::Gigabits> S64GigabitsImplicit; + +typedef LLUnit<U32, LLUnits::Bits>     U32Bits; +typedef LLUnit<U32, LLUnits::Kilobits> U32Kilobits; +typedef LLUnit<U32, LLUnits::Megabits> U32Megabits; +typedef LLUnit<U32, LLUnits::Gigabits> U32Gigabits; + +typedef LLUnitImplicit<U32, LLUnits::Bits>     U32BitsImplicit; +typedef LLUnitImplicit<U32, LLUnits::Kilobits> U32KilobitsImplicit; +typedef LLUnitImplicit<U32, LLUnits::Megabits> U32MegabitsImplicit; +typedef LLUnitImplicit<U32, LLUnits::Gigabits> U32GigabitsImplicit;  typedef LLUnit<U64, LLUnits::Bits>     U64Bits;  typedef LLUnit<U64, LLUnits::Kilobits> U64Kilobits;  typedef LLUnit<U64, LLUnits::Megabits> U64Megabits;  typedef LLUnit<U64, LLUnits::Gigabits> U64Gigabits; -typedef LLUnit<U64, LLUnits::Kibibits> U64Kibibits; -typedef LLUnit<U64, LLUnits::Mibibits> U64Mibibits; -typedef LLUnit<U64, LLUnits::Gibibits> U64Gibibits; + +typedef LLUnitImplicit<U64, LLUnits::Bits>     U64BitsImplicit; +typedef LLUnitImplicit<U64, LLUnits::Kilobits> U64KilobitsImplicit; +typedef LLUnitImplicit<U64, LLUnits::Megabits> U64MegabitsImplicit; +typedef LLUnitImplicit<U64, LLUnits::Gigabits> U64GigabitsImplicit;  namespace LLUnits  { @@ -771,6 +819,14 @@ typedef LLUnit<F32, LLUnits::Milliseconds> F32Milliseconds;  typedef LLUnit<F32, LLUnits::Microseconds> F32Microseconds;  typedef LLUnit<F32, LLUnits::Nanoseconds>  F32Nanoseconds; +typedef LLUnitImplicit<F32, LLUnits::Seconds>      F32SecondsImplicit; +typedef LLUnitImplicit<F32, LLUnits::Minutes>      F32MinutesImplicit; +typedef LLUnitImplicit<F32, LLUnits::Hours>        F32HoursImplicit; +typedef LLUnitImplicit<F32, LLUnits::Days>         F32DaysImplicit; +typedef LLUnitImplicit<F32, LLUnits::Milliseconds> F32MillisecondsImplicit; +typedef LLUnitImplicit<F32, LLUnits::Microseconds> F32MicrosecondsImplicit; +typedef LLUnitImplicit<F32, LLUnits::Nanoseconds>  F32NanosecondsImplicit; +  typedef LLUnit<F64, LLUnits::Seconds>      F64Seconds;  typedef LLUnit<F64, LLUnits::Minutes>      F64Minutes;  typedef LLUnit<F64, LLUnits::Hours>        F64Hours; @@ -779,6 +835,14 @@ typedef LLUnit<F64, LLUnits::Milliseconds> F64Milliseconds;  typedef LLUnit<F64, LLUnits::Microseconds> F64Microseconds;  typedef LLUnit<F64, LLUnits::Nanoseconds>  F64Nanoseconds; +typedef LLUnitImplicit<F64, LLUnits::Seconds>      F64SecondsImplicit; +typedef LLUnitImplicit<F64, LLUnits::Minutes>      F64MinutesImplicit; +typedef LLUnitImplicit<F64, LLUnits::Hours>        F64HoursImplicit; +typedef LLUnitImplicit<F64, LLUnits::Days>         F64DaysImplicit; +typedef LLUnitImplicit<F64, LLUnits::Milliseconds> F64MillisecondsImplicit; +typedef LLUnitImplicit<F64, LLUnits::Microseconds> F64MicrosecondsImplicit; +typedef LLUnitImplicit<F64, LLUnits::Nanoseconds>  F64NanosecondsImplicit; +  typedef LLUnit<S32, LLUnits::Seconds>      S32Seconds;  typedef LLUnit<S32, LLUnits::Minutes>      S32Minutes;  typedef LLUnit<S32, LLUnits::Hours>        S32Hours; @@ -787,13 +851,13 @@ typedef LLUnit<S32, LLUnits::Milliseconds> S32Milliseconds;  typedef LLUnit<S32, LLUnits::Microseconds> S32Microseconds;  typedef LLUnit<S32, LLUnits::Nanoseconds>  S32Nanoseconds; -typedef LLUnit<U32, LLUnits::Seconds>      U32Seconds; -typedef LLUnit<U32, LLUnits::Minutes>      U32Minutes; -typedef LLUnit<U32, LLUnits::Hours>        U32Hours; -typedef LLUnit<U32, LLUnits::Days>         U32Days; -typedef LLUnit<U32, LLUnits::Milliseconds> U32Milliseconds; -typedef LLUnit<U32, LLUnits::Microseconds> U32Microseconds; -typedef LLUnit<U32, LLUnits::Nanoseconds>  U32Nanoseconds; +typedef LLUnitImplicit<S32, LLUnits::Seconds>      S32SecondsImplicit; +typedef LLUnitImplicit<S32, LLUnits::Minutes>      S32MinutesImplicit; +typedef LLUnitImplicit<S32, LLUnits::Hours>        S32HoursImplicit; +typedef LLUnitImplicit<S32, LLUnits::Days>         S32DaysImplicit; +typedef LLUnitImplicit<S32, LLUnits::Milliseconds> S32MillisecondsImplicit; +typedef LLUnitImplicit<S32, LLUnits::Microseconds> S32MicrosecondsImplicit; +typedef LLUnitImplicit<S32, LLUnits::Nanoseconds>  S32NanosecondsImplicit;  typedef LLUnit<S64, LLUnits::Seconds>      S64Seconds;  typedef LLUnit<S64, LLUnits::Minutes>      S64Minutes; @@ -802,7 +866,31 @@ typedef LLUnit<S64, LLUnits::Days>         S64Days;  typedef LLUnit<S64, LLUnits::Milliseconds> S64Milliseconds;  typedef LLUnit<S64, LLUnits::Microseconds> S64Microseconds;  typedef LLUnit<S64, LLUnits::Nanoseconds>  S64Nanoseconds; -					 + +typedef LLUnitImplicit<S64, LLUnits::Seconds>      S64SecondsImplicit; +typedef LLUnitImplicit<S64, LLUnits::Minutes>      S64MinutesImplicit; +typedef LLUnitImplicit<S64, LLUnits::Hours>        S64HoursImplicit; +typedef LLUnitImplicit<S64, LLUnits::Days>         S64DaysImplicit; +typedef LLUnitImplicit<S64, LLUnits::Milliseconds> S64MillisecondsImplicit; +typedef LLUnitImplicit<S64, LLUnits::Microseconds> S64MicrosecondsImplicit; +typedef LLUnitImplicit<S64, LLUnits::Nanoseconds>  S64NanosecondsImplicit; + +typedef LLUnit<U32, LLUnits::Seconds>      U32Seconds; +typedef LLUnit<U32, LLUnits::Minutes>      U32Minutes; +typedef LLUnit<U32, LLUnits::Hours>        U32Hours; +typedef LLUnit<U32, LLUnits::Days>         U32Days; +typedef LLUnit<U32, LLUnits::Milliseconds> U32Milliseconds; +typedef LLUnit<U32, LLUnits::Microseconds> U32Microseconds; +typedef LLUnit<U32, LLUnits::Nanoseconds>  U32Nanoseconds; + +typedef LLUnitImplicit<U32, LLUnits::Seconds>      U32SecondsImplicit; +typedef LLUnitImplicit<U32, LLUnits::Minutes>      U32MinutesImplicit; +typedef LLUnitImplicit<U32, LLUnits::Hours>        U32HoursImplicit; +typedef LLUnitImplicit<U32, LLUnits::Days>         U32DaysImplicit; +typedef LLUnitImplicit<U32, LLUnits::Milliseconds> U32MillisecondsImplicit; +typedef LLUnitImplicit<U32, LLUnits::Microseconds> U32MicrosecondsImplicit; +typedef LLUnitImplicit<U32, LLUnits::Nanoseconds>  U32NanosecondsImplicit; +  typedef LLUnit<U64, LLUnits::Seconds>      U64Seconds;  typedef LLUnit<U64, LLUnits::Minutes>      U64Minutes;  typedef LLUnit<U64, LLUnits::Hours>        U64Hours; @@ -811,6 +899,14 @@ typedef LLUnit<U64, LLUnits::Milliseconds> U64Milliseconds;  typedef LLUnit<U64, LLUnits::Microseconds> U64Microseconds;  typedef LLUnit<U64, LLUnits::Nanoseconds>  U64Nanoseconds; +typedef LLUnitImplicit<U64, LLUnits::Seconds>      U64SecondsImplicit; +typedef LLUnitImplicit<U64, LLUnits::Minutes>      U64MinutesImplicit; +typedef LLUnitImplicit<U64, LLUnits::Hours>        U64HoursImplicit; +typedef LLUnitImplicit<U64, LLUnits::Days>         U64DaysImplicit; +typedef LLUnitImplicit<U64, LLUnits::Milliseconds> U64MillisecondsImplicit; +typedef LLUnitImplicit<U64, LLUnits::Microseconds> U64MicrosecondsImplicit; +typedef LLUnitImplicit<U64, LLUnits::Nanoseconds>  U64NanosecondsImplicit; +  namespace LLUnits  {  LL_DECLARE_BASE_UNIT(Meters, "m"); @@ -824,31 +920,61 @@ typedef LLUnit<F32, LLUnits::Kilometers>  F32Kilometers;  typedef LLUnit<F32, LLUnits::Centimeters> F32Centimeters;  typedef LLUnit<F32, LLUnits::Millimeters> F32Millimeters; +typedef LLUnitImplicit<F32, LLUnits::Meters>      F32MetersImplicit; +typedef LLUnitImplicit<F32, LLUnits::Kilometers>  F32KilometersImplicit; +typedef LLUnitImplicit<F32, LLUnits::Centimeters> F32CentimetersImplicit; +typedef LLUnitImplicit<F32, LLUnits::Millimeters> F32MillimetersImplicit; +  typedef LLUnit<F64, LLUnits::Meters>      F64Meters;  typedef LLUnit<F64, LLUnits::Kilometers>  F64Kilometers;  typedef LLUnit<F64, LLUnits::Centimeters> F64Centimeters;  typedef LLUnit<F64, LLUnits::Millimeters> F64Millimeters; +typedef LLUnitImplicit<F64, LLUnits::Meters>      F64MetersImplicit; +typedef LLUnitImplicit<F64, LLUnits::Kilometers>  F64KilometersImplicit; +typedef LLUnitImplicit<F64, LLUnits::Centimeters> F64CentimetersImplicit; +typedef LLUnitImplicit<F64, LLUnits::Millimeters> F64MillimetersImplicit; +  typedef LLUnit<S32, LLUnits::Meters>      S32Meters;  typedef LLUnit<S32, LLUnits::Kilometers>  S32Kilometers;  typedef LLUnit<S32, LLUnits::Centimeters> S32Centimeters;  typedef LLUnit<S32, LLUnits::Millimeters> S32Millimeters; -typedef LLUnit<U32, LLUnits::Meters>      U32Meters; -typedef LLUnit<U32, LLUnits::Kilometers>  U32Kilometers; -typedef LLUnit<U32, LLUnits::Centimeters> U32Centimeters; -typedef LLUnit<U32, LLUnits::Millimeters> U32Millimeters; +typedef LLUnitImplicit<S32, LLUnits::Meters>      S32MetersImplicit; +typedef LLUnitImplicit<S32, LLUnits::Kilometers>  S32KilometersImplicit; +typedef LLUnitImplicit<S32, LLUnits::Centimeters> S32CentimetersImplicit; +typedef LLUnitImplicit<S32, LLUnits::Millimeters> S32MillimetersImplicit;  typedef LLUnit<S64, LLUnits::Meters>      S64Meters;  typedef LLUnit<S64, LLUnits::Kilometers>  S64Kilometers;  typedef LLUnit<S64, LLUnits::Centimeters> S64Centimeters;  typedef LLUnit<S64, LLUnits::Millimeters> S64Millimeters; +typedef LLUnitImplicit<S64, LLUnits::Meters>      S64MetersImplicit; +typedef LLUnitImplicit<S64, LLUnits::Kilometers>  S64KilometersImplicit; +typedef LLUnitImplicit<S64, LLUnits::Centimeters> S64CentimetersImplicit; +typedef LLUnitImplicit<S64, LLUnits::Millimeters> S64MillimetersImplicit; + +typedef LLUnit<U32, LLUnits::Meters>      U32Meters; +typedef LLUnit<U32, LLUnits::Kilometers>  U32Kilometers; +typedef LLUnit<U32, LLUnits::Centimeters> U32Centimeters; +typedef LLUnit<U32, LLUnits::Millimeters> U32Millimeters; + +typedef LLUnitImplicit<U32, LLUnits::Meters>      U32MetersImplicit; +typedef LLUnitImplicit<U32, LLUnits::Kilometers>  U32KilometersImplicit; +typedef LLUnitImplicit<U32, LLUnits::Centimeters> U32CentimetersImplicit; +typedef LLUnitImplicit<U32, LLUnits::Millimeters> U32MillimetersImplicit; +  typedef LLUnit<U64, LLUnits::Meters>      U64Meters;  typedef LLUnit<U64, LLUnits::Kilometers>  U64Kilometers;  typedef LLUnit<U64, LLUnits::Centimeters> U64Centimeters;  typedef LLUnit<U64, LLUnits::Millimeters> U64Millimeters; +typedef LLUnitImplicit<U64, LLUnits::Meters>      U64MetersImplicit; +typedef LLUnitImplicit<U64, LLUnits::Kilometers>  U64KilometersImplicit; +typedef LLUnitImplicit<U64, LLUnits::Centimeters> U64CentimetersImplicit; +typedef LLUnitImplicit<U64, LLUnits::Millimeters> U64MillimetersImplicit; +  namespace LLUnits  {  // rare units @@ -868,4 +994,137 @@ LL_DECLARE_DERIVED_UNIT(Triangles, * 1000,		Kilotriangles, "ktris");  } // namespace LLUnits +// rare units +typedef LLUnit<F32, LLUnits::Hertz>			F32Hertz; +typedef LLUnit<F32, LLUnits::Kilohertz>		F32Kilohertz; +typedef LLUnit<F32, LLUnits::Megahertz>		F32Megahertz; +typedef LLUnit<F32, LLUnits::Gigahertz>		F32Gigahertz; +typedef LLUnit<F32, LLUnits::Radians>		F32Radians; +typedef LLUnit<F32, LLUnits::Degrees>		F32Degrees; +typedef LLUnit<F32, LLUnits::Percent>		F32Percent; +typedef LLUnit<F32, LLUnits::Ratio>			F32Ratio; +typedef LLUnit<F32, LLUnits::Triangles>		F32Triangles; +typedef LLUnit<F32, LLUnits::Kilotriangles>	F32KiloTriangles; + +typedef LLUnitImplicit<F32, LLUnits::Hertz>			F32HertzImplicit; +typedef LLUnitImplicit<F32, LLUnits::Kilohertz>		F32KilohertzImplicit; +typedef LLUnitImplicit<F32, LLUnits::Megahertz>		F32MegahertzImplicit; +typedef LLUnitImplicit<F32, LLUnits::Gigahertz>		F32GigahertzImplicit; +typedef LLUnitImplicit<F32, LLUnits::Radians>		F32RadiansImplicit; +typedef LLUnitImplicit<F32, LLUnits::Degrees>		F32DegreesImplicit; +typedef LLUnitImplicit<F32, LLUnits::Percent>		F32PercentImplicit; +typedef LLUnitImplicit<F32, LLUnits::Ratio>			F32RatioImplicit; +typedef LLUnitImplicit<F32, LLUnits::Triangles>		F32TrianglesImplicit; +typedef LLUnitImplicit<F32, LLUnits::Kilotriangles>	F32KiloTrianglesImplicit; + +typedef LLUnit<F64, LLUnits::Hertz>			F64Hertz; +typedef LLUnit<F64, LLUnits::Kilohertz>		F64Kilohertz; +typedef LLUnit<F64, LLUnits::Megahertz>		F64Megahertz; +typedef LLUnit<F64, LLUnits::Gigahertz>		F64Gigahertz; +typedef LLUnit<F64, LLUnits::Radians>		F64Radians; +typedef LLUnit<F64, LLUnits::Degrees>		F64Degrees; +typedef LLUnit<F64, LLUnits::Percent>		F64Percent; +typedef LLUnit<F64, LLUnits::Ratio>			F64Ratio; +typedef LLUnit<F64, LLUnits::Triangles>		F64Triangles; +typedef LLUnit<F64, LLUnits::Kilotriangles>	F64KiloTriangles; + +typedef LLUnitImplicit<F64, LLUnits::Hertz>			F64HertzImplicit; +typedef LLUnitImplicit<F64, LLUnits::Kilohertz>		F64KilohertzImplicit; +typedef LLUnitImplicit<F64, LLUnits::Megahertz>		F64MegahertzImplicit; +typedef LLUnitImplicit<F64, LLUnits::Gigahertz>		F64GigahertzImplicit; +typedef LLUnitImplicit<F64, LLUnits::Radians>		F64RadiansImplicit; +typedef LLUnitImplicit<F64, LLUnits::Degrees>		F64DegreesImplicit; +typedef LLUnitImplicit<F64, LLUnits::Percent>		F64PercentImplicit; +typedef LLUnitImplicit<F64, LLUnits::Ratio>			F64RatioImplicit; +typedef LLUnitImplicit<F64, LLUnits::Triangles>		F64TrianglesImplicit; +typedef LLUnitImplicit<F64, LLUnits::Kilotriangles>	F64KiloTrianglesImplicit; + +typedef LLUnit<S32, LLUnits::Hertz>			S32Hertz; +typedef LLUnit<S32, LLUnits::Kilohertz>		S32Kilohertz; +typedef LLUnit<S32, LLUnits::Megahertz>		S32Megahertz; +typedef LLUnit<S32, LLUnits::Gigahertz>		S32Gigahertz; +typedef LLUnit<S32, LLUnits::Radians>		S32Radians; +typedef LLUnit<S32, LLUnits::Degrees>		S32Degrees; +typedef LLUnit<S32, LLUnits::Percent>		S32Percent; +typedef LLUnit<S32, LLUnits::Ratio>			S32Ratio; +typedef LLUnit<S32, LLUnits::Triangles>		S32Triangles; +typedef LLUnit<S32, LLUnits::Kilotriangles>	S32KiloTriangles; + +typedef LLUnitImplicit<S32, LLUnits::Hertz>			S32HertzImplicit; +typedef LLUnitImplicit<S32, LLUnits::Kilohertz>		S32KilohertzImplicit; +typedef LLUnitImplicit<S32, LLUnits::Megahertz>		S32MegahertzImplicit; +typedef LLUnitImplicit<S32, LLUnits::Gigahertz>		S32GigahertzImplicit; +typedef LLUnitImplicit<S32, LLUnits::Radians>		S32RadiansImplicit; +typedef LLUnitImplicit<S32, LLUnits::Degrees>		S32DegreesImplicit; +typedef LLUnitImplicit<S32, LLUnits::Percent>		S32PercentImplicit; +typedef LLUnitImplicit<S32, LLUnits::Ratio>			S32RatioImplicit; +typedef LLUnitImplicit<S32, LLUnits::Triangles>		S32TrianglesImplicit; +typedef LLUnitImplicit<S32, LLUnits::Kilotriangles>	S32KiloTrianglesImplicit; + +typedef LLUnit<S64, LLUnits::Hertz>			S64Hertz; +typedef LLUnit<S64, LLUnits::Kilohertz>		S64Kilohertz; +typedef LLUnit<S64, LLUnits::Megahertz>		S64Megahertz; +typedef LLUnit<S64, LLUnits::Gigahertz>		S64Gigahertz; +typedef LLUnit<S64, LLUnits::Radians>		S64Radians; +typedef LLUnit<S64, LLUnits::Degrees>		S64Degrees; +typedef LLUnit<S64, LLUnits::Percent>		S64Percent; +typedef LLUnit<S64, LLUnits::Ratio>			S64Ratio; +typedef LLUnit<S64, LLUnits::Triangles>		S64Triangles; +typedef LLUnit<S64, LLUnits::Kilotriangles>	S64KiloTriangles; + +typedef LLUnitImplicit<S64, LLUnits::Hertz>			S64HertzImplicit; +typedef LLUnitImplicit<S64, LLUnits::Kilohertz>		S64KilohertzImplicit; +typedef LLUnitImplicit<S64, LLUnits::Megahertz>		S64MegahertzImplicit; +typedef LLUnitImplicit<S64, LLUnits::Gigahertz>		S64GigahertzImplicit; +typedef LLUnitImplicit<S64, LLUnits::Radians>		S64RadiansImplicit; +typedef LLUnitImplicit<S64, LLUnits::Degrees>		S64DegreesImplicit; +typedef LLUnitImplicit<S64, LLUnits::Percent>		S64PercentImplicit; +typedef LLUnitImplicit<S64, LLUnits::Ratio>			S64RatioImplicit; +typedef LLUnitImplicit<S64, LLUnits::Triangles>		S64TrianglesImplicit; +typedef LLUnitImplicit<S64, LLUnits::Kilotriangles>	S64KiloTrianglesImplicit; + +typedef LLUnit<U32, LLUnits::Hertz>			U32Hertz; +typedef LLUnit<U32, LLUnits::Kilohertz>		U32Kilohertz; +typedef LLUnit<U32, LLUnits::Megahertz>		U32Megahertz; +typedef LLUnit<U32, LLUnits::Gigahertz>		U32Gigahertz; +typedef LLUnit<U32, LLUnits::Radians>		U32Radians; +typedef LLUnit<U32, LLUnits::Degrees>		U32Degrees; +typedef LLUnit<U32, LLUnits::Percent>		U32Percent; +typedef LLUnit<U32, LLUnits::Ratio>			U32Ratio; +typedef LLUnit<U32, LLUnits::Triangles>		U32Triangles; +typedef LLUnit<U32, LLUnits::Kilotriangles>	U32KiloTriangles; + +typedef LLUnitImplicit<U32, LLUnits::Hertz>			U32HertzImplicit; +typedef LLUnitImplicit<U32, LLUnits::Kilohertz>		U32KilohertzImplicit; +typedef LLUnitImplicit<U32, LLUnits::Megahertz>		U32MegahertzImplicit; +typedef LLUnitImplicit<U32, LLUnits::Gigahertz>		U32GigahertzImplicit; +typedef LLUnitImplicit<U32, LLUnits::Radians>		U32RadiansImplicit; +typedef LLUnitImplicit<U32, LLUnits::Degrees>		U32DegreesImplicit; +typedef LLUnitImplicit<U32, LLUnits::Percent>		U32PercentImplicit; +typedef LLUnitImplicit<U32, LLUnits::Ratio>			U32RatioImplicit; +typedef LLUnitImplicit<U32, LLUnits::Triangles>		U32TrianglesImplicit; +typedef LLUnitImplicit<U32, LLUnits::Kilotriangles>	U32KiloTrianglesImplicit; + +typedef LLUnit<U64, LLUnits::Hertz>			U64Hertz; +typedef LLUnit<U64, LLUnits::Kilohertz>		U64Kilohertz; +typedef LLUnit<U64, LLUnits::Megahertz>		U64Megahertz; +typedef LLUnit<U64, LLUnits::Gigahertz>		U64Gigahertz; +typedef LLUnit<U64, LLUnits::Radians>		U64Radians; +typedef LLUnit<U64, LLUnits::Degrees>		U64Degrees; +typedef LLUnit<U64, LLUnits::Percent>		U64Percent; +typedef LLUnit<U64, LLUnits::Ratio>			U64Ratio; +typedef LLUnit<U64, LLUnits::Triangles>		U64Triangles; +typedef LLUnit<U64, LLUnits::Kilotriangles>	U64KiloTriangles; + +typedef LLUnitImplicit<U64, LLUnits::Hertz>			U64HertzImplicit; +typedef LLUnitImplicit<U64, LLUnits::Kilohertz>		U64KilohertzImplicit; +typedef LLUnitImplicit<U64, LLUnits::Megahertz>		U64MegahertzImplicit; +typedef LLUnitImplicit<U64, LLUnits::Gigahertz>		U64GigahertzImplicit; +typedef LLUnitImplicit<U64, LLUnits::Radians>		U64RadiansImplicit; +typedef LLUnitImplicit<U64, LLUnits::Degrees>		U64DegreesImplicit; +typedef LLUnitImplicit<U64, LLUnits::Percent>		U64PercentImplicit; +typedef LLUnitImplicit<U64, LLUnits::Ratio>			U64RatioImplicit; +typedef LLUnitImplicit<U64, LLUnits::Triangles>		U64TrianglesImplicit; +typedef LLUnitImplicit<U64, LLUnits::Kilotriangles>	U64KiloTrianglesImplicit; +  #endif // LL_LLUNIT_H diff --git a/indra/llcommon/tests/llunits_test.cpp b/indra/llcommon/tests/llunits_test.cpp index 8546bcbc54..a8e9be86ca 100644 --- a/indra/llcommon/tests/llunits_test.cpp +++ b/indra/llcommon/tests/llunits_test.cpp @@ -38,6 +38,13 @@ namespace LLUnits  	LL_DECLARE_DERIVED_UNIT(Latinum, / 16, Solari, "Sol");  } +typedef LLUnit<F32, LLUnits::Quatloos> F32Quatloos; +typedef LLUnit<S32, LLUnits::Quatloos> S32Quatloos; +typedef LLUnit<F32, LLUnits::Latinum> F32Latinum; +typedef LLUnit<S32, LLUnits::Latinum> S32Latinum; +typedef LLUnit<F32, LLUnits::Solari> F32Solari; +typedef LLUnit<S32, LLUnits::Solari> S32Solari; +  namespace tut  {  	using namespace LLUnits; @@ -54,28 +61,28 @@ namespace tut  	void units_object_t::test<1>()  	{  		LLUnit<F32, Quatloos> float_quatloos; -		ensure("default float unit is zero", float_quatloos == 0.f); +		ensure("default float unit is zero", float_quatloos == F32Quatloos(0.f));  		LLUnit<F32, Quatloos> float_initialize_quatloos(1); -		ensure("non-zero initialized unit", float_initialize_quatloos == 1.f); +		ensure("non-zero initialized unit", float_initialize_quatloos == F32Quatloos(1.f));  		LLUnit<S32, Quatloos> int_quatloos; -		ensure("default int unit is zero", int_quatloos == 0); +		ensure("default int unit is zero", int_quatloos == S32Quatloos(0)); -		int_quatloos = 42; -		ensure("int assignment is preserved", int_quatloos == 42); +		int_quatloos = S32Quatloos(42); +		ensure("int assignment is preserved", int_quatloos == S32Quatloos(42));  		float_quatloos = int_quatloos; -		ensure("float assignment from int preserves value", float_quatloos == 42.f); +		ensure("float assignment from int preserves value", float_quatloos == F32Quatloos(42.f));  		int_quatloos = float_quatloos; -		ensure("int assignment from float preserves value", int_quatloos == 42); +		ensure("int assignment from float preserves value", int_quatloos == S32Quatloos(42)); -		float_quatloos = 42.1f; +		float_quatloos = F32Quatloos(42.1f);  		int_quatloos = float_quatloos; -		ensure("int units truncate float units on assignment", int_quatloos == 42); +		ensure("int units truncate float units on assignment", int_quatloos == S32Quatloos(42));  		LLUnit<U32, Quatloos> unsigned_int_quatloos(float_quatloos); -		ensure("unsigned int can be initialized from signed int", unsigned_int_quatloos == 42); +		ensure("unsigned int can be initialized from signed int", unsigned_int_quatloos == S32Quatloos(42));  	}  	// conversions to/from base unit @@ -84,15 +91,15 @@ namespace tut  	{  		LLUnit<F32, Quatloos> quatloos(1.f);  		LLUnit<F32, Latinum> latinum_bars(quatloos); -		ensure("conversion between units is automatic via initialization", latinum_bars == 1.f / 4.f); +		ensure("conversion between units is automatic via initialization", latinum_bars == F32Latinum(1.f / 4.f)); -		latinum_bars = 256; +		latinum_bars = S32Latinum(256);  		quatloos = latinum_bars; -		ensure("conversion between units is automatic via assignment, and bidirectional", quatloos == 1024); +		ensure("conversion between units is automatic via assignment, and bidirectional", quatloos == S32Quatloos(1024));  		LLUnit<S32, Quatloos> single_quatloo(1);  		LLUnit<F32, Latinum> quarter_latinum = single_quatloo; -		ensure("division of integer unit preserves fractional values when converted to float unit", quarter_latinum == 0.25f); +		ensure("division of integer unit preserves fractional values when converted to float unit", quarter_latinum == F32Latinum(0.25f));  	}  	// conversions across non-base units @@ -101,10 +108,10 @@ namespace tut  	{  		LLUnit<F32, Quatloos> quatloos(1024);  		LLUnit<F32, Solari> solari(quatloos); -		ensure("conversions can work between indirectly related units: Quatloos -> Latinum -> Solari", solari == 4096); +		ensure("conversions can work between indirectly related units: Quatloos -> Latinum -> Solari", solari == S32Solari(4096));  		LLUnit<F32, Latinum> latinum_bars = solari; -		ensure("Non base units can be converted between each other", latinum_bars == 256); +		ensure("Non base units can be converted between each other", latinum_bars == S32Latinum(256));  	}  	// math operations @@ -114,36 +121,36 @@ namespace tut  		// exercise math operations  		LLUnit<F32, Quatloos> quatloos(1.f);  		quatloos *= 4.f; -		ensure(quatloos == 4); +		ensure(quatloos == S32Quatloos(4));  		quatloos = quatloos * 2; -		ensure(quatloos == 8); +		ensure(quatloos == S32Quatloos(8));  		quatloos = 2.f * quatloos; -		ensure(quatloos == 16); - -		quatloos += 4.f; -		ensure(quatloos == 20); -		quatloos += 4; -		ensure(quatloos == 24); -		quatloos = quatloos + 4; -		ensure(quatloos == 28); -		quatloos = 4 + quatloos; -		ensure(quatloos == 32); +		ensure(quatloos == S32Quatloos(16)); + +		quatloos += F32Quatloos(4.f); +		ensure(quatloos == S32Quatloos(20)); +		quatloos += S32Quatloos(4); +		ensure(quatloos == S32Quatloos(24)); +		quatloos = quatloos + S32Quatloos(4); +		ensure(quatloos == S32Quatloos(28)); +		quatloos = S32Quatloos(4) + quatloos; +		ensure(quatloos == S32Quatloos(32));  		quatloos += quatloos * 3; -		ensure(quatloos == 128); +		ensure(quatloos == S32Quatloos(128));  		quatloos -= quatloos / 4 * 3; -		ensure(quatloos == 32); -		quatloos = quatloos - 8; -		ensure(quatloos == 24); -		quatloos -= 4; -		ensure(quatloos == 20); -		quatloos -= 4.f; -		ensure(quatloos == 16); +		ensure(quatloos == S32Quatloos(32)); +		quatloos = quatloos - S32Quatloos(8); +		ensure(quatloos == S32Quatloos(24)); +		quatloos -= S32Quatloos(4); +		ensure(quatloos == S32Quatloos(20)); +		quatloos -= F32Quatloos(4.f); +		ensure(quatloos == S32Quatloos(16));  		quatloos /= 2.f; -		ensure(quatloos == 8); +		ensure(quatloos == S32Quatloos(8));  		quatloos = quatloos / 4; -		ensure(quatloos == 2); +		ensure(quatloos == S32Quatloos(2));  		F32 ratio = quatloos / LLUnit<F32, Quatloos>(2.f);  		ensure(ratio == 1); @@ -151,23 +158,54 @@ namespace tut  		ensure(ratio == 1);  		quatloos += LLUnit<F32, Solari>(8.f); -		ensure(quatloos == 4); +		ensure(quatloos == S32Quatloos(4));  		quatloos -= LLUnit<F32, Latinum>(1.f); -		ensure(quatloos == 0); +		ensure(quatloos == S32Quatloos(0));  	} -	// implicit units +	// comparison operators  	template<> template<>  	void units_object_t::test<5>()  	{ +		LLUnit<S32, Quatloos> quatloos(1); +		ensure("can perform less than comparison against same type", quatloos < S32Quatloos(2)); +		ensure("can perform less than comparison against different storage type", quatloos < F32Quatloos(2.f)); +		ensure("can perform less than comparison against different units", quatloos < S32Latinum(5)); +		ensure("can perform less than comparison against different storage type and units", quatloos < F32Latinum(5.f)); + +		ensure("can perform greater than comparison against same type", quatloos > S32Quatloos(0)); +		ensure("can perform greater than comparison against different storage type", quatloos > F32Quatloos(0.f)); +		ensure("can perform greater than comparison against different units", quatloos > S32Latinum(0)); +		ensure("can perform greater than comparison against different storage type and units", quatloos > F32Latinum(0.f)); + +	} + +	bool accept_explicit_quatloos(S32Quatloos q) +	{ +		return true; +	} + +	// signature compatibility +	template<> template<> +	void units_object_t::test<6>() +	{ +		S32Quatloos quatloos(1); +		ensure("can pass unit values as argument", accept_explicit_quatloos(S32Quatloos(1))); +		ensure("can pass unit values as argument", accept_explicit_quatloos(quatloos)); +	} + +	// implicit units +	template<> template<> +	void units_object_t::test<7>() +	{  		LLUnit<F32, Quatloos> quatloos; -		LLUnitImplicit<F32, Quatloos> quatloos_implicit = quatloos + 1; +		LLUnitImplicit<F32, Quatloos> quatloos_implicit = quatloos + S32Quatloos(1);  		ensure("can initialize implicit unit from explicit", quatloos_implicit == 1);  		quatloos = quatloos_implicit; -		ensure("can assign implicit unit to explicit unit", quatloos == 1); +		ensure("can assign implicit unit to explicit unit", quatloos == S32Quatloos(1));  		quatloos += quatloos_implicit; -		ensure("can perform math operation using mixture of implicit and explicit units", quatloos == 2); +		ensure("can perform math operation using mixture of implicit and explicit units", quatloos == S32Quatloos(2));  		// math operations on implicits  		quatloos_implicit = 1; diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp index 413266a29d..94552750f4 100755 --- a/indra/llmessage/llassetstorage.cpp +++ b/indra/llmessage/llassetstorage.cpp @@ -1405,7 +1405,7 @@ void LLAssetStorage::storeAssetData(  	bool is_priority,  	bool store_local,  	bool user_waiting, -	F64 timeout) +	F64Seconds timeout)  {  	LL_WARNS() << "storeAssetData: wrong version called" << LL_ENDL;  	// LLAssetStorage metric: Virtual base call @@ -1424,7 +1424,7 @@ void LLAssetStorage::storeAssetData(  	bool store_local,  	const LLUUID& requesting_agent_id,  	bool user_waiting, -	F64 timeout) +	F64Seconds timeout)  {  	LL_WARNS() << "storeAssetData: wrong version called" << LL_ENDL;  	// LLAssetStorage metric: Virtual base call @@ -1442,7 +1442,7 @@ void LLAssetStorage::storeAssetData(  	bool temp_file,  	bool is_priority,  	bool user_waiting, -	F64 timeout) +	F64Seconds timeout)  {  	LL_WARNS() << "storeAssetData: wrong version called" << LL_ENDL;  	// LLAssetStorage metric: Virtual base call @@ -1460,7 +1460,7 @@ void LLAssetStorage::storeAssetData(  	bool temp_file,  	bool is_priority,  	bool user_waiting, -	F64 timeout) +	F64Seconds timeout)  {  	LL_WARNS() << "storeAssetData: wrong version called" << LL_ENDL;  	// LLAssetStorage metric: Virtual base call diff --git a/indra/llmessage/llassetstorage.h b/indra/llmessage/llassetstorage.h index 6ed1027cee..1bb4acea9e 100755 --- a/indra/llmessage/llassetstorage.h +++ b/indra/llmessage/llassetstorage.h @@ -49,7 +49,7 @@ class LLSD;  // anything that takes longer than this to download will abort.  // HTTP Uploads also timeout if they take longer than this. -const F32 LL_ASSET_STORAGE_TIMEOUT = 5 * 60.0f;   +const F32Minutes LL_ASSET_STORAGE_TIMEOUT(5);  // Specific error codes @@ -103,7 +103,7 @@ public:  	void setUUID(const LLUUID& id) { mUUID = id; }  	void setType(LLAssetType::EType type) { mType = type; } -	void setTimeout (F64 timeout) { mTimeout = timeout; } +	void setTimeout (F64Seconds timeout) { mTimeout = timeout; }  protected:  	LLUUID	mUUID; @@ -279,7 +279,7 @@ public:  		bool is_priority = false,  		bool store_local = false,  		bool user_waiting= false, -		F64 timeout=LL_ASSET_STORAGE_TIMEOUT); +		F64Seconds timeout=LL_ASSET_STORAGE_TIMEOUT);  	/*  	 * AssetID version @@ -295,7 +295,7 @@ public:  		bool store_local = false,  		const LLUUID& requesting_agent_id = LLUUID::null,  		bool user_waiting= false, -		F64 timeout=LL_ASSET_STORAGE_TIMEOUT); +		F64Seconds timeout=LL_ASSET_STORAGE_TIMEOUT);  	virtual void checkForTimeouts(); @@ -403,7 +403,7 @@ public:  		bool temp_file = false,  		bool is_priority = false,  		bool user_waiting = false, -		F64 timeout  = LL_ASSET_STORAGE_TIMEOUT); +		F64Seconds timeout  = LL_ASSET_STORAGE_TIMEOUT);  	/*  	 * TransactionID version @@ -417,7 +417,7 @@ public:  		bool temp_file = false,  		bool is_priority = false,  		bool user_waiting = false, -		F64 timeout  = LL_ASSET_STORAGE_TIMEOUT); +		F64Seconds timeout  = LL_ASSET_STORAGE_TIMEOUT);  	static void legacyGetDataCallback(LLVFS *vfs, const LLUUID &uuid, LLAssetType::EType, void *user_data, S32 status, LLExtStat ext_status);  	static void legacyStoreDataCallback(const LLUUID &uuid, void *user_data, S32 status, LLExtStat ext_status); diff --git a/indra/llmessage/llcircuit.cpp b/indra/llmessage/llcircuit.cpp index 1ace4d9b70..5aaada63b1 100755 --- a/indra/llmessage/llcircuit.cpp +++ b/indra/llmessage/llcircuit.cpp @@ -207,7 +207,7 @@ void LLCircuitData::ackReliablePacket(TPACKETID packet_num)  		}  		if (packetp->mCallback)  		{ -			if (packetp->mTimeout < 0.f)   // negative timeout will always return timeout even for successful ack, for debugging +			if (packetp->mTimeout < F32Seconds(0.f))   // negative timeout will always return timeout even for successful ack, for debugging  			{  				packetp->mCallback(packetp->mCallbackData,LL_ERR_TCP_TIMEOUT);					  			} @@ -241,7 +241,7 @@ void LLCircuitData::ackReliablePacket(TPACKETID packet_num)  		}  		if (packetp->mCallback)  		{ -			if (packetp->mTimeout < 0.f)   // negative timeout will always return timeout even for successful ack, for debugging +			if (packetp->mTimeout < F32Seconds(0.f))   // negative timeout will always return timeout even for successful ack, for debugging  			{  				packetp->mCallback(packetp->mCallbackData,LL_ERR_TCP_TIMEOUT);					  			} @@ -540,8 +540,8 @@ void LLCircuitData::checkPeriodTime()  		mBytesInLastPeriod	= mBytesInThisPeriod;  		mBytesOutLastPeriod	= mBytesOutThisPeriod; -		mBytesInThisPeriod	= 0; -		mBytesOutThisPeriod	= 0; +		mBytesInThisPeriod	= S32Bytes(0); +		mBytesOutThisPeriod	= S32Bytes(0);  		mLastPeriodLength	= period_length;  		mPeriodTime = mt_sec; @@ -549,14 +549,14 @@ void LLCircuitData::checkPeriodTime()  } -void LLCircuitData::addBytesIn(S32 bytes) +void LLCircuitData::addBytesIn(S32Bytes bytes)  {  	mBytesIn += bytes;  	mBytesInThisPeriod += bytes;  } -void LLCircuitData::addBytesOut(S32 bytes) +void LLCircuitData::addBytesOut(S32Bytes bytes)  {  	mBytesOut += bytes;  	mBytesOutThisPeriod += bytes; @@ -743,7 +743,7 @@ void LLCircuitData::checkPacketInID(TPACKETID id, BOOL receive_resent)  					}  //						LL_INFOS() << "adding potential lost: " << index << LL_ENDL; -					mPotentialLostPackets[index] = time.value(); +					mPotentialLostPackets[index] = time;  					index++;  					index = index % LL_MAX_OUT_PACKET_ID;  					gap_count++; @@ -1152,23 +1152,23 @@ std::ostream& operator<<(std::ostream& s, LLCircuitData& circuit)  		<< endl;  	s << "Global In/Out " << S32(age) << " sec" -		<< " KBytes: " << circuit.mBytesIn.valueInUnits<LLUnits::Kibibytes>() << "/" << circuit.mBytesOut.valueInUnits<LLUnits::Kibibytes>() +		<< " KBytes: " << circuit.mBytesIn.valueInUnits<LLUnits::Kilobytes>() << "/" << circuit.mBytesOut.valueInUnits<LLUnits::Kilobytes>()  		<< " Kbps: " -		<< S32(circuit.mBytesIn.valueInUnits<LLUnits::Kibibits>() / circuit.mExistenceTimer.getElapsedTimeF32().value()) +		<< S32(circuit.mBytesIn.valueInUnits<LLUnits::Kilobits>() / circuit.mExistenceTimer.getElapsedTimeF32().value())  		<< "/" -		<< S32(circuit.mBytesOut.valueInUnits<LLUnits::Kibibits>() / circuit.mExistenceTimer.getElapsedTimeF32().value()) +		<< S32(circuit.mBytesOut.valueInUnits<LLUnits::Kilobits>() / circuit.mExistenceTimer.getElapsedTimeF32().value())  		<< " Packets: " << circuit.mPacketsIn << "/" << circuit.mPacketsOut  		<< endl;  	s << "Recent In/Out   " << circuit.mLastPeriodLength  		<< " KBytes: " -		<< circuit.mBytesInLastPeriod.valueInUnits<LLUnits::Kibibytes>() +		<< circuit.mBytesInLastPeriod.valueInUnits<LLUnits::Kilobytes>()  		<< "/" -		<< circuit.mBytesOutLastPeriod.valueInUnits<LLUnits::Kibibytes>() +		<< circuit.mBytesOutLastPeriod.valueInUnits<LLUnits::Kilobytes>()  		<< " Kbps: " -		<< (S32)(circuit.mBytesInLastPeriod.valueInUnits<LLUnits::Kibibits>() / circuit.mLastPeriodLength.value()) +		<< (S32)(circuit.mBytesInLastPeriod.valueInUnits<LLUnits::Kilobits>() / circuit.mLastPeriodLength.value())  		<< "/" -		<< (S32)(circuit.mBytesOutLastPeriod.valueInUnits<LLUnits::Kibibits>() / circuit.mLastPeriodLength.value()) +		<< (S32)(circuit.mBytesOutLastPeriod.valueInUnits<LLUnits::Kilobits>() / circuit.mLastPeriodLength.value())  		<< " Peak kbps: "  		<< S32(circuit.mPeakBPSIn / 1024.f)  		<< "/" @@ -1261,7 +1261,7 @@ void LLCircuitData::pingTimerStop(const U8 ping_id)  	// Nota Bene: no averaging of ping times until we get a feel for how this works  	F64Seconds time = mt_secs - mPingTime; -	if (time == 0.0) +	if (time == F32Seconds(0.0))  	{  		// Ack, we got our ping response on the same frame! Sigh, let's get a real time otherwise  		// all of our ping calculations will be skewed. @@ -1368,7 +1368,7 @@ F32Milliseconds LLCircuitData::getPingInTransitTime()  	if (mPingsInTransit)  	{ -		time_since_ping_was_sent =  ((mPingsInTransit*mHeartbeatInterval - 1)  +		time_since_ping_was_sent =  ((mPingsInTransit*mHeartbeatInterval - F32Seconds(1))   			+ (LLMessageSystem::getMessageTimeSeconds() - mPingTime));  	} diff --git a/indra/llmessage/llcircuit.h b/indra/llmessage/llcircuit.h index bc29805859..5b109fc218 100755 --- a/indra/llmessage/llcircuit.h +++ b/indra/llmessage/llcircuit.h @@ -167,8 +167,8 @@ protected:  	void			setPingDelay(U32Milliseconds ping);  	BOOL			checkCircuitTimeout();	// Return FALSE if the circuit is dead and should be cleaned up -	void			addBytesIn(S32 bytes); -	void			addBytesOut(S32 bytes); +	void			addBytesIn(S32Bytes bytes); +	void			addBytesOut(S32Bytes bytes);  	U8				nextPingID()			{ mLastPingID++; return mLastPingID; } diff --git a/indra/llmessage/llhttpassetstorage.cpp b/indra/llmessage/llhttpassetstorage.cpp index d9b537941b..095da6f0f9 100755 --- a/indra/llmessage/llhttpassetstorage.cpp +++ b/indra/llmessage/llhttpassetstorage.cpp @@ -456,7 +456,7 @@ void LLHTTPAssetStorage::storeAssetData(  	bool store_local,  	const LLUUID& requesting_agent_id,  	bool user_waiting, -	F64 timeout) +	F64Seconds timeout)  {  	if (mVFS->getExists(uuid, type)) // VFS treats nonexistant and zero-length identically  	{ @@ -516,7 +516,7 @@ void LLHTTPAssetStorage::storeAssetData(  	bool temp_file,  	bool is_priority,  	bool user_waiting, -	F64 timeout) +	F64Seconds timeout)  {  	LL_INFOS() << "LLAssetStorage::storeAssetData (legacy)" << asset_id << ":" << LLAssetType::lookup(asset_type) << LL_ENDL; diff --git a/indra/llmessage/llhttpassetstorage.h b/indra/llmessage/llhttpassetstorage.h index f743ccf0ac..783e95cac6 100755 --- a/indra/llmessage/llhttpassetstorage.h +++ b/indra/llmessage/llhttpassetstorage.h @@ -69,7 +69,7 @@ public:  		bool store_local = false,  		const LLUUID& requesting_agent_id = LLUUID::null,  		bool user_waiting=FALSE, -		F64 timeout=LL_ASSET_STORAGE_TIMEOUT); +		F64Seconds timeout=LL_ASSET_STORAGE_TIMEOUT);  	virtual void storeAssetData(  		const std::string& filename, @@ -80,7 +80,7 @@ public:  		bool temp_file,  		bool is_priority,  		bool user_waiting=FALSE, -		F64 timeout=LL_ASSET_STORAGE_TIMEOUT); +		F64Seconds timeout=LL_ASSET_STORAGE_TIMEOUT);  	virtual LLSD getPendingDetails(ERequestType rt,  	 				LLAssetType::EType asset_type, diff --git a/indra/llmessage/llpacketack.h b/indra/llmessage/llpacketack.h index 0a5604f74f..f55d5246f6 100755 --- a/indra/llmessage/llpacketack.h +++ b/indra/llmessage/llpacketack.h @@ -54,7 +54,7 @@ public:  		mHost.invalidate();  		mRetries = 0;  		mPingBasedRetry = TRUE; -		mTimeout = 0.f; +		mTimeout = F32Seconds(0.f);  		mCallback = NULL;  		mCallbackData = NULL;  		mMessageName = NULL; diff --git a/indra/llmessage/llthrottle.cpp b/indra/llmessage/llthrottle.cpp index 00eaa7e2ec..e484bd258d 100755 --- a/indra/llmessage/llthrottle.cpp +++ b/indra/llmessage/llthrottle.cpp @@ -356,7 +356,7 @@ BOOL LLThrottleGroup::throttleOverflow(S32 throttle_cat, F32 bits)  BOOL LLThrottleGroup::dynamicAdjust()  { -	const F32 DYNAMIC_ADJUST_TIME = 1.0f;		// seconds +	const F32Seconds DYNAMIC_ADJUST_TIME(1.0f);  	const F32 CURRENT_PERIOD_WEIGHT = .25f;		// how much weight to give to last period while determining BPS utilization  	const F32 BUSY_PERCENT = 0.75f;		// if use more than this fraction of BPS, you are busy  	const F32 IDLE_PERCENT = 0.70f;		// if use less than this fraction, you are "idle" @@ -405,7 +405,7 @@ BOOL LLThrottleGroup::dynamicAdjust()  	for (i = 0; i < TC_EOF; i++)  	{  		// Is this a busy channel? -		if (mBitsSentHistory[i] >= BUSY_PERCENT * DYNAMIC_ADJUST_TIME * mCurrentBPS[i]) +		if (mBitsSentHistory[i] >= BUSY_PERCENT * DYNAMIC_ADJUST_TIME.value() * mCurrentBPS[i])  		{  			// this channel is busy  			channels_busy = TRUE; @@ -418,7 +418,7 @@ BOOL LLThrottleGroup::dynamicAdjust()  		}  		// Is this an idle channel? -		if ((mBitsSentHistory[i] < IDLE_PERCENT * DYNAMIC_ADJUST_TIME * mCurrentBPS[i]) && +		if ((mBitsSentHistory[i] < IDLE_PERCENT * DYNAMIC_ADJUST_TIME.value() * mCurrentBPS[i]) &&  			(mBitsAvailable[i] > 0))  		{  			channel_idle[i] = TRUE; @@ -462,7 +462,7 @@ BOOL LLThrottleGroup::dynamicAdjust()  				// Therefore it's a candidate to give up some bandwidth.  				// Figure out how much bandwidth it has been using, and how  				// much is available to steal. -				used_bps = mBitsSentHistory[i] / DYNAMIC_ADJUST_TIME; +				used_bps = mBitsSentHistory[i] / DYNAMIC_ADJUST_TIME.value();  				// CRO make sure to keep a minimum amount of throttle available  				// CRO NB: channels set to < MINIMUM_BPS will never give up bps,  diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp index 1f4dd11f73..88c73852af 100755 --- a/indra/llmessage/message.cpp +++ b/indra/llmessage/message.cpp @@ -80,7 +80,7 @@  // Constants  //const char* MESSAGE_LOG_FILENAME = "message.log"; -static const F32 CIRCUIT_DUMP_TIMEOUT = 30.f; +static const F32Seconds CIRCUIT_DUMP_TIMEOUT(30.f);  static const S32 TRUST_TIME_WINDOW = 3;  // *NOTE: This needs to be moved into a seperate file so that it never gets @@ -259,7 +259,7 @@ LLMessageSystem::LLMessageSystem(const std::string& filename, U32 port,  	mSendPacketFailureCount = 0; -	mCircuitPrintFreq = 60.f;		// seconds +	mCircuitPrintFreq = F32Seconds(60.f);  	loadTemplateFile(filename, failure_is_fatal); @@ -312,11 +312,11 @@ LLMessageSystem::LLMessageSystem(const std::string& filename, U32 port,  	// Constants for dumping output based on message processing time/count  	mNumMessageCounts = 0;  	mMaxMessageCounts = 200; // >= 0 means dump warnings -	mMaxMessageTime   = 1.f; +	mMaxMessageTime   = F32Seconds(1.f);  	mTrueReceiveSize = 0; -	mReceiveTime = 0.f; +	mReceiveTime = F32Seconds(0.f);  } @@ -833,7 +833,7 @@ void LLMessageSystem::processAcks()  			}  		} -		if (mMaxMessageTime >= 0.f) +		if (mMaxMessageTime >= F32Seconds(0.f))  		{  			// This is one of the only places where we're required to get REAL message system time.  			mReceiveTime = getMessageTimeSeconds(TRUE) - mMessageCountTime; @@ -1337,7 +1337,7 @@ S32 LLMessageSystem::sendMessage(const LLHost &host)  	else  	{  		// mCircuitInfo already points to the correct circuit data -		cdp->addBytesOut( buffer_length ); +		cdp->addBytesOut( (S32Bytes)buffer_length );  	}  	if(mVerboseLog) @@ -1464,7 +1464,7 @@ void LLMessageSystem::logValidMsg(LLCircuitData *cdp, const LLHost& host, BOOL r  	{  		// update circuit packet ID tracking (missing/out of order packets)  		cdp->checkPacketInID( mCurrentRecvPacketID, recv_resent ); -		cdp->addBytesIn( mTrueReceiveSize ); +		cdp->addBytesIn( (S32Bytes)mTrueReceiveSize );  	}  	if(mVerboseLog) @@ -1731,7 +1731,7 @@ LLHost LLMessageSystem::findHost(const U32 circuit_code)  void LLMessageSystem::setMaxMessageTime(const F32 seconds)  { -	mMaxMessageTime = seconds; +	mMaxMessageTime = F32Seconds(seconds);  }  void LLMessageSystem::setMaxMessageCounts(const S32 num) @@ -2752,7 +2752,7 @@ void LLMessageSystem::dumpReceiveCounts()  			if (mt->mReceiveCount > 0)  			{  				LL_INFOS("Messaging") << "Num: " << std::setw(3) << mt->mReceiveCount << " Bytes: " << std::setw(6) << mt->mReceiveBytes -						<< " Invalid: " << std::setw(3) << mt->mReceiveInvalid << " " << mt->mName << " " << llround(100 * mt->mDecodeTimeThisFrame / mReceiveTime) << "%" << LL_ENDL; +						<< " Invalid: " << std::setw(3) << mt->mReceiveInvalid << " " << mt->mName << " " << llround(100 * mt->mDecodeTimeThisFrame / mReceiveTime.value()) << "%" << LL_ENDL;  			}  		}  	} diff --git a/indra/llmessage/message.h b/indra/llmessage/message.h index 75eccc7f75..da06b64506 100755 --- a/indra/llmessage/message.h +++ b/indra/llmessage/message.h @@ -267,7 +267,7 @@ public:  	LLCircuit 	 		mCircuitInfo;  	F64Seconds			mCircuitPrintTime;	    // used to print circuit debug info every couple minutes -	F32					mCircuitPrintFreq;	    // seconds +	F32Seconds			mCircuitPrintFreq;	      	std::map<U64, U32>	mIPPortToCircuitCode;  	std::map<U32, U64>	mCircuitCodeToIPPort; diff --git a/indra/llrender/llgltexture.cpp b/indra/llrender/llgltexture.cpp index d06ed5e57b..56e263c5f1 100644 --- a/indra/llrender/llgltexture.cpp +++ b/indra/llrender/llgltexture.cpp @@ -294,7 +294,7 @@ LLTexUnit::eTextureAddressMode LLGLTexture::getAddressMode(void) const  	return mGLTexturep->getAddressMode() ;  } -S32 LLGLTexture::getTextureMemory() const +S32Bytes LLGLTexture::getTextureMemory() const  {  	llassert(mGLTexturep.notNull()) ; diff --git a/indra/llrender/llgltexture.h b/indra/llrender/llgltexture.h index 6b85f81aee..45592ee077 100644 --- a/indra/llrender/llgltexture.h +++ b/indra/llrender/llgltexture.h @@ -138,7 +138,7 @@ public:  	S32        getDiscardLevel() const;  	S8         getComponents() const;  	BOOL       getBoundRecently() const; -	S32        getTextureMemory() const ; +	S32Bytes   getTextureMemory() const ;  	LLGLenum   getPrimaryFormat() const;  	BOOL       getIsAlphaMask() const ;  	LLTexUnit::eTextureType getTarget(void) const ; diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index b63ee7f9f9..5d46fb290c 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -253,7 +253,7 @@ void LLImageGL::updateStats(F32 current_time)  }  //static -S32 LLImageGL::updateBoundTexMem(const S32 mem, const S32 ncomponents, S32 category) +S32 LLImageGL::updateBoundTexMem(const S32Bytes mem, const S32 ncomponents, S32 category)  {  	LLImageGL::sCurBoundTextureMemory += mem ;  	return LLImageGL::sCurBoundTextureMemory.value(); @@ -398,7 +398,7 @@ void LLImageGL::init(BOOL usemipmaps)  	// so that it is obvious by visual inspection if we forgot to  	// init a field. -	mTextureMemory = 0; +	mTextureMemory = (S32Bytes)0;  	mLastBindTime = 0.f;  	mPickMask = NULL; @@ -563,7 +563,7 @@ void LLImageGL::forceUpdateBindStats(void) const  	mLastBindTime = sLastFrameTime;  } -BOOL LLImageGL::updateBindStats(S32 tex_mem) const +BOOL LLImageGL::updateBindStats(S32Bytes tex_mem) const  {	  	if (mTexName != 0)  	{ @@ -1460,7 +1460,7 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const U8* data_in, BOOL data_  		stop_glerror();  	} -	mTextureMemory = getMipBytes(discard_level); +	mTextureMemory = (S32Bytes)getMipBytes(discard_level);  	sGlobalTextureMemory += mTextureMemory;  	mTexelsInGLTexture = getWidth() * getHeight() ; @@ -1618,10 +1618,10 @@ void LLImageGL::destroyGLTexture()  {  	if (mTexName != 0)  	{ -		if(mTextureMemory) +		if(mTextureMemory != S32Bytes(0))  		{  			sGlobalTextureMemory -= mTextureMemory; -			mTextureMemory = 0; +			mTextureMemory = (S32Bytes)0;  		}  		LLImageGL::deleteTextures(mBindTarget,  mFormatInternal, mMipLevels, 1, &mTexName);			 diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index 035d42c3ad..5e027851f3 100755 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h @@ -63,7 +63,7 @@ public:  	static S32 dataFormatBytes(S32 dataformat, S32 width, S32 height);  	static S32 dataFormatComponents(S32 dataformat); -	BOOL updateBindStats(S32 tex_mem) const ; +	BOOL updateBindStats(S32Bytes tex_mem) const ;  	F32 getTimePassedSinceLastBound();  	void forceUpdateBindStats(void) const; @@ -76,7 +76,7 @@ public:  	static void dirtyTexOptions();  	// Sometimes called externally for textures not using LLImageGL (should go away...)	 -	static S32 updateBoundTexMem(const S32 mem, const S32 ncomponents, S32 category) ; +	static S32 updateBoundTexMem(const S32Bytes mem, const S32 ncomponents, S32 category) ;  	static bool checkSize(S32 width, S32 height); @@ -189,7 +189,7 @@ public:  public:  	// Various GL/Rendering options -	S32 mTextureMemory; +	S32Bytes mTextureMemory;  	mutable F32  mLastBindTime;	// last time this was bound, by discard level  private: diff --git a/indra/llui/llstatbar.cpp b/indra/llui/llstatbar.cpp index 4c64cc944e..03a2895289 100755 --- a/indra/llui/llstatbar.cpp +++ b/indra/llui/llstatbar.cpp @@ -253,7 +253,7 @@ template<typename T>  S32 calc_num_rapid_changes(LLTrace::PeriodicRecording& periodic_recording, const T& stat, const F32Seconds time_period)  {  	F32Seconds	elapsed_time, -									time_since_value_changed; +				time_since_value_changed;  	S32 num_rapid_changes = 0;  	const F32Seconds	RAPID_CHANGE_THRESHOLD = F32Seconds(0.3f); @@ -266,7 +266,7 @@ S32 calc_num_rapid_changes(LLTrace::PeriodicRecording& periodic_recording, const  		if (last_value != cur_value)  		{  			if (time_since_value_changed < RAPID_CHANGE_THRESHOLD) num_rapid_changes++; -			time_since_value_changed = 0;	 +			time_since_value_changed = (F32Seconds)0;	  		}  		last_value = cur_value; @@ -280,7 +280,7 @@ S32 calc_num_rapid_changes(LLTrace::PeriodicRecording& periodic_recording, const  S32 calc_num_rapid_changes(LLTrace::PeriodicRecording& periodic_recording, const LLTrace::TraceType<LLTrace::CountAccumulator>& stat, const F32Seconds time_period)  {  	F32Seconds	elapsed_time, -		time_since_value_changed; +				time_since_value_changed;  	S32 num_rapid_changes = 0;  	F64 last_value = periodic_recording.getPrevRecording(1).getSum(stat); @@ -292,7 +292,7 @@ S32 calc_num_rapid_changes(LLTrace::PeriodicRecording& periodic_recording, const  		if (last_value != cur_value)  		{  			if (time_since_value_changed < RAPID_CHANGE_THRESHOLD) num_rapid_changes++; -			time_since_value_changed = 0;	 +			time_since_value_changed = (F32Seconds)0;	  		}  		last_value = cur_value; @@ -355,7 +355,7 @@ void LLStatBar::draw()  		mean              = frame_recording.getPeriodMean(sample_stat, num_frames);  		num_rapid_changes = calc_num_rapid_changes(frame_recording, sample_stat, RAPID_CHANGE_WINDOW); -		if (num_rapid_changes / RAPID_CHANGE_WINDOW > MAX_RAPID_CHANGES_PER_SEC) +		if (num_rapid_changes / RAPID_CHANGE_WINDOW.value() > MAX_RAPID_CHANGES_PER_SEC)  		{  			display_value = mean;  		} diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 339a8f1ab0..f506765da3 100755 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -293,12 +293,12 @@ U32	gFrameCount = 0;  U32 gForegroundFrameCount = 0; // number of frames that app window was in foreground  LLPumpIO* gServicePump = NULL; -LLUnitImplicit<U64, LLUnits::Microseconds> gFrameTime = 0; -LLUnitImplicit<F32, LLUnits::Seconds> gFrameTimeSeconds = 0.f; -LLUnitImplicit<F32, LLUnits::Seconds> gFrameIntervalSeconds = 0.f; +U64MicrosecondsImplicit gFrameTime = 0; +F32SecondsImplicit gFrameTimeSeconds = 0.f; +F32SecondsImplicit gFrameIntervalSeconds = 0.f;  F32 gFPSClamped = 10.f;						// Pretend we start at target rate.  F32 gFrameDTClamped = 0.f;					// Time between adjacent checks to network for packets -LLUnitImplicit<U64, LLUnits::Microseconds>	gStartTime = 0; // gStartTime is "private", used only to calculate gFrameTimeSeconds +U64MicrosecondsImplicit	gStartTime = 0; // gStartTime is "private", used only to calculate gFrameTimeSeconds  U32 gFrameStalls = 0;  const F64 FRAME_STALL_THRESHOLD = 1.0; @@ -1046,9 +1046,8 @@ bool LLAppViewer::init()  		// get RAM data from XML  		std::stringstream minRAMString(LLNotifications::instance().getGlobalString("UnsupportedRAMAmount")); -		U64 minRAM = 0; +		U64Bytes minRAM;  		minRAMString >> minRAM; -		minRAM = minRAM * 1024 * 1024;  		if(!LLFeatureManager::getInstance()->isGPUSupported() && LLFeatureManager::getInstance()->getGPUClass() != GPU_CLASS_UNKNOWN)  		{ @@ -1202,7 +1201,7 @@ void LLAppViewer::initMaxHeapSize()  	//currently SL is built under 32-bit setting, we set its max heap size no more than 1.6 GB.  	//F32 max_heap_size_gb = llmin(1.6f, (F32)gSavedSettings.getF32("MaxHeapSize")) ; -	F32 max_heap_size_gb = gSavedSettings.getF32("MaxHeapSize") ; +	F32Gigabytes max_heap_size_gb = (F32Gigabytes)gSavedSettings.getF32("MaxHeapSize") ;  	BOOL enable_mem_failure_prevention = (BOOL)gSavedSettings.getBOOL("MemoryFailurePreventionEnabled") ;  	LLMemory::initMaxHeapSizeGB(max_heap_size_gb, enable_mem_failure_prevention) ; @@ -1464,7 +1463,7 @@ bool LLAppViewer::mainLoop()  					ms_sleep(500);  				} -				const F64 max_idle_time = llmin(.005*10.0*gFrameTimeSeconds, LLUnitImplicit<F32, LLUnits::Seconds>(0.005f)); // 5 ms a second +				const F64 max_idle_time = llmin(.005f*10.f*(F32MillisecondsImplicit)gFrameTimeSeconds, F32MillisecondsImplicit(5)); // 5 ms a second  				idleTimer.reset();  				S32 total_work_pending = 0;  				S32 total_io_pending = 0;	 @@ -3138,8 +3137,7 @@ bool LLAppViewer::meetsRequirementsForMaximizedStart()  {  	bool maximizedOk = (LLFeatureManager::getInstance()->getGPUClass() >= GPU_CLASS_2); -	const U32 one_gigabyte_kb = 1024 * 1024; -	maximizedOk &= (gSysMemory.getPhysicalMemoryKB() >= one_gigabyte_kb); +	maximizedOk &= (gSysMemory.getPhysicalMemoryKB() >= U32Gigabytes(1));  	return maximizedOk;  } @@ -3330,7 +3328,7 @@ void LLAppViewer::writeSystemInfo()  	gDebugInfo["CPUInfo"]["CPUSSE2"] = gSysCPU.hasSSE2();  	gDebugInfo["RAMInfo"]["Physical"] = (LLSD::Integer)(gSysMemory.getPhysicalMemoryKB().value()); -	gDebugInfo["RAMInfo"]["Allocated"] = (LLSD::Integer)(gMemoryAllocated.valueInUnits<LLUnits::Kibibytes>()); +	gDebugInfo["RAMInfo"]["Allocated"] = (LLSD::Integer)(gMemoryAllocated.valueInUnits<LLUnits::Kilobytes>());  	gDebugInfo["OSInfo"] = getOSInfo().getOSStringSimple();  	// The user is not logged on yet, but record the current grid choice login url diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index 10452e64e2..6b16a96c11 100755 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -334,10 +334,10 @@ extern U32 gForegroundFrameCount;  extern LLPumpIO* gServicePump; -extern LLUnitImplicit<U64, LLUnits::Microseconds>	gStartTime; -extern LLUnitImplicit<U64, LLUnits::Microseconds>   gFrameTime;					// The timestamp of the most-recently-processed frame -extern LLUnitImplicit<F32, LLUnits::Seconds>		gFrameTimeSeconds;			// Loses msec precision after ~4.5 hours... -extern LLUnitImplicit<F32, LLUnits::Seconds>		gFrameIntervalSeconds;		// Elapsed time between current and previous gFrameTimeSeconds +extern U64MicrosecondsImplicit	gStartTime; +extern U64MicrosecondsImplicit   gFrameTime;					// The timestamp of the most-recently-processed frame +extern F32SecondsImplicit		gFrameTimeSeconds;			// Loses msec precision after ~4.5 hours... +extern F32SecondsImplicit		gFrameIntervalSeconds;		// Elapsed time between current and previous gFrameTimeSeconds  extern F32		gFPSClamped;				// Frames per second, smoothed, weighted toward last frame  extern F32		gFrameDTClamped;  extern U32 		gFrameStalls; diff --git a/indra/newview/llconversationlog.cpp b/indra/newview/llconversationlog.cpp index 9311056a27..03b1f14a03 100755 --- a/indra/newview/llconversationlog.cpp +++ b/indra/newview/llconversationlog.cpp @@ -35,7 +35,7 @@  #include <boost/foreach.hpp>  #include "boost/lexical_cast.hpp" -const int CONVERSATION_LIFETIME = 30; // lifetime of LLConversation is 30 days by spec +const S32Days CONVERSATION_LIFETIME = (S32Days)30; // lifetime of LLConversation is 30 days by spec  struct ConversationParams : public LLInitParam::Block<ConversationParams>  { @@ -100,7 +100,7 @@ LLConversation::~LLConversation()  void LLConversation::updateTimestamp()  { -	mTime = time_corrected(); +	mTime = (U64Seconds)time_corrected();  	mTimestamp = createTimestamp(mTime);  } @@ -130,10 +130,10 @@ const std::string LLConversation::createTimestamp(const U64Seconds& utc_time)  	return timeStr;  } -bool LLConversation::isOlderThan(U32 days) const +bool LLConversation::isOlderThan(U32Days days) const  {  	U64Seconds now(time_corrected()); -	LLUnit<U32, LLUnits::Days> age = now - mTime; +	U32Days age = now - mTime;  	return age > days;  } diff --git a/indra/newview/llconversationlog.h b/indra/newview/llconversationlog.h index fd6ad9ad66..b38d472156 100755 --- a/indra/newview/llconversationlog.h +++ b/indra/newview/llconversationlog.h @@ -61,7 +61,7 @@ public:  	void setConversationName(std::string conv_name) { mConversationName = conv_name; }  	void setOfflineMessages(bool new_messages) { mHasOfflineIMs = new_messages; } -	bool isOlderThan(U32 days) const; +	bool isOlderThan(U32Days days) const;  	/*  	 * updates last interaction time diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index 725a2f2daf..36cbd67333 100755 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -1143,7 +1143,7 @@ void LLFastTimerView::drawLineGraph()  	}  	//interpolate towards new maximum -	max_time = lerp(max_time.value(), cur_max.value(), LLSmoothInterpolation::getInterpolant(0.1f)); +	max_time = (F32Seconds)lerp(max_time.value(), cur_max.value(), LLSmoothInterpolation::getInterpolant(0.1f));  	if (llabs((max_time - cur_max).value()) <= 1)  	{  		max_time = llmax(F32Microseconds(1.f), F32Microseconds(cur_max)); @@ -1439,7 +1439,7 @@ void LLFastTimerView::drawBars()  	bar_height -= vpad;  	updateTotalTime(); -	if (mTotalTimeDisplay <= 0.0) return; +	if (mTotalTimeDisplay <= (F32Seconds)0.0) return;  	drawTicks();  	const S32 bars_top = mBarRect.mTop - ((S32)LLFontGL::getFontMonospace()->getLineHeight() + 4); @@ -1550,7 +1550,7 @@ S32 LLFastTimerView::updateTimerBarOffsets(LLTrace::TimeBlock* time_block, Timer  	if (timer_bar_index == 0)  	{ -		timer_bar.mSelfStart = 0.f; +		timer_bar.mSelfStart = F32Seconds(0.f);  		timer_bar.mSelfEnd = bar_time;  	} @@ -1583,7 +1583,7 @@ S32 LLFastTimerView::updateTimerBarOffsets(LLTrace::TimeBlock* time_block, Timer  		}  		child_timer_bar.mStartFraction = bar_fraction_start; -		child_timer_bar.mEndFraction = bar_time > 0 +		child_timer_bar.mEndFraction = bar_time > (S32Seconds)0  										? bar_fraction_start + child_timer_bar.mTotalTime / bar_time  										: 1.f;  		child_timer_bar.mSelfStart = timer_bar.mChildrenStart  diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index 01596f0b4b..333e8ee67e 100755 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -867,7 +867,7 @@ void LLFeatureManager::applyBaseMasks()  	maskFeatures(gpustr);  	// now mask cpu type ones -	if (gSysMemory.getPhysicalMemoryClamped() <= 256*1024*1024) +	if (gSysMemory.getPhysicalMemoryClamped() <= U32Megabytes(256))  	{  		maskFeatures("RAM256MB");  	} diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index ad94949863..7f81d40ebb 100755 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -259,7 +259,7 @@ LLSD LLFloaterAbout::getInfo()  	// CPU  	info["CPU"] = gSysCPU.getCPUString(); -	info["MEMORY_MB"] = LLSD::Integer(gSysMemory.getPhysicalMemoryKB().valueInUnits<LLUnits::Mibibytes>()); +	info["MEMORY_MB"] = LLSD::Integer(gSysMemory.getPhysicalMemoryKB().valueInUnits<LLUnits::Megabytes>());  	// Moved hack adjustment to Windows memory size into llsys.cpp  	info["OS_VERSION"] = LLAppViewer::instance()->getOSInfo().getOSString();  	info["GRAPHICS_CARD_VENDOR"] = (const char*)(glGetString(GL_VENDOR)); diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp index adb490d524..9efdf9d10e 100755 --- a/indra/newview/llfloaterhardwaresettings.cpp +++ b/indra/newview/llfloaterhardwaresettings.cpp @@ -89,8 +89,8 @@ void LLFloaterHardwareSettings::refresh()  void LLFloaterHardwareSettings::refreshEnabledState()  { -	S32Mibibytes min_tex_mem = LLViewerTextureList::getMinVideoRamSetting(); -	S32Mibibytes max_tex_mem = LLViewerTextureList::getMaxVideoRamSetting(); +	S32Megabytes min_tex_mem = LLViewerTextureList::getMinVideoRamSetting(); +	S32Megabytes max_tex_mem = LLViewerTextureList::getMaxVideoRamSetting();  	getChild<LLSliderCtrl>("GraphicsCardTextureMemory")->setMinValue(min_tex_mem.value());  	getChild<LLSliderCtrl>("GraphicsCardTextureMemory")->setMaxValue(max_tex_mem.value()); diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp index ecee801e8e..7fafabb493 100644 --- a/indra/newview/llscenemonitor.cpp +++ b/indra/newview/llscenemonitor.cpp @@ -471,7 +471,8 @@ void LLSceneMonitor::fetchQueryResult()  	LLFastTimer _(FTM_SCENE_LOAD_IMAGE_DIFF);  	// also throttle timing here, to avoid going below sample time due to phasing with frame capture -	static LLCachedControl<F32>  scene_load_sample_time(gSavedSettings, "SceneLoadingMonitorSampleTime"); +	static LLCachedControl<F32>  scene_load_sample_time_control(gSavedSettings, "SceneLoadingMonitorSampleTime"); +	F32Seconds scene_load_sample_time = (F32Seconds)scene_load_sample_time_control();  	if(mDiffState == WAIT_ON_RESULT   		&& !LLAppViewer::instance()->quitRequested()) @@ -491,7 +492,7 @@ void LLSceneMonitor::fetchQueryResult()  			record(sFramePixelDiff, mDiffResult);  			static LLCachedControl<F32> diff_threshold(gSavedSettings,"SceneLoadingPixelDiffThreshold"); -			F32 elapsed_time = mRecordingTimer.getElapsedTimeF32(); +			F32Seconds elapsed_time = mRecordingTimer.getElapsedTimeF32();  			if (elapsed_time > scene_load_sample_time)  			{ @@ -649,7 +650,7 @@ void LLSceneMonitor::dumpToFile(std::string file_name)  		for (S32 frame = 1; frame <= frame_count; frame++)  		{ -			os << ", " << scene_load_recording.getPrevRecording(frame_count - frame).getMax(*it).valueInUnits<LLUnits::Kibibytes>(); +			os << ", " << scene_load_recording.getPrevRecording(frame_count - frame).getMax(*it).valueInUnits<LLUnits::Kilobytes>();  		}  		os << '\n'; diff --git a/indra/newview/llscenemonitor.h b/indra/newview/llscenemonitor.h index f94232e536..c99ec1e824 100644 --- a/indra/newview/llscenemonitor.h +++ b/indra/newview/llscenemonitor.h @@ -62,7 +62,7 @@ public:  	const LLTrace::ExtendablePeriodicRecording* getRecording() const {return &mSceneLoadRecording;}  	void dumpToFile(std::string file_name); -	bool hasResults() const { return mSceneLoadRecording.getResults().getDuration() != 0;} +	bool hasResults() const { return mSceneLoadRecording.getResults().getDuration() != S32Seconds(0);}  private:  	void freezeScene(); diff --git a/indra/newview/llsurfacepatch.cpp b/indra/newview/llsurfacepatch.cpp index 55afc3e454..2d06b8599c 100755 --- a/indra/newview/llsurfacepatch.cpp +++ b/indra/newview/llsurfacepatch.cpp @@ -43,7 +43,7 @@  #include "noise.h"  extern bool gShiftFrame; -extern LLUnitImplicit<U64, LLUnits::Microseconds> gFrameTime; +extern U64MicrosecondsImplicit gFrameTime;  extern LLPipeline gPipeline;  LLSurfacePatch::LLSurfacePatch()  diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 07ff1de702..8d63ebdffc 100755 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -946,7 +946,7 @@ LLTextureFetchWorker::~LLTextureFetchWorker()  		mHttpBufferArray = NULL;  	}  	unlockWorkMutex();													// -Mw -	mFetcher->removeFromHTTPQueue(mID, 0); +	mFetcher->removeFromHTTPQueue(mID, (S32Bytes)0);  	mFetcher->removeHttpWaiter(mID);  	mFetcher->updateStateStats(mCacheReadCount, mCacheWriteCount, mResourceWaitCount);  } @@ -1483,7 +1483,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  			mGetReason.clear();  			LL_DEBUGS("Texture") << "HTTP GET: " << mID << " Offset: " << mRequestedOffset  								 << " Bytes: " << mRequestedSize -								 << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth().value() << "/" << mFetcher->mMaxBandwidth +								 << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << mFetcher->mMaxBandwidth  								 << LL_ENDL;  			// Will call callbackHttpGet when curl request completes @@ -1931,7 +1931,7 @@ void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRe  		partial = (par_status == status);  	} -	S32 data_size = callbackHttpGet(response, partial, success); +	S32BytesImplicit data_size = callbackHttpGet(response, partial, success);  	if (log_texture_traffic && data_size > 0)  	{ @@ -2352,7 +2352,7 @@ void LLTextureFetchWorker::recordTextureDone(bool is_http)  													  is_http,  													  LLImageBase::TYPE_AVATAR_BAKE == mType,  													  LLViewerAssetStatsFF::get_timestamp() - mMetricsStartTime); -		mMetricsStartTime = 0; +		mMetricsStartTime = (U32Seconds)0;  	}  	LLViewerAssetStatsFF::record_dequeue(LLViewerAssetType::AT_TEXTURE,  												 is_http, @@ -2607,11 +2607,11 @@ void LLTextureFetch::addToHTTPQueue(const LLUUID& id)  }																		// -Mfnq  // Threads:  T* -void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id, S32 received_size) +void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id, S32Bytes received_size)  {  	LLMutexLock lock(&mNetworkQueueMutex);								// +Mfnq  	mHTTPTextureQueue.erase(id); -	mHTTPTextureBits += received_size * 8; // Approximate - does not include header bits	 +	mHTTPTextureBits += received_size; // Approximate - does not include header bits	  }																		// -Mfnq  // NB:  If you change deleteRequest() you should probably make @@ -2762,7 +2762,7 @@ bool LLTextureFetch::getRequestFinished(const LLUUID& id, S32& discard_level,  			raw = worker->mRawImage;  			aux = worker->mAuxImage;  			F32Seconds cache_read_time(worker->mCacheReadTime); -			if (cache_read_time != 0.f) +			if (cache_read_time != (F32Seconds)0.f)  			{  				record(sCacheReadLatency, cache_read_time);  			} @@ -2888,10 +2888,10 @@ S32 LLTextureFetch::update(F32 max_time_ms)  	{  		mNetworkQueueMutex.lock();										// +Mfnq -		mMaxBandwidth = band_width; +		mMaxBandwidth = band_width();  		add(LLStatViewer::TEXTURE_NETWORK_DATA_RECEIVED, mHTTPTextureBits); -		mHTTPTextureBits = 0; +		mHTTPTextureBits = (U32Bits)0;  		mNetworkQueueMutex.unlock();									// -Mfnq  	} diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index 78b13cdd80..81c505679e 100755 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -107,10 +107,10 @@ public:  	bool receiveImagePacket(const LLHost& host, const LLUUID& id, U16 packet_num, U16 data_size, U8* data);      // Threads:  T* (but not safe) -	void setTextureBandwidth(F32Kibibits bandwidth) { mTextureBandwidth = bandwidth; } +	void setTextureBandwidth(F32 bandwidth) { mTextureBandwidth = bandwidth; }      // Threads:  T* (but not safe) -	F32Kibibits getTextureBandwidth() { return mTextureBandwidth; } +	F32 getTextureBandwidth() { return mTextureBandwidth; }      // Threads:  T*  	BOOL isFromLocalCache(const LLUUID& id); @@ -234,7 +234,7 @@ protected:  	// XXX possible delete      // Threads:  T* -	void removeFromHTTPQueue(const LLUUID& id, S32 received_size); +	void removeFromHTTPQueue(const LLUUID& id, S32Bytes received_size);  	// Identical to @deleteRequest but with different arguments  	// (caller already has the worker pointer). @@ -325,8 +325,8 @@ private:  	queue_t mHTTPTextureQueue;											// Mfnq  	typedef std::map<LLHost,std::set<LLUUID> > cancel_queue_t;  	cancel_queue_t mCancelQueue;										// Mfnq -	F32Kibibits mTextureBandwidth;					// <none> -	F32Kibibits mMaxBandwidth;						// Mfnq +	F32 mTextureBandwidth;					// <none> +	F32 mMaxBandwidth;						// Mfnq  	LLTextureInfo mTextureInfo;  	// XXX possible delete diff --git a/indra/newview/lltextureinfo.cpp b/indra/newview/lltextureinfo.cpp index 6906f82c1c..59d692b287 100755 --- a/indra/newview/lltextureinfo.cpp +++ b/indra/newview/lltextureinfo.cpp @@ -40,7 +40,7 @@ LLTextureInfo::LLTextureInfo() :  	mLogTextureDownloadsToViewerLog(false),  	mLogTextureDownloadsToSimulator(false),  	mTextureDownloadProtocol("NONE"), -	mTextureLogThreshold(LLUnits::Kibibytes::fromValue(100)) +	mTextureLogThreshold(LLUnits::Kilobytes::fromValue(100))  {  	mTextures.clear();  	mRecording.start(); @@ -95,7 +95,7 @@ void LLTextureInfo::setRequestStartTime(const LLUUID& id, U64 startTime)  	{  		addRequest(id);  	} -	mTextures[id]->mStartTime = startTime; +	mTextures[id]->mStartTime = (U64Microseconds)startTime;  	add(sTextureDownloadsStarted, 1);  } @@ -105,7 +105,7 @@ void LLTextureInfo::setRequestSize(const LLUUID& id, U32 size)  	{  		addRequest(id);  	} -	mTextures[id]->mSize = size; +	mTextures[id]->mSize = (U32Bytes)size;  }  void LLTextureInfo::setRequestOffset(const LLUUID& id, U32 offset) @@ -194,7 +194,7 @@ LLSD LLTextureInfo::getAverages()  	LLSD averagedTextureData;  	S32 averageDownloadRate;  	U32Milliseconds download_time = mRecording.getSum(sTexureDownloadTime); -	if(download_time == 0) +	if(download_time == (U32Milliseconds)0)  	{  		averageDownloadRate = 0;  	} diff --git a/indra/newview/lltextureinfodetails.h b/indra/newview/lltextureinfodetails.h index 0ad95eb94e..7cba87e5a8 100755 --- a/indra/newview/lltextureinfodetails.h +++ b/indra/newview/lltextureinfodetails.h @@ -40,10 +40,10 @@ struct LLTextureInfoDetails  	};  	U32Microseconds	mStartTime, -										mCompleteTime; -	U32									mOffset; -	U32Bytes			mSize; -	LLRequestType						mType; +					mCompleteTime; +	U32				mOffset; +	U32Bytes		mSize; +	LLRequestType	mType;  	LLTextureInfoDetails();  }; diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index f39d41c2b8..3974668d09 100755 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -350,7 +350,7 @@ void LLTextureBar::draw()  		// draw the image size at the end  		{  			std::string num_str = llformat("%3dx%3d (%2d) %7d", mImagep->getWidth(), mImagep->getHeight(), -				mImagep->getDiscardLevel(), mImagep->hasGLTexture() ? mImagep->getTextureMemory() : 0); +				mImagep->getDiscardLevel(), mImagep->hasGLTexture() ? mImagep->getTextureMemory().value() : 0);  			LLFontGL::getFontMonospace()->renderUTF8(num_str, 0, title_x4, getRect().getHeight(), color,  											LLFontGL::LEFT, LLFontGL::TOP);  		} @@ -507,13 +507,13 @@ private:  void LLGLTexMemBar::draw()  { -	S32Mibibytes bound_mem = LLViewerTexture::sBoundTextureMemory; - 	S32Mibibytes max_bound_mem = LLViewerTexture::sMaxBoundTextureMem; -	S32Mibibytes total_mem = LLViewerTexture::sTotalTextureMemory; -	S32Mibibytes max_total_mem = LLViewerTexture::sMaxTotalTextureMem; +	S32Megabytes bound_mem = LLViewerTexture::sBoundTextureMemory; + 	S32Megabytes max_bound_mem = LLViewerTexture::sMaxBoundTextureMem; +	S32Megabytes total_mem = LLViewerTexture::sTotalTextureMemory; +	S32Megabytes max_total_mem = LLViewerTexture::sMaxTotalTextureMem;  	F32 discard_bias = LLViewerTexture::sDesiredDiscardBias; -	F32 cache_usage = (F32)F32Mibibytes(LLAppViewer::getTextureCache()->getUsage()).value() ; -	F32 cache_max_usage = (F32)F32Mibibytes(LLAppViewer::getTextureCache()->getMaxUsage()).value() ; +	F32 cache_usage = (F32)F32Megabytes(LLAppViewer::getTextureCache()->getUsage()).value() ; +	F32 cache_max_usage = (F32)F32Megabytes(LLAppViewer::getTextureCache()->getMaxUsage()).value() ;  	S32 line_height = LLFontGL::getFontMonospace()->getLineHeight();  	S32 v_offset = 0;//(S32)((texture_bar_height + 2.2f) * mTextureView->mNumTextureBars + 2.0f);  	F32Bytes total_texture_downloaded = gTotalTextureData; @@ -586,8 +586,8 @@ void LLGLTexMemBar::draw()  	left = 550; -	F32Kibibits bandwidth = LLAppViewer::getTextureFetch()->getTextureBandwidth(); -	F32Kibibits max_bandwidth(gSavedSettings.getF32("ThrottleBandwidthKBPS")); +	F32Kilobits bandwidth(LLAppViewer::getTextureFetch()->getTextureBandwidth()); +	F32Kilobits max_bandwidth(gSavedSettings.getF32("ThrottleBandwidthKBPS"));  	color = bandwidth > max_bandwidth ? LLColor4::red : bandwidth > max_bandwidth*.75f ? LLColor4::yellow : text_color;  	color[VALPHA] = text_color[VALPHA];  	text = llformat("BW:%.0f/%.0f",bandwidth.value(), max_bandwidth.value()); @@ -793,7 +793,7 @@ void LLTextureView::draw()  			if (mPrintList)  			{ -				S32 tex_mem = imagep->hasGLTexture() ? imagep->getTextureMemory() : 0 ; +				S32 tex_mem = imagep->hasGLTexture() ? imagep->getTextureMemory().value() : 0 ;  				LL_INFOS() << imagep->getID()  						<< "\t" << tex_mem  						<< "\t" << imagep->getBoostLevel() diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp index df65a637b7..5fb99ce02f 100755 --- a/indra/newview/llviewerassetstorage.cpp +++ b/indra/newview/llviewerassetstorage.cpp @@ -77,7 +77,7 @@ protected:  				LLViewerAssetStatsFF::record_response(mType, false, false,  														   (LLViewerAssetStatsFF::get_timestamp()  															- mMetricsStartTime)); -				mMetricsStartTime = 0; +				mMetricsStartTime = (U32Seconds)0;  			}  		} @@ -113,7 +113,7 @@ void LLViewerAssetStorage::storeAssetData(  	bool is_priority,  	bool store_local,  	bool user_waiting, -	F64 timeout) +	F64Seconds timeout)  {  	LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID());  	LL_DEBUGS("AssetStorage") << "LLViewerAssetStorage::storeAssetData (legacy) " << tid << ":" << LLAssetType::lookup(asset_type) @@ -237,7 +237,7 @@ void LLViewerAssetStorage::storeAssetData(  	bool temp_file,  	bool is_priority,  	bool user_waiting, -	F64 timeout) +	F64Seconds timeout)  {  	if(filename.empty())  	{ diff --git a/indra/newview/llviewerassetstorage.h b/indra/newview/llviewerassetstorage.h index ca9b9943fa..6baec647e6 100755 --- a/indra/newview/llviewerassetstorage.h +++ b/indra/newview/llviewerassetstorage.h @@ -51,7 +51,7 @@ public:  		bool is_priority = false,  		bool store_local = false,  		bool user_waiting=FALSE, -		F64 timeout=LL_ASSET_STORAGE_TIMEOUT); +		F64Seconds timeout=LL_ASSET_STORAGE_TIMEOUT);  	virtual void storeAssetData(  		const std::string& filename, @@ -62,7 +62,7 @@ public:  		bool temp_file = false,  		bool is_priority = false,  		bool user_waiting=FALSE, -		F64 timeout=LL_ASSET_STORAGE_TIMEOUT); +		F64Seconds timeout=LL_ASSET_STORAGE_TIMEOUT);  protected:  	using LLAssetStorage::_queueDataRequest; diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index d0491450dc..95419c7cf3 100755 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -287,7 +287,7 @@ static bool handleMaxPartCountChanged(const LLSD& newvalue)  static bool handleVideoMemoryChanged(const LLSD& newvalue)  { -	gTextureList.updateMaxResidentTexMem(S32Mibibytes(newvalue.asInteger())); +	gTextureList.updateMaxResidentTexMem(S32Megabytes(newvalue.asInteger()));  	return true;  } diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index cb5078b988..d2a702049a 100755 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -220,8 +220,8 @@ void display_stats()  	F32 mem_log_freq = gSavedSettings.getF32("MemoryLogFrequency");  	if (mem_log_freq > 0.f && gRecentMemoryTime.getElapsedTimeF32() >= mem_log_freq)  	{ -		gMemoryAllocated = LLMemory::getCurrentRSS(); -		U32Mibibytes memory = gMemoryAllocated; +		gMemoryAllocated = (U64Bytes)LLMemory::getCurrentRSS(); +		U32Megabytes memory = gMemoryAllocated;  		LL_INFOS() << llformat("MEMORY: %d MB", memory.value()) << LL_ENDL;  		LLMemory::logMemoryInfo(TRUE) ;  		gRecentMemoryTime.reset(); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 6c435bf147..cbc895390c 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -401,11 +401,11 @@ void process_layer_data(LLMessageSystem *mesgsys, void **user_data)  	LLVLData *vl_datap = new LLVLData(regionp, type, datap, size);  	if (mesgsys->getReceiveCompressedSize())  	{ -		gVLManager.addLayerData(vl_datap, mesgsys->getReceiveCompressedSize()); +		gVLManager.addLayerData(vl_datap, (S32Bytes)mesgsys->getReceiveCompressedSize());  	}  	else  	{ -		gVLManager.addLayerData(vl_datap, mesgsys->getReceiveSize()); +		gVLManager.addLayerData(vl_datap, (S32Bytes)mesgsys->getReceiveSize());  	}  } diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index b054e519e0..8092eda7b2 100755 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -2417,14 +2417,14 @@ void LLViewerObject::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)  	if (!mStatic && sVelocityInterpolate && !isSelected())  	{  		// calculate dt from last update -		F32 dt_raw = (F32)(time - mLastInterpUpdateSecs); +		F32 dt_raw = ((F64Seconds)time - mLastInterpUpdateSecs).value();  		F32 dt = mTimeDilation * dt_raw;  			applyAngularVelocity(dt);  			if (isAttachment())  				{ -					mLastInterpUpdateSecs = time; +					mLastInterpUpdateSecs = (F64Seconds)time;  				return;  		}  		else @@ -2438,8 +2438,8 @@ void LLViewerObject::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)  } -// Move an object due to idle-time viewer side updates by iterpolating motion -void LLViewerObject::interpolateLinearMotion(const F64 & time, const F32 & dt) +// Move an object due to idle-time viewer side updates by interpolating motion +void LLViewerObject::interpolateLinearMotion(const F64SecondsImplicit& time, const F32SecondsImplicit& dt)  {  	// linear motion  	// PHYSICS_TIMESTEP is used below to correct for the fact that the velocity in object @@ -2450,8 +2450,8 @@ void LLViewerObject::interpolateLinearMotion(const F64 & time, const F32 & dt)  	// to see if object is selected, instead of explicitly  	// zeroing it out	 -	F64 time_since_last_update = time - mLastMessageUpdateSecs; -	if (time_since_last_update <= 0.0 || dt <= 0.f) +	F64Seconds time_since_last_update = time - mLastMessageUpdateSecs; +	if (time_since_last_update <= (F64Seconds)0.0 || dt <= (F32Seconds)0.f)  	{  		return;  	} @@ -2459,11 +2459,11 @@ void LLViewerObject::interpolateLinearMotion(const F64 & time, const F32 & dt)  	LLVector3 accel = getAcceleration();  	LLVector3 vel 	= getVelocity(); -	if (sMaxUpdateInterpolationTime <= 0.0) +	if (sMaxUpdateInterpolationTime <= (F64Seconds)0.0)  	{	// Old code path ... unbounded, simple interpolation  		if (!(accel.isExactlyZero() && vel.isExactlyZero()))  		{ -			LLVector3 pos   = (vel + (0.5f * (dt-PHYSICS_TIMESTEP)) * accel) * dt;   +			LLVector3 pos   = (vel + (0.5f * (dt-PHYSICS_TIMESTEP)) * accel) * dt.value();    			// region local    			setPositionRegion(pos + getPositionRegion()); @@ -2477,12 +2477,12 @@ void LLViewerObject::interpolateLinearMotion(const F64 & time, const F32 & dt)  	{	// Object is moving, and hasn't been too long since we got an update from the server  		// Calculate predicted position and velocity -		LLVector3 new_pos = (vel + (0.5f * (dt-PHYSICS_TIMESTEP)) * accel) * dt;	 +		LLVector3 new_pos = (vel + (0.5f * (dt-PHYSICS_TIMESTEP)) * accel) * dt.value();	  		LLVector3 new_v = accel * dt;  		if (time_since_last_update > sPhaseOutUpdateInterpolationTime && -			sPhaseOutUpdateInterpolationTime > 0.0) -		{	// Haven't seen a viewer update in a while, check to see if the ciruit is still active +			sPhaseOutUpdateInterpolationTime > (F64Seconds)0.0) +		{	// Haven't seen a viewer update in a while, check to see if the circuit is still active  			if (mRegionp)  			{	// The simulator will NOT send updates if the object continues normally on the path  				// predicted by the velocity and the acceleration (often gravity) sent to the viewer @@ -2498,7 +2498,7 @@ void LLViewerObject::interpolateLinearMotion(const F64 & time, const F32 & dt)  						 (time_since_last_packet > sPhaseOutUpdateInterpolationTime))  					{  						// Start to reduce motion interpolation since we haven't seen a server update in a while -						F64 time_since_last_interpolation = time - mLastInterpUpdateSecs; +						F64Seconds time_since_last_interpolation = time - mLastInterpUpdateSecs;  						F64 phase_out = 1.0;  						if (time_since_last_update > sMaxUpdateInterpolationTime)  						{	// Past the time limit, so stop the object diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 3943709049..24dff45ae8 100755 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -580,7 +580,7 @@ private:      U32 checkMediaURL(const std::string &media_url);  	// Motion prediction between updates -	void interpolateLinearMotion(const F64 & time, const F32 & dt); +	void interpolateLinearMotion(const F64SecondsImplicit & time, const F32SecondsImplicit & dt);  	static void initObjectDataMap(); @@ -707,8 +707,8 @@ protected:  	child_list_t	mChildList; -	F64				mLastInterpUpdateSecs;			// Last update for purposes of interpolation -	F64				mLastMessageUpdateSecs;			// Last update from a message from the simulator +	F64Seconds		mLastInterpUpdateSecs;			// Last update for purposes of interpolation +	F64Seconds		mLastMessageUpdateSecs;			// Last update from a message from the simulator  	TPACKETID		mLatestRecvPacketID;			// Latest time stamp on message from simulator  	// extra data sent from the sim...currently only used for tree species info @@ -781,7 +781,7 @@ protected:  	mutable LLVector3		mPositionAgent;  	static void setPhaseOutUpdateInterpolationTime(F32 value)	{ sPhaseOutUpdateInterpolationTime = (F64Seconds) value;	} -	static void setMaxUpdateInterpolationTime(F32 value)		{ sMaxUpdateInterpolationTime = (F64) value;	} +	static void setMaxUpdateInterpolationTime(F32 value)		{ sMaxUpdateInterpolationTime = (F64Seconds) value;	}  	static void	setVelocityInterpolate(BOOL value)		{ sVelocityInterpolate = value;	}  	static void	setPingInterpolate(BOOL value)			{ sPingInterpolate = value;	} diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index ba0402344e..da01c0406a 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -430,14 +430,14 @@ void LLViewerRegion::initStats()  {  	mImpl->mLastNetUpdate.reset();  	mPacketsIn = 0; -	mBitsIn = 0; -	mLastBitsIn = 0; +	mBitsIn = (U32Bits)0; +	mLastBitsIn = (U32Bits)0;  	mLastPacketsIn = 0;  	mPacketsOut = 0;  	mLastPacketsOut = 0;  	mPacketsLost = 0;  	mLastPacketsLost = 0; -	mPingDelay = 0; +	mPingDelay = (U32Seconds)0;  	mAlive = false;					// can become false if circuit disconnects  } diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index bb2c13df33..f300983f19 100755 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -95,7 +95,7 @@ LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Kilotriangles> >  LLTrace::EventStatHandle<LLUnit<F64, LLUnits::Kilotriangles> >  							TRIANGLES_DRAWN_PER_FRAME("trianglesdrawnperframestat"); -LLTrace::CountStatHandle<F64Kibibytes >	 +LLTrace::CountStatHandle<F64Kilobytes >	  							ACTIVE_MESSAGE_DATA_RECEIVED("activemessagedatareceived", "Message system data received on all active regions"),  							LAYERS_NETWORK_DATA_RECEIVED("layersdatareceived", "Network data received for layer data (terrain)"),  							OBJECT_NETWORK_DATA_RECEIVED("objectdatareceived", "Network data received for objects"), @@ -156,7 +156,7 @@ LLTrace::SampleStatHandle<F64Megabytes >	GL_TEX_MEM("gltexmemstat"),  															GL_BOUND_MEM("glboundmemstat"),  															RAW_MEM("rawmemstat"),  															FORMATTED_MEM("formattedmemstat"); -LLTrace::SampleStatHandle<F64Kibibytes >	DELTA_BANDWIDTH("deltabandwidth", "Increase/Decrease in bandwidth based on packet loss"), +LLTrace::SampleStatHandle<F64Kilobytes >	DELTA_BANDWIDTH("deltabandwidth", "Increase/Decrease in bandwidth based on packet loss"),  															MAX_BANDWIDTH("maxbandwidth", "Max bandwidth setting"); @@ -221,7 +221,7 @@ void LLViewerStats::resetStats()  void LLViewerStats::updateFrameStats(const F64Seconds time_diff)  { -	if (getRecording().getLastValue(LLStatViewer::PACKETS_LOST_PERCENT) > 5.0) +	if (getRecording().getLastValue(LLStatViewer::PACKETS_LOST_PERCENT) > F32Percent(5.0))  	{  		add(LLStatViewer::LOSS_5_PERCENT_TIME, time_diff);  	} @@ -239,20 +239,20 @@ void LLViewerStats::updateFrameStats(const F64Seconds time_diff)  		add(LLStatViewer::SIM_PHYSICS_20_FPS_TIME, time_diff);  	} -	if (time_diff >= 0.5) +	if (time_diff >= (F64Seconds)0.5)  	{  		record(LLStatViewer::FPS_2_TIME, time_diff);  	} -	if (time_diff >= 0.125) +	if (time_diff >= (F64Seconds)0.125)  	{  		record(LLStatViewer::FPS_8_TIME, time_diff);  	} -	if (time_diff >= 0.1) +	if (time_diff >= (F64Seconds)0.1)  	{  		record(LLStatViewer::FPS_10_TIME, time_diff);  	} -	if (gFrameCount && mLastTimeDiff > 0.0) +	if (gFrameCount && mLastTimeDiff > (F64Seconds)0.0)  	{  		// new "stutter" meter  		add(LLStatViewer::FRAMETIME_DOUBLED, time_diff >= 2.0 * mLastTimeDiff ? 1 : 0); @@ -260,7 +260,7 @@ void LLViewerStats::updateFrameStats(const F64Seconds time_diff)  		// old stats that were never really used  		sample(LLStatViewer::FRAMETIME_JITTER, F64Milliseconds (mLastTimeDiff - time_diff)); -		F32 average_frametime = gRenderStartTime.getElapsedTimeF32() / (F32)gFrameCount; +		F32Seconds average_frametime = gRenderStartTime.getElapsedTimeF32() / (F32)gFrameCount;  		sample(LLStatViewer::FRAMETIME_SLEW, F64Milliseconds (average_frametime - time_diff));  		F32 max_bandwidth = gViewerThrottle.getMaxBandwidth(); @@ -359,7 +359,7 @@ void update_statistics()  	if (cdp)  	{  		sample(LLStatViewer::SIM_PING, F64Milliseconds (cdp->getPingDelay())); -		gAvgSimPing = ((gAvgSimPing * (F32)gSimPingCount) + (F32)(cdp->getPingDelay().value())) / ((F32)gSimPingCount + 1); +		gAvgSimPing = ((gAvgSimPing * gSimPingCount) + cdp->getPingDelay()) / (gSimPingCount + 1);  		gSimPingCount++;  	}  	else @@ -373,8 +373,8 @@ void update_statistics()  	}  	add(LLStatViewer::FPS, 1); -	F32 layer_bits = (F32)(gVLManager.getLandBits() + gVLManager.getWindBits() + gVLManager.getCloudBits()); -	add(LLStatViewer::LAYERS_NETWORK_DATA_RECEIVED, F64Bits(layer_bits)); +	F64Bits layer_bits = gVLManager.getLandBits() + gVLManager.getWindBits() + gVLManager.getCloudBits(); +	add(LLStatViewer::LAYERS_NETWORK_DATA_RECEIVED, layer_bits);  	add(LLStatViewer::OBJECT_NETWORK_DATA_RECEIVED, gObjectData);  	sample(LLStatViewer::PENDING_VFS_OPERATIONS, LLVFile::getVFSThread()->getPending());  	add(LLStatViewer::ASSET_UDP_DATA_RECEIVED, F64Bits(gTransferManager.getTransferBitsIn(LLTCT_ASSET))); @@ -395,7 +395,7 @@ void update_statistics()  	// Reset all of these values.  	gVLManager.resetBitCounts(); -	gObjectData = 0; +	gObjectData = (U32Bytes)0;  //	gDecodedBits = 0;  	// Only update texture stats periodically so that they are less noisy @@ -553,9 +553,9 @@ void send_stats()  	LLSD &download = body["downloads"]; -	download["world_kbytes"] = F64Kibibytes(gTotalWorldData).value(); -	download["object_kbytes"] = F64Kibibytes(gTotalObjectData).value(); -	download["texture_kbytes"] = F64Kibibytes(gTotalTextureData).value(); +	download["world_kbytes"] = F64Kilobytes(gTotalWorldData).value(); +	download["object_kbytes"] = F64Kilobytes(gTotalObjectData).value(); +	download["texture_kbytes"] = F64Kilobytes(gTotalTextureData).value();  	download["mesh_kbytes"] = LLMeshRepository::sBytesReceived/1024.0;  	LLSD &in = body["stats"]["net"]["in"]; diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h index 42c56e8835..0d959ed034 100755 --- a/indra/newview/llviewerstats.h +++ b/indra/newview/llviewerstats.h @@ -142,7 +142,7 @@ extern LLTrace::CountStatHandle<>			FPS,  extern LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Kilotriangles> > TRIANGLES_DRAWN; -extern LLTrace::CountStatHandle<F64Kibibytes >	ACTIVE_MESSAGE_DATA_RECEIVED, +extern LLTrace::CountStatHandle<F64Kilobytes >	ACTIVE_MESSAGE_DATA_RECEIVED,  																	LAYERS_NETWORK_DATA_RECEIVED,  																	OBJECT_NETWORK_DATA_RECEIVED,  																	ASSET_UDP_DATA_RECEIVED, @@ -196,7 +196,7 @@ extern LLTrace::SampleStatHandle<F64Megabytes >	GL_TEX_MEM,  																	GL_BOUND_MEM,  																	RAW_MEM,  																	FORMATTED_MEM; -extern LLTrace::SampleStatHandle<F64Kibibytes >	DELTA_BANDWIDTH, +extern LLTrace::SampleStatHandle<F64Kilobytes >	DELTA_BANDWIDTH,  																	MAX_BANDWIDTH;  extern SimMeasurement<F64Milliseconds >	SIM_FRAME_TIME,  															SIM_NET_TIME, diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 4290d338c1..6bda1499d0 100755 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -63,8 +63,8 @@  ///////////////////////////////////////////////////////////////////////////////  // extern -const S32Mibibytes gMinVideoRam(32); -const S32Mibibytes gMaxVideoRam(512); +const S32Megabytes gMinVideoRam(32); +const S32Megabytes gMaxVideoRam(512);  // statics @@ -76,8 +76,8 @@ LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sWhiteImagep = NULL;  LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sDefaultImagep = NULL;  LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sSmokeImagep = NULL;  LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sFlatNormalImagep = NULL; -LLViewerMediaTexture::media_map_t LLViewerMediaTexture::sMediaMap ; -LLTexturePipelineTester* LLViewerTextureManager::sTesterp = NULL ; +LLViewerMediaTexture::media_map_t LLViewerMediaTexture::sMediaMap; +LLTexturePipelineTester* LLViewerTextureManager::sTesterp = NULL;  const std::string sTesterName("TextureTester");  S32 LLViewerTexture::sImageCount = 0; @@ -88,19 +88,19 @@ F32 LLViewerTexture::sDesiredDiscardBias = 0.f;  F32 LLViewerTexture::sDesiredDiscardScale = 1.1f;  S32Bytes LLViewerTexture::sBoundTextureMemory;  S32Bytes LLViewerTexture::sTotalTextureMemory; -S32Mibibytes LLViewerTexture::sMaxBoundTextureMem; -S32Mibibytes LLViewerTexture::sMaxTotalTextureMem; +S32Megabytes LLViewerTexture::sMaxBoundTextureMem; +S32Megabytes LLViewerTexture::sMaxTotalTextureMem;  S32Bytes LLViewerTexture::sMaxDesiredTextureMem; -S8  LLViewerTexture::sCameraMovingDiscardBias = 0 ; -F32 LLViewerTexture::sCameraMovingBias = 0.0f ; -S32 LLViewerTexture::sMaxSculptRez = 128 ; //max sculpt image size -const S32 MAX_CACHED_RAW_IMAGE_AREA = 64 * 64 ; -const S32 MAX_CACHED_RAW_SCULPT_IMAGE_AREA = LLViewerTexture::sMaxSculptRez * LLViewerTexture::sMaxSculptRez ; -const S32 MAX_CACHED_RAW_TERRAIN_IMAGE_AREA = 128 * 128 ; -S32 LLViewerTexture::sMinLargeImageSize = 65536 ; //256 * 256. -S32 LLViewerTexture::sMaxSmallImageSize = MAX_CACHED_RAW_IMAGE_AREA ; -BOOL LLViewerTexture::sFreezeImageScalingDown = FALSE ; -F32 LLViewerTexture::sCurrentTime = 0.0f ; +S8  LLViewerTexture::sCameraMovingDiscardBias = 0; +F32 LLViewerTexture::sCameraMovingBias = 0.0f; +S32 LLViewerTexture::sMaxSculptRez = 128; //max sculpt image size +const S32 MAX_CACHED_RAW_IMAGE_AREA = 64 * 64; +const S32 MAX_CACHED_RAW_SCULPT_IMAGE_AREA = LLViewerTexture::sMaxSculptRez * LLViewerTexture::sMaxSculptRez; +const S32 MAX_CACHED_RAW_TERRAIN_IMAGE_AREA = 128 * 128; +S32 LLViewerTexture::sMinLargeImageSize = 65536; //256 * 256. +S32 LLViewerTexture::sMaxSmallImageSize = MAX_CACHED_RAW_IMAGE_AREA; +BOOL LLViewerTexture::sFreezeImageScalingDown = FALSE; +F32 LLViewerTexture::sCurrentTime = 0.0f;  F32  LLViewerTexture::sTexelPixelRatio = 1.0f;  LLViewerTexture::EDebugTexels LLViewerTexture::sDebugTexelsMode = LLViewerTexture::DEBUG_TEXELS_OFF; @@ -142,7 +142,7 @@ void LLLoadedCallbackEntry::removeTexture(LLViewerFetchedTexture* tex)  {  	if(mSourceCallbackList)  	{ -		mSourceCallbackList->erase(tex->getID()) ; +		mSourceCallbackList->erase(tex->getID());  	}  } @@ -155,33 +155,33 @@ void LLLoadedCallbackEntry::cleanUpCallbackList(LLLoadedCallbackEntry::source_ca  		for(LLLoadedCallbackEntry::source_callback_list_t::iterator iter = callback_list->begin();  				iter != callback_list->end(); ++iter)  		{ -			LLViewerFetchedTexture* tex = gTextureList.findImage(*iter) ; +			LLViewerFetchedTexture* tex = gTextureList.findImage(*iter);  			if(tex)  			{ -				tex->deleteCallbackEntry(callback_list) ;			 +				tex->deleteCallbackEntry(callback_list);			  			}  		} -		callback_list->clear() ; +		callback_list->clear();  	}  }  LLViewerMediaTexture* LLViewerTextureManager::createMediaTexture(const LLUUID &media_id, BOOL usemipmaps, LLImageGL* gl_image)  { -	return new LLViewerMediaTexture(media_id, usemipmaps, gl_image) ;		 +	return new LLViewerMediaTexture(media_id, usemipmaps, gl_image);		  }  LLViewerTexture*  LLViewerTextureManager::findTexture(const LLUUID& id)   { -	LLViewerTexture* tex ; +	LLViewerTexture* tex;  	//search fetched texture list -	tex = gTextureList.findImage(id) ; +	tex = gTextureList.findImage(id);  	//search media texture list  	if(!tex)  	{ -		tex = LLViewerTextureManager::findMediaTexture(id) ; +		tex = LLViewerTextureManager::findMediaTexture(id);  	} -	return tex ; +	return tex;  }  LLViewerFetchedTexture*  LLViewerTextureManager::findFetchedTexture(const LLUUID& id)  @@ -191,78 +191,78 @@ LLViewerFetchedTexture*  LLViewerTextureManager::findFetchedTexture(const LLUUID  LLViewerMediaTexture* LLViewerTextureManager::findMediaTexture(const LLUUID &media_id)  { -	return LLViewerMediaTexture::findMediaTexture(media_id) ;	 +	return LLViewerMediaTexture::findMediaTexture(media_id);	  }  LLViewerMediaTexture*  LLViewerTextureManager::getMediaTexture(const LLUUID& id, BOOL usemipmaps, LLImageGL* gl_image)   { -	LLViewerMediaTexture* tex = LLViewerMediaTexture::findMediaTexture(id) ;	 +	LLViewerMediaTexture* tex = LLViewerMediaTexture::findMediaTexture(id);	  	if(!tex)  	{ -		tex = LLViewerTextureManager::createMediaTexture(id, usemipmaps, gl_image) ; +		tex = LLViewerTextureManager::createMediaTexture(id, usemipmaps, gl_image);  	} -	tex->initVirtualSize() ; +	tex->initVirtualSize(); -	return tex ; +	return tex;  }  LLViewerFetchedTexture* LLViewerTextureManager::staticCastToFetchedTexture(LLTexture* tex, BOOL report_error)  {  	if(!tex)  	{ -		return NULL ; +		return NULL;  	} -	S8 type = tex->getType() ; +	S8 type = tex->getType();  	if(type == LLViewerTexture::FETCHED_TEXTURE || type == LLViewerTexture::LOD_TEXTURE)  	{ -		return static_cast<LLViewerFetchedTexture*>(tex) ; +		return static_cast<LLViewerFetchedTexture*>(tex);  	}  	if(report_error)  	{ -		LL_ERRS() << "not a fetched texture type: " << type << LL_ENDL ; +		LL_ERRS() << "not a fetched texture type: " << type << LL_ENDL;  	} -	return NULL ; +	return NULL;  }  LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(BOOL usemipmaps, BOOL generate_gl_tex)  { -	LLPointer<LLViewerTexture> tex = new LLViewerTexture(usemipmaps) ; +	LLPointer<LLViewerTexture> tex = new LLViewerTexture(usemipmaps);  	if(generate_gl_tex)  	{ -		tex->generateGLTexture() ; -		tex->setCategory(LLGLTexture::LOCAL) ; +		tex->generateGLTexture(); +		tex->setCategory(LLGLTexture::LOCAL);  	} -	return tex ; +	return tex;  }  LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(const LLUUID& id, BOOL usemipmaps, BOOL generate_gl_tex)   { -	LLPointer<LLViewerTexture> tex = new LLViewerTexture(id, usemipmaps) ; +	LLPointer<LLViewerTexture> tex = new LLViewerTexture(id, usemipmaps);  	if(generate_gl_tex)  	{ -		tex->generateGLTexture() ; -		tex->setCategory(LLGLTexture::LOCAL) ; +		tex->generateGLTexture(); +		tex->setCategory(LLGLTexture::LOCAL);  	} -	return tex ; +	return tex;  }  LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(const LLImageRaw* raw, BOOL usemipmaps)   { -	LLPointer<LLViewerTexture> tex = new LLViewerTexture(raw, usemipmaps) ; -	tex->setCategory(LLGLTexture::LOCAL) ; -	return tex ; +	LLPointer<LLViewerTexture> tex = new LLViewerTexture(raw, usemipmaps); +	tex->setCategory(LLGLTexture::LOCAL); +	return tex;  }  LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex)   { -	LLPointer<LLViewerTexture> tex = new LLViewerTexture(width, height, components, usemipmaps) ; +	LLPointer<LLViewerTexture> tex = new LLViewerTexture(width, height, components, usemipmaps);  	if(generate_gl_tex)  	{ -		tex->generateGLTexture() ; -		tex->setCategory(LLGLTexture::LOCAL) ; +		tex->generateGLTexture(); +		tex->setCategory(LLGLTexture::LOCAL);  	} -	return tex ; +	return tex;  }  LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture( @@ -275,7 +275,7 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(  												   LLGLenum primary_format,  												   LLHost request_from_host)  { -	return gTextureList.getImage(image_id, f_type, usemipmaps, boost_priority, texture_type, internal_format, primary_format, request_from_host) ; +	return gTextureList.getImage(image_id, f_type, usemipmaps, boost_priority, texture_type, internal_format, primary_format, request_from_host);  }  LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromFile( @@ -288,7 +288,7 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromFile(  												   LLGLenum primary_format,   												   const LLUUID& force_id)  { -	return gTextureList.getImageFromFile(filename, f_type, usemipmaps, boost_priority, texture_type, internal_format, primary_format, force_id) ; +	return gTextureList.getImageFromFile(filename, f_type, usemipmaps, boost_priority, texture_type, internal_format, primary_format, force_id);  }  //static  @@ -302,12 +302,12 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const s  									 const LLUUID& force_id  									 )  { -	return gTextureList.getImageFromUrl(url, f_type, usemipmaps, boost_priority, texture_type, internal_format, primary_format, force_id) ; +	return gTextureList.getImageFromUrl(url, f_type, usemipmaps, boost_priority, texture_type, internal_format, primary_format, force_id);  }  LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromHost(const LLUUID& image_id, FTType f_type, LLHost host)   { -	return gTextureList.getImageFromHost(image_id, f_type, host) ; +	return gTextureList.getImageFromHost(image_id, f_type, host);  }  // Create a bridge to the viewer texture manager. @@ -335,15 +335,15 @@ void LLViewerTextureManager::init()  	{  		LLPointer<LLImageRaw> raw = new LLImageRaw(1,1,3);  		raw->clear(0x77, 0x77, 0x77, 0xFF); -		LLViewerTexture::sNullImagep = LLViewerTextureManager::getLocalTexture(raw.get(), TRUE) ; +		LLViewerTexture::sNullImagep = LLViewerTextureManager::getLocalTexture(raw.get(), TRUE);  	}  	const S32 dim = 128;  	LLPointer<LLImageRaw> image_raw = new LLImageRaw(dim,dim,3);  	U8* data = image_raw->getData(); -	memset(data, 0, dim * dim * 3) ; -	LLViewerTexture::sBlackImagep = LLViewerTextureManager::getLocalTexture(image_raw.get(), TRUE) ; +	memset(data, 0, dim * dim * 3); +	LLViewerTexture::sBlackImagep = LLViewerTextureManager::getLocalTexture(image_raw.get(), TRUE);  #if 1  	LLPointer<LLViewerFetchedTexture> imagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT); @@ -372,16 +372,16 @@ void LLViewerTextureManager::init()  	}  	imagep->createGLTexture(0, image_raw);  	//cache the raw image -	imagep->setCachedRawImage(0, image_raw) ; +	imagep->setCachedRawImage(0, image_raw);  	image_raw = NULL;  #else   	LLViewerFetchedTexture::sDefaultImagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLGLTexture::BOOST_UI);  #endif  	LLViewerFetchedTexture::sDefaultImagep->dontDiscard(); -	LLViewerFetchedTexture::sDefaultImagep->setCategory(LLGLTexture::OTHER) ; +	LLViewerFetchedTexture::sDefaultImagep->setCategory(LLGLTexture::OTHER);   	LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_UI); -	LLViewerFetchedTexture::sSmokeImagep->setNoDelete() ; +	LLViewerFetchedTexture::sSmokeImagep->setNoDelete();  	image_raw = new LLImageRaw(32,32,3);  	data = image_raw->getData(); @@ -398,14 +398,14 @@ void LLViewerTextureManager::init()  	LLViewerTexture::sCheckerBoardImagep = LLViewerTextureManager::getLocalTexture(image_raw.get(), TRUE); -	LLViewerTexture::initClass() ; +	LLViewerTexture::initClass();  	// Create a texture manager bridge.  	gTextureManagerBridgep = new LLViewerTextureManagerBridge;  	if (LLMetricPerformanceTesterBasic::isMetricLogRequested(sTesterName) && !LLMetricPerformanceTesterBasic::getTester(sTesterName))  	{ -		sTesterp = new LLTexturePipelineTester() ; +		sTesterp = new LLTexturePipelineTester();  		if (!sTesterp->isValid())  		{  			delete sTesterp; @@ -419,7 +419,7 @@ void LLViewerTextureManager::cleanup()  	stop_glerror();  	delete gTextureManagerBridgep; -	LLImageGL::sDefaultGLTexture = NULL ; +	LLImageGL::sDefaultGLTexture = NULL;  	LLViewerTexture::sNullImagep = NULL;  	LLViewerTexture::sBlackImagep = NULL;  	LLViewerTexture::sCheckerBoardImagep = NULL; @@ -429,7 +429,7 @@ void LLViewerTextureManager::cleanup()  	LLViewerFetchedTexture::sWhiteImagep = NULL;  	LLViewerFetchedTexture::sFlatNormalImagep = NULL; -	LLViewerMediaTexture::cleanUpClass() ;	 +	LLViewerMediaTexture::cleanUpClass();	  }  //---------------------------------------------------------------------------------------------- @@ -439,7 +439,7 @@ void LLViewerTextureManager::cleanup()  // static  void LLViewerTexture::initClass()  { -	LLImageGL::sDefaultGLTexture = LLViewerFetchedTexture::sDefaultImagep->getGLTexture() ; +	LLImageGL::sDefaultGLTexture = LLViewerFetchedTexture::sDefaultImagep->getGLTexture();  	if(gSavedSettings.getBOOL("TextureFetchDebuggerEnabled"))  	{ @@ -460,37 +460,37 @@ static LLFastTimer::DeclareTimer FTM_TEXTURE_MEMORY_CHECK("Memory Check");  //static   bool LLViewerTexture::isMemoryForTextureLow()  { -	const F32 WAIT_TIME = 1.0f ; //second -	static LLFrameTimer timer ; +	const F32 WAIT_TIME = 1.0f; //second +	static LLFrameTimer timer;  	if(timer.getElapsedTimeF32() < WAIT_TIME) //call this once per second.  	{  		return false;  	} -	timer.reset() ; +	timer.reset();  	LLFastTimer t(FTM_TEXTURE_MEMORY_CHECK); -	const S32 MIN_FREE_TEXTURE_MEMORY = 5 ; //MB -	const S32 MIN_FREE_MAIN_MEMORy = 100 ; //MB	 +	const S32Megabytes MIN_FREE_TEXTURE_MEMORY(5); //MB +	const S32Megabytes MIN_FREE_MAIN_MEMORY(100); //MB	 -	bool low_mem = false ; +	bool low_mem = false;  	if (gGLManager.mHasATIMemInfo)  	{  		S32 meminfo[4];  		glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI, meminfo); -		if(meminfo[0] / 1024 < MIN_FREE_TEXTURE_MEMORY) +		if((S32Megabytes)meminfo[0] < MIN_FREE_TEXTURE_MEMORY)  		{ -			low_mem = true ; +			low_mem = true;  		}  		if(!low_mem) //check main memory, only works for windows.  		{ -			LLMemory::updateMemoryInfo() ; -			if(LLMemory::getAvailableMemKB() / 1024 < MIN_FREE_MAIN_MEMORy) +			LLMemory::updateMemoryInfo(); +			if(LLMemory::getAvailableMemKB() < MIN_FREE_TEXTURE_MEMORY)  			{ -				low_mem = true ; +				low_mem = true;  			}  		}  	} @@ -502,12 +502,12 @@ bool LLViewerTexture::isMemoryForTextureLow()  		if(free_memory / 1024 < MIN_FREE_TEXTURE_MEMORY)  		{ -			low_mem = true ; +			low_mem = true;  		}  	}  #endif	 -	return low_mem ; +	return low_mem;  }  static LLFastTimer::DeclareTimer FTM_TEXTURE_UPDATE_MEDIA("Media"); @@ -516,31 +516,31 @@ static LLFastTimer::DeclareTimer FTM_TEXTURE_UPDATE_TEST("Test");  //static  void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity)  { -	sCurrentTime = gFrameTimeSeconds ; +	sCurrentTime = gFrameTimeSeconds;  	LLTexturePipelineTester* tester = (LLTexturePipelineTester*)LLMetricPerformanceTesterBasic::getTester(sTesterName);  	if (tester)  	{  		LLFastTimer t(FTM_TEXTURE_UPDATE_TEST); -		tester->update() ; +		tester->update();  	}  	{  		LLFastTimer t(FTM_TEXTURE_UPDATE_MEDIA); -		LLViewerMediaTexture::updateClass() ; +		LLViewerMediaTexture::updateClass();  	}  	sBoundTextureMemory = LLImageGL::sBoundTextureMemory;  	sTotalTextureMemory = LLImageGL::sGlobalTextureMemory;  	sMaxBoundTextureMem = gTextureList.getMaxResidentTexMem();  	sMaxTotalTextureMem = gTextureList.getMaxTotalTextureMem(); -	sMaxDesiredTextureMem = sMaxTotalTextureMem ; //in Bytes, by default and when total used texture memory is small. +	sMaxDesiredTextureMem = sMaxTotalTextureMem; //in Bytes, by default and when total used texture memory is small.  	if (sBoundTextureMemory >= sMaxBoundTextureMem ||  		sTotalTextureMemory >= sMaxTotalTextureMem)  	{  		//when texture memory overflows, lower down the threshold to release the textures more aggressively. -		sMaxDesiredTextureMem = llmin(sMaxDesiredTextureMem * 0.75f, S32Bytes(gMaxVideoRam)); +		sMaxDesiredTextureMem = llmin(sMaxDesiredTextureMem * 0.75f, F32Bytes(gMaxVideoRam));  		// If we are using more texture memory than we should,  		// scale up the desired discard level @@ -569,13 +569,13 @@ void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity  	}  	sDesiredDiscardBias = llclamp(sDesiredDiscardBias, desired_discard_bias_min, desired_discard_bias_max); -	F32 camera_moving_speed = LLViewerCamera::getInstance()->getAverageSpeed() ; +	F32 camera_moving_speed = LLViewerCamera::getInstance()->getAverageSpeed();  	F32 camera_angular_speed = LLViewerCamera::getInstance()->getAverageAngularSpeed();  	sCameraMovingBias = llmax(0.2f * camera_moving_speed, 2.0f * camera_angular_speed - 1);  	sCameraMovingDiscardBias = (S8)(sCameraMovingBias);  	LLViewerTexture::sFreezeImageScalingDown = (sBoundTextureMemory < 0.75f * sMaxBoundTextureMem * texmem_middle_bound_scale) && -				(sTotalTextureMemory < 0.75f * sMaxTotalTextureMem * texmem_middle_bound_scale) ; +				(sTotalTextureMemory < 0.75f * sMaxTotalTextureMem * texmem_middle_bound_scale);  }  //end of static functions @@ -631,31 +631,31 @@ void LLViewerTexture::init(bool firstinit)  	mSelectedTime = 0.f;  	mMaxVirtualSize = 0.f;  	mMaxVirtualSizeResetInterval = 1; -	mMaxVirtualSizeResetCounter = mMaxVirtualSizeResetInterval ; -	mAdditionalDecodePriority = 0.f ;	 -	mParcelMedia = NULL ; +	mMaxVirtualSizeResetCounter = mMaxVirtualSizeResetInterval; +	mAdditionalDecodePriority = 0.f;	 +	mParcelMedia = NULL;  	mNumVolumes = 0; -	mFaceList[LLRender::DIFFUSE_MAP].clear() ; -	mFaceList[LLRender::NORMAL_MAP].clear() ; -	mFaceList[LLRender::SPECULAR_MAP].clear() ; +	mFaceList[LLRender::DIFFUSE_MAP].clear(); +	mFaceList[LLRender::NORMAL_MAP].clear(); +	mFaceList[LLRender::SPECULAR_MAP].clear();  	mNumFaces[LLRender::DIFFUSE_MAP] =   	mNumFaces[LLRender::NORMAL_MAP] =  -	mNumFaces[LLRender::SPECULAR_MAP] = 0 ; +	mNumFaces[LLRender::SPECULAR_MAP] = 0;  	mVolumeList.clear();  }  //virtual   S8 LLViewerTexture::getType() const  { -	return LLViewerTexture::LOCAL_TEXTURE ; +	return LLViewerTexture::LOCAL_TEXTURE;  }  void LLViewerTexture::cleanup()  { -	mFaceList[LLRender::DIFFUSE_MAP].clear() ; -	mFaceList[LLRender::NORMAL_MAP].clear() ; -	mFaceList[LLRender::SPECULAR_MAP].clear() ; +	mFaceList[LLRender::DIFFUSE_MAP].clear(); +	mFaceList[LLRender::NORMAL_MAP].clear(); +	mFaceList[LLRender::SPECULAR_MAP].clear();  	mVolumeList.clear();  } @@ -673,11 +673,11 @@ void LLViewerTexture::setBoostLevel(S32 level)  {  	if(mBoostLevel != level)  	{ -		mBoostLevel = level ; +		mBoostLevel = level;  		if(mBoostLevel != LLViewerTexture::BOOST_NONE &&   			mBoostLevel != LLViewerTexture::BOOST_SELECTED)  		{ -			setNoDelete() ;		 +			setNoDelete();		  		}  	} @@ -732,12 +732,12 @@ bool LLViewerTexture::bindDefaultImage(S32 stage)  	stop_glerror();  	//check if there is cached raw image and switch to it if possible -	switchToCachedImage() ; +	switchToCachedImage();  	LLTexturePipelineTester* tester = (LLTexturePipelineTester*)LLMetricPerformanceTesterBasic::getTester(sTesterName);  	if (tester)  	{ -		tester->updateGrayTextureBinding() ; +		tester->updateGrayTextureBinding();  	}  	return res;  } @@ -757,17 +757,17 @@ void LLViewerTexture::addTextureStats(F32 virtual_size, BOOL needs_gltexture) co  {  	if(needs_gltexture)  	{ -		mNeedsGLTexture = TRUE ; +		mNeedsGLTexture = TRUE;  	}  	virtual_size *= sTexelPixelRatio;  	if(!mMaxVirtualSizeResetCounter)  	{  		//flag to reset the values because the old values are used. -		resetMaxVirtualSizeResetCounter() ; +		resetMaxVirtualSizeResetCounter();  		mMaxVirtualSize = virtual_size;		 -		mAdditionalDecodePriority = 0.f ;	 -		mNeedsGLTexture = needs_gltexture ; +		mAdditionalDecodePriority = 0.f;	 +		mNeedsGLTexture = needs_gltexture;  	}  	else if (virtual_size > mMaxVirtualSize)  	{ @@ -777,15 +777,15 @@ void LLViewerTexture::addTextureStats(F32 virtual_size, BOOL needs_gltexture) co  void LLViewerTexture::resetTextureStats()  { -	mMaxVirtualSize = 0.0f ; -	mAdditionalDecodePriority = 0.f ;	 -	mMaxVirtualSizeResetCounter = 0 ; +	mMaxVirtualSize = 0.0f; +	mAdditionalDecodePriority = 0.f;	 +	mMaxVirtualSizeResetCounter = 0;  }  //virtual   F32 LLViewerTexture::getMaxVirtualSize()  { -	return mMaxVirtualSize ; +	return mMaxVirtualSize;  }  //virtual  @@ -801,12 +801,12 @@ void LLViewerTexture::addFace(U32 ch, LLFace* facep)  	if(mNumFaces[ch] >= mFaceList[ch].size())  	{ -		mFaceList[ch].resize(2 * mNumFaces[ch] + 1) ;		 +		mFaceList[ch].resize(2 * mNumFaces[ch] + 1);		  	} -	mFaceList[ch][mNumFaces[ch]] = facep ; -	facep->setIndexInTex(ch, mNumFaces[ch]) ; -	mNumFaces[ch]++ ; -	mLastFaceListUpdateTimer.reset() ; +	mFaceList[ch][mNumFaces[ch]] = facep; +	facep->setIndexInTex(ch, mNumFaces[ch]); +	mNumFaces[ch]++; +	mLastFaceListUpdateTimer.reset();  }  //virtual @@ -816,18 +816,18 @@ void LLViewerTexture::removeFace(U32 ch, LLFace* facep)  	if(mNumFaces[ch] > 1)  	{ -		S32 index = facep->getIndexInTex(ch) ;  +		S32 index = facep->getIndexInTex(ch);   		llassert(index < mFaceList[ch].size());  		llassert(index < mNumFaces[ch]); -		mFaceList[ch][index] = mFaceList[ch][--mNumFaces[ch]] ; -		mFaceList[ch][index]->setIndexInTex(ch, index) ; +		mFaceList[ch][index] = mFaceList[ch][--mNumFaces[ch]]; +		mFaceList[ch][index]->setIndexInTex(ch, index);  	}  	else   	{ -		mFaceList[ch].clear() ; -		mNumFaces[ch] = 0 ; +		mFaceList[ch].clear(); +		mNumFaces[ch] = 0;  	} -	mLastFaceListUpdateTimer.reset() ; +	mLastFaceListUpdateTimer.reset();  }  S32 LLViewerTexture::getTotalNumFaces() const @@ -854,12 +854,12 @@ void LLViewerTexture::addVolume(LLVOVolume* volumep)  {  	if( mNumVolumes >= mVolumeList.size())  	{ -		mVolumeList.resize(2 * mNumVolumes + 1) ;		 +		mVolumeList.resize(2 * mNumVolumes + 1);		  	} -	mVolumeList[mNumVolumes] = volumep ; -	volumep->setIndexInTex(mNumVolumes) ; -	mNumVolumes++ ; -	mLastVolumeListUpdateTimer.reset() ; +	mVolumeList[mNumVolumes] = volumep; +	volumep->setIndexInTex(mNumVolumes); +	mNumVolumes++; +	mLastVolumeListUpdateTimer.reset();  }  //virtual @@ -867,64 +867,64 @@ void LLViewerTexture::removeVolume(LLVOVolume* volumep)  {  	if(mNumVolumes > 1)  	{ -		S32 index = volumep->getIndexInTex() ;  +		S32 index = volumep->getIndexInTex();   		llassert(index < mVolumeList.size());  		llassert(index < mNumVolumes); -		mVolumeList[index] = mVolumeList[--mNumVolumes] ; -		mVolumeList[index]->setIndexInTex(index) ; +		mVolumeList[index] = mVolumeList[--mNumVolumes]; +		mVolumeList[index]->setIndexInTex(index);  	}  	else   	{ -		mVolumeList.clear() ; -		mNumVolumes = 0 ; +		mVolumeList.clear(); +		mNumVolumes = 0;  	} -	mLastVolumeListUpdateTimer.reset() ; +	mLastVolumeListUpdateTimer.reset();  }  S32 LLViewerTexture::getNumVolumes() const  { -	return mNumVolumes ; +	return mNumVolumes;  }  void LLViewerTexture::reorganizeFaceList()  {  	static const F32 MAX_WAIT_TIME = 20.f; // seconds -	static const U32 MAX_EXTRA_BUFFER_SIZE = 4 ; +	static const U32 MAX_EXTRA_BUFFER_SIZE = 4;  	if(mLastFaceListUpdateTimer.getElapsedTimeF32() < MAX_WAIT_TIME)  	{ -		return ; +		return;  	}  	for (U32 i = 0; i < LLRender::NUM_TEXTURE_CHANNELS; ++i)  	{  		if(mNumFaces[i] + MAX_EXTRA_BUFFER_SIZE > mFaceList[i].size())  	{ -		return ; +		return;  	}  		mFaceList[i].erase(mFaceList[i].begin() + mNumFaces[i], mFaceList[i].end());  	} -	mLastFaceListUpdateTimer.reset() ; +	mLastFaceListUpdateTimer.reset();  }  void LLViewerTexture::reorganizeVolumeList()  {  	static const F32 MAX_WAIT_TIME = 20.f; // seconds -	static const U32 MAX_EXTRA_BUFFER_SIZE = 4 ; +	static const U32 MAX_EXTRA_BUFFER_SIZE = 4;  	if(mNumVolumes + MAX_EXTRA_BUFFER_SIZE > mVolumeList.size())  	{ -		return ; +		return;  	}  	if(mLastVolumeListUpdateTimer.getElapsedTimeF32() < MAX_WAIT_TIME)  	{ -		return ; +		return;  	} -	mLastVolumeListUpdateTimer.reset() ; +	mLastVolumeListUpdateTimer.reset();  	mVolumeList.erase(mVolumeList.begin() + mNumVolumes, mVolumeList.end());  } @@ -942,7 +942,7 @@ void LLViewerTexture::setCachedRawImage(S32 discard_level, LLImageRaw* imageraw)  BOOL LLViewerTexture::isLargeImage()  { -	return  (S32)mTexelsPerImage > LLViewerTexture::sMinLargeImageSize ; +	return  (S32)mTexelsPerImage > LLViewerTexture::sMinLargeImageSize;  }  //virtual  @@ -951,7 +951,7 @@ void LLViewerTexture::updateBindStatsForTester()  	LLTexturePipelineTester* tester = (LLTexturePipelineTester*)LLMetricPerformanceTesterBasic::getTester(sTesterName);  	if (tester)  	{ -		tester->updateTextureBindingStats(this) ; +		tester->updateTextureBindingStats(this);  	}  } @@ -967,19 +967,19 @@ LLViewerFetchedTexture::LLViewerFetchedTexture(const LLUUID& id, FTType f_type,  	: LLViewerTexture(id, usemipmaps),  	mTargetHost(host)  { -	init(TRUE) ; +	init(TRUE);  	mFTType = f_type;  	if (mFTType == FTT_HOST_BAKE)  	{  		mCanUseHTTP = false;  	} -	generateGLTexture() ; +	generateGLTexture();  }  LLViewerFetchedTexture::LLViewerFetchedTexture(const LLImageRaw* raw, FTType f_type, BOOL usemipmaps)  	: LLViewerTexture(raw, usemipmaps)  { -	init(TRUE) ; +	init(TRUE);  	mFTType = f_type;  } @@ -987,9 +987,9 @@ LLViewerFetchedTexture::LLViewerFetchedTexture(const std::string& url, FTType f_  	: LLViewerTexture(id, usemipmaps),  	mUrl(url)  { -	init(TRUE) ; +	init(TRUE);  	mFTType = f_type; -	generateGLTexture() ; +	generateGLTexture();  }  void LLViewerFetchedTexture::init(bool firstinit) @@ -1000,7 +1000,7 @@ void LLViewerFetchedTexture::init(bool firstinit)  	mRequestedDiscardLevel = -1;  	mRequestedDownloadPriority = 0.f;  	mFullyLoaded = FALSE; -	mCanUseHTTP = true ; +	mCanUseHTTP = true;  	mDesiredDiscardLevel = MAX_DISCARD_LEVEL + 1;  	mMinDesiredDiscardLevel = MAX_DISCARD_LEVEL + 1; @@ -1008,7 +1008,7 @@ void LLViewerFetchedTexture::init(bool firstinit)  	mKnownDrawWidth = 0;  	mKnownDrawHeight = 0; -	mKnownDrawSizeChanged = FALSE ; +	mKnownDrawSizeChanged = FALSE;  	if (firstinit)  	{ @@ -1021,7 +1021,7 @@ void LLViewerFetchedTexture::init(bool firstinit)  	mIsMissingAsset = FALSE;  	mLoadedCallbackDesiredDiscardLevel = S8_MAX; -	mPauseLoadedCallBacks = FALSE ; +	mPauseLoadedCallBacks = FALSE;  	mNeedsCreateTexture = FALSE; @@ -1036,21 +1036,21 @@ void LLViewerFetchedTexture::init(bool firstinit)  	mDownloadProgress = 0.f;  	mFetchDeltaTime = 999999.f;  	mRequestDeltaTime = 0.f; -	mForSculpt = FALSE ; -	mIsFetched = FALSE ; +	mForSculpt = FALSE; +	mIsFetched = FALSE;  	mInFastCacheList = FALSE; -	mCachedRawImage = NULL ; -	mCachedRawDiscardLevel = -1 ; -	mCachedRawImageReady = FALSE ; - -	mSavedRawImage = NULL ; -	mForceToSaveRawImage  = FALSE ; -	mSaveRawImage = FALSE ; -	mSavedRawDiscardLevel = -1 ; -	mDesiredSavedRawDiscardLevel = -1 ; -	mLastReferencedSavedRawImageTime = 0.0f ; -	mKeptSavedRawImageTime = 0.f ; +	mCachedRawImage = NULL; +	mCachedRawDiscardLevel = -1; +	mCachedRawImageReady = FALSE; + +	mSavedRawImage = NULL; +	mForceToSaveRawImage  = FALSE; +	mSaveRawImage = FALSE; +	mSavedRawDiscardLevel = -1; +	mDesiredSavedRawDiscardLevel = -1; +	mLastReferencedSavedRawImageTime = 0.0f; +	mKeptSavedRawImageTime = 0.f;  	mLastCallBackActiveTime = 0.f;  	mInDebug = FALSE; @@ -1073,7 +1073,7 @@ LLViewerFetchedTexture::~LLViewerFetchedTexture()  //virtual   S8 LLViewerFetchedTexture::getType() const  { -	return LLViewerTexture::FETCHED_TEXTURE ; +	return LLViewerTexture::FETCHED_TEXTURE;  }  FTType LLViewerFetchedTexture::getFTType() const @@ -1090,7 +1090,7 @@ void LLViewerFetchedTexture::cleanup()  		// We never finished loading the image.  Indicate failure.  		// Note: this allows mLoadedCallbackUserData to be cleaned up.  		entryp->mCallback( FALSE, this, NULL, NULL, 0, TRUE, entryp->mUserData ); -		entryp->removeTexture(this) ; +		entryp->removeTexture(this);  		delete entryp;  	}  	mLoadedCallbackList.clear(); @@ -1098,10 +1098,10 @@ void LLViewerFetchedTexture::cleanup()  	// Clean up image data  	destroyRawImage(); -	mCachedRawImage = NULL ; -	mCachedRawDiscardLevel = -1 ; -	mCachedRawImageReady = FALSE ; -	mSavedRawImage = NULL ; +	mCachedRawImage = NULL; +	mCachedRawDiscardLevel = -1; +	mCachedRawImageReady = FALSE; +	mSavedRawImage = NULL;  	mSavedRawDiscardLevel = -1;  } @@ -1114,7 +1114,7 @@ void LLViewerFetchedTexture::loadFromFastCache()  	}  	mInFastCacheList = FALSE; -	mRawImage = LLAppViewer::getTextureCache()->readFromFastCache(getID(), mRawDiscardLevel) ; +	mRawImage = LLAppViewer::getTextureCache()->readFromFastCache(getID(), mRawDiscardLevel);  	if(mRawImage.notNull())  	{  		mFullWidth = mRawImage->getWidth() << mRawDiscardLevel; @@ -1127,56 +1127,56 @@ void LLViewerFetchedTexture::loadFromFastCache()  			destroyRawImage();  			LL_WARNS() << "oversized, setting as missing" << LL_ENDL;  			setIsMissingAsset(); -			mRawDiscardLevel = INVALID_DISCARD_LEVEL ; +			mRawDiscardLevel = INVALID_DISCARD_LEVEL;  		}  		else  		{  			mRequestedDiscardLevel = mDesiredDiscardLevel + 1;  			mIsRawImageValid = TRUE;			 -			addToCreateTexture() ; +			addToCreateTexture();  		}  	}  }  void LLViewerFetchedTexture::setForSculpt()  { -	static const S32 MAX_INTERVAL = 8 ; //frames +	static const S32 MAX_INTERVAL = 8; //frames -	mForSculpt = TRUE ; +	mForSculpt = TRUE;  	if(isForSculptOnly() && hasGLTexture() && !getBoundRecently())  	{ -		destroyGLTexture() ; //sculpt image does not need gl texture. +		destroyGLTexture(); //sculpt image does not need gl texture.  		mTextureState = ACTIVE;  	} -	checkCachedRawSculptImage() ; -	setMaxVirtualSizeResetInterval(MAX_INTERVAL) ; +	checkCachedRawSculptImage(); +	setMaxVirtualSizeResetInterval(MAX_INTERVAL);  }  BOOL LLViewerFetchedTexture::isForSculptOnly() const  { -	return mForSculpt && !mNeedsGLTexture ; +	return mForSculpt && !mNeedsGLTexture;  }  BOOL LLViewerFetchedTexture::isDeleted()    {  -	return mTextureState == DELETED ;  +	return mTextureState == DELETED;   }  BOOL LLViewerFetchedTexture::isInactive()    {  -	return mTextureState == INACTIVE ;  +	return mTextureState == INACTIVE;   }  BOOL LLViewerFetchedTexture::isDeletionCandidate()    {  -	return mTextureState == DELETION_CANDIDATE ;  +	return mTextureState == DELETION_CANDIDATE;   }  void LLViewerFetchedTexture::setDeletionCandidate()    {   	if(mGLTexturep.notNull() && mGLTexturep->getTexName() && (mTextureState == INACTIVE))  	{ -		mTextureState = DELETION_CANDIDATE ;		 +		mTextureState = DELETION_CANDIDATE;		  	}  } @@ -1185,7 +1185,7 @@ void LLViewerFetchedTexture::setInactive()  {  	if(mTextureState == ACTIVE && mGLTexturep.notNull() && mGLTexturep->getTexName() && !mGLTexturep->getBoundRecently())  	{ -		mTextureState = INACTIVE ;  +		mTextureState = INACTIVE;   	}  } @@ -1229,57 +1229,57 @@ void LLViewerFetchedTexture::destroyTexture()  {  	//if(LLImageGL::sGlobalTextureMemoryInBytes < sMaxDesiredTextureMemInBytes)//not ready to release unused memory.  	//{ -	//	return ; +	//	return;  	//}  	if (mNeedsCreateTexture)//return if in the process of generating a new texture.  	{ -		return ; +		return;  	}  	//LL_DEBUGS("Avatar") << mID << LL_ENDL; -	destroyGLTexture() ; -	mFullyLoaded = FALSE ; +	destroyGLTexture(); +	mFullyLoaded = FALSE;  }  void LLViewerFetchedTexture::addToCreateTexture()  { -	bool force_update = false ; +	bool force_update = false;  	if (getComponents() != mRawImage->getComponents())  	{  		// We've changed the number of components, so we need to move any  		// objects using this pool to a different pool.  		mComponents = mRawImage->getComponents(); -		mGLTexturep->setComponents(mComponents) ; -		force_update = true ; +		mGLTexturep->setComponents(mComponents); +		force_update = true;  		for (U32 j = 0; j < LLRender::NUM_TEXTURE_CHANNELS; ++j)  		{  			llassert(mNumFaces[j] <= mFaceList[j].size()); -			for(U32 i = 0 ; i < mNumFaces[j]; i++) +			for(U32 i = 0; i < mNumFaces[j]; i++)  		{ -				mFaceList[j][i]->dirtyTexture() ; +				mFaceList[j][i]->dirtyTexture();  			}  		}  		//discard the cached raw image and the saved raw image -		mCachedRawImageReady = FALSE ; -		mCachedRawDiscardLevel = -1 ; -		mCachedRawImage = NULL ; -		mSavedRawDiscardLevel = -1 ; -		mSavedRawImage = NULL ; +		mCachedRawImageReady = FALSE; +		mCachedRawDiscardLevel = -1; +		mCachedRawImage = NULL; +		mSavedRawDiscardLevel = -1; +		mSavedRawImage = NULL;  	}	  	if(isForSculptOnly())  	{  		//just update some variables, not to create a real GL texture. -		createGLTexture(mRawDiscardLevel, mRawImage, 0, FALSE) ; -		mNeedsCreateTexture = FALSE ; +		createGLTexture(mRawDiscardLevel, mRawImage, 0, FALSE); +		mNeedsCreateTexture = FALSE;  		destroyRawImage();  	}  	else if(!force_update && getDiscardLevel() > -1 && getDiscardLevel() <= mRawDiscardLevel)  	{ -		mNeedsCreateTexture = FALSE ; +		mNeedsCreateTexture = FALSE;  		destroyRawImage();  	}  	else @@ -1299,11 +1299,11 @@ void LLViewerFetchedTexture::addToCreateTexture()  			//scale it down to size >= LLViewerTexture::sMinLargeImageSize  			if(w * h > LLViewerTexture::sMinLargeImageSize)  			{ -				S32 d_level = llmin(mRequestedDiscardLevel, (S32)mDesiredDiscardLevel) - mRawDiscardLevel ; +				S32 d_level = llmin(mRequestedDiscardLevel, (S32)mDesiredDiscardLevel) - mRawDiscardLevel;  				if(d_level > 0)  				{ -					S32 i = 0 ; +					S32 i = 0;  					while((d_level > 0) && ((w >> i) * (h >> i) > LLViewerTexture::sMinLargeImageSize))  					{  						i++; @@ -1311,14 +1311,14 @@ void LLViewerFetchedTexture::addToCreateTexture()  					}  					if(i > 0)  					{ -						mRawDiscardLevel += i ; +						mRawDiscardLevel += i;  						if(mRawDiscardLevel >= getDiscardLevel() && getDiscardLevel() > 0)  						{ -							mNeedsCreateTexture = FALSE ; +							mNeedsCreateTexture = FALSE;  							destroyRawImage(); -							return ; +							return;  						} -						mRawImage->scale(w >> i, h >> i) ;					 +						mRawImage->scale(w >> i, h >> i);					  					}  				}  			} @@ -1327,7 +1327,7 @@ void LLViewerFetchedTexture::addToCreateTexture()  		mNeedsCreateTexture = TRUE;  		gTextureList.mCreateTextureList.insert(this);  	}	 -	return ; +	return;  }  // ONLY called from LLViewerTextureList @@ -1405,7 +1405,7 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/)  		res = mGLTexturep->createGLTexture(mRawDiscardLevel, mRawImage, usename, TRUE, mBoostLevel); -	setActive() ; +	setActive();  	if (!needsToSaveRawImage())  	{ @@ -1421,11 +1421,11 @@ void LLViewerFetchedTexture::setKnownDrawSize(S32 width, S32 height)  {  	if(mKnownDrawWidth < width || mKnownDrawHeight < height)  	{ -		mKnownDrawWidth = llmax(mKnownDrawWidth, width) ; -		mKnownDrawHeight = llmax(mKnownDrawHeight, height) ; +		mKnownDrawWidth = llmax(mKnownDrawWidth, width); +		mKnownDrawHeight = llmax(mKnownDrawHeight, height); -		mKnownDrawSizeChanged = TRUE ; -		mFullyLoaded = FALSE ; +		mKnownDrawSizeChanged = TRUE; +		mFullyLoaded = FALSE;  	}  	addTextureStats((F32)(mKnownDrawWidth * mKnownDrawHeight));  } @@ -1437,13 +1437,13 @@ void LLViewerFetchedTexture::processTextureStats()  	{		  		if(mDesiredDiscardLevel > mMinDesiredDiscardLevel)//need to load more  		{ -			mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel) ; -			mFullyLoaded = FALSE ; +			mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel); +			mFullyLoaded = FALSE;  		}  	}  	else  	{ -		updateVirtualSize() ; +		updateVirtualSize();  		static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes"); @@ -1453,7 +1453,7 @@ void LLViewerFetchedTexture::processTextureStats()  		}  		else if(!mFullWidth || !mFullHeight)  		{ -			mDesiredDiscardLevel = 	llmin(getMaxDiscardLevel(), (S32)mLoadedCallbackDesiredDiscardLevel) ; +			mDesiredDiscardLevel = 	llmin(getMaxDiscardLevel(), (S32)mLoadedCallbackDesiredDiscardLevel);  		}  		else  		{	 @@ -1471,36 +1471,36 @@ void LLViewerFetchedTexture::processTextureStats()  			else if(mKnownDrawSizeChanged)//known draw size is set  			{			  				mDesiredDiscardLevel = (S8)llmin(log((F32)mFullWidth / mKnownDrawWidth) / log_2,  -													 log((F32)mFullHeight / mKnownDrawHeight) / log_2) ; -				mDesiredDiscardLevel = 	llclamp(mDesiredDiscardLevel, (S8)0, (S8)getMaxDiscardLevel()) ; -				mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel) ; +													 log((F32)mFullHeight / mKnownDrawHeight) / log_2); +				mDesiredDiscardLevel = 	llclamp(mDesiredDiscardLevel, (S8)0, (S8)getMaxDiscardLevel()); +				mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel);  			} -			mKnownDrawSizeChanged = FALSE ; +			mKnownDrawSizeChanged = FALSE;  			if(getDiscardLevel() >= 0 && (getDiscardLevel() <= mDesiredDiscardLevel))  			{ -				mFullyLoaded = TRUE ; +				mFullyLoaded = TRUE;  			}  		}  	}  	if(mForceToSaveRawImage && mDesiredSavedRawDiscardLevel >= 0) //force to refetch the texture.  	{ -		mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S8)mDesiredSavedRawDiscardLevel) ; +		mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S8)mDesiredSavedRawDiscardLevel);  		if(getDiscardLevel() < 0 || getDiscardLevel() > mDesiredDiscardLevel)  		{ -			mFullyLoaded = FALSE ; +			mFullyLoaded = FALSE;  		}  	}  } -const F32 MAX_PRIORITY_PIXEL                         = 999.f ;     //pixel area -const F32 PRIORITY_BOOST_LEVEL_FACTOR                = 1000.f ;    //boost level -const F32 PRIORITY_DELTA_DISCARD_LEVEL_FACTOR        = 100000.f ;  //delta discard -const S32 MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY       = 4 ; -const F32 PRIORITY_ADDITIONAL_FACTOR                 = 1000000.f ; //additional  -const S32 MAX_ADDITIONAL_LEVEL_FOR_PRIORITY          = 8 ; -const F32 PRIORITY_BOOST_HIGH_FACTOR                 = 10000000.f ;//boost high +const F32 MAX_PRIORITY_PIXEL                         = 999.f;     //pixel area +const F32 PRIORITY_BOOST_LEVEL_FACTOR                = 1000.f;    //boost level +const F32 PRIORITY_DELTA_DISCARD_LEVEL_FACTOR        = 100000.f;  //delta discard +const S32 MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY       = 4; +const F32 PRIORITY_ADDITIONAL_FACTOR                 = 1000000.f; //additional  +const S32 MAX_ADDITIONAL_LEVEL_FOR_PRIORITY          = 8; +const F32 PRIORITY_BOOST_HIGH_FACTOR                 = 10000000.f;//boost high  F32 LLViewerFetchedTexture::calcDecodePriority()  {  #ifndef LL_RELEASE_FOR_DOWNLOAD @@ -1516,7 +1516,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()  	}  	if(mFullyLoaded && !mForceToSaveRawImage)//already loaded for static texture  	{ -		return -1.0f ; //alreay fetched +		return -1.0f; //alreay fetched  	}  	S32 cur_discard = getCurrentDiscardLevelForFetching(); @@ -1531,7 +1531,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()  	}  	else if(mDesiredDiscardLevel >= cur_discard && cur_discard > -1)  	{ -		priority = -2.0f ; +		priority = -2.0f;  	}  	else if(mCachedRawDiscardLevel > -1 && mDesiredDiscardLevel >= mCachedRawDiscardLevel)  	{ @@ -1568,7 +1568,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()  		S32 ddiscard = MAX_DISCARD_LEVEL - (S32)desired;  		ddiscard = llclamp(ddiscard, 0, MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY);  		priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR; -		setAdditionalDecodePriority(0.1f) ;//boost the textures without any data so far. +		setAdditionalDecodePriority(0.1f);//boost the textures without any data so far.  	}  	else if ((mMinDiscardLevel > 0) && (cur_discard <= mMinDiscardLevel))  	{ @@ -1603,13 +1603,13 @@ F32 LLViewerFetchedTexture::calcDecodePriority()  	// [10,000,000] + [1,000,000-9,000,000]  + [100,000-500,000]   + [1-20,000]  + [0-999]  	if (priority > 0.0f)  	{ -		bool large_enough = mCachedRawImageReady && ((S32)mTexelsPerImage > sMinLargeImageSize) ; +		bool large_enough = mCachedRawImageReady && ((S32)mTexelsPerImage > sMinLargeImageSize);  		if(large_enough)  		{  			//Note:   			//to give small, low-priority textures some chance to be fetched,   			//cut the priority in half if the texture size is larger than 256 * 256 and has a 64*64 ready. -			priority *= 0.5f ;  +			priority *= 0.5f;   		}  		pixel_priority = llclamp(pixel_priority, 0.0f, MAX_PRIORITY_PIXEL);  @@ -1628,7 +1628,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()  				//Note:   				//to give small, low-priority textures some chance to be fetched,   				//if high priority texture has a 64*64 ready, lower its fetching priority. -				setAdditionalDecodePriority(0.5f) ; +				setAdditionalDecodePriority(0.5f);  			}  			else  			{ @@ -1645,7 +1645,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()  				//Note:   				//to give small, low-priority textures some chance to be fetched,   				//cut the additional priority to a quarter if the texture size is larger than 256 * 256 and has a 64*64 ready. -				additional *= 0.25f ; +				additional *= 0.25f;  			}  			priority += additional;  		} @@ -1660,9 +1660,9 @@ F32 LLViewerFetchedTexture::maxDecodePriority()  		PRIORITY_ADDITIONAL_FACTOR * (MAX_ADDITIONAL_LEVEL_FOR_PRIORITY + 1) +             //additional (view dependent factors)  		PRIORITY_DELTA_DISCARD_LEVEL_FACTOR * (MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY + 1) + //delta discard  		PRIORITY_BOOST_LEVEL_FACTOR * (BOOST_MAX_LEVEL - 1) +                              //boost level -		MAX_PRIORITY_PIXEL + 1.0f ;                                                        //pixel area. +		MAX_PRIORITY_PIXEL + 1.0f;                                                        //pixel area. -	return max_priority ; +	return max_priority;  }  //============================================================================ @@ -1673,7 +1673,7 @@ void LLViewerFetchedTexture::setDecodePriority(F32 priority)  	if(mDecodePriority < F_ALMOST_ZERO)  	{ -		mStopFetchingTimer.reset() ; +		mStopFetchingTimer.reset();  	}  } @@ -1690,16 +1690,16 @@ void LLViewerFetchedTexture::updateVirtualSize()  {	  	if(!mMaxVirtualSizeResetCounter)  	{ -		addTextureStats(0.f, FALSE) ;//reset +		addTextureStats(0.f, FALSE);//reset  	}  	for (U32 ch = 0; ch < LLRender::NUM_TEXTURE_CHANNELS; ++ch)  	{				  		llassert(mNumFaces[ch] <= mFaceList[ch].size()); -		for(U32 i = 0 ; i < mNumFaces[ch]; i++) +		for(U32 i = 0; i < mNumFaces[ch]; i++)  		{				 -			LLFace* facep = mFaceList[ch][i] ; +			LLFace* facep = mFaceList[ch][i];  		if( facep )  		{  			LLDrawable* drawable = facep->getDrawable(); @@ -1712,8 +1712,8 @@ void LLViewerFetchedTexture::updateVirtualSize()  					{  						setBoostLevel(LLViewerTexture::BOOST_SELECTED);  					} -					addTextureStats(facep->getVirtualSize()) ; -					setAdditionalDecodePriority(facep->getImportanceToCamera()) ; +					addTextureStats(facep->getVirtualSize()); +					setAdditionalDecodePriority(facep->getImportanceToCamera());  				}  			}  		} @@ -1732,26 +1732,26 @@ void LLViewerFetchedTexture::updateVirtualSize()  	{  		mMaxVirtualSizeResetCounter--;  	} -	reorganizeFaceList() ; +	reorganizeFaceList();  	reorganizeVolumeList();  }  S32 LLViewerFetchedTexture::getCurrentDiscardLevelForFetching()  { -	S32 current_discard = getDiscardLevel() ; +	S32 current_discard = getDiscardLevel();  	if(mForceToSaveRawImage)  	{  		if(mSavedRawDiscardLevel < 0 || current_discard < 0)  		{ -			current_discard = -1 ; +			current_discard = -1;  		}  		else  		{ -			current_discard = llmax(current_discard, mSavedRawDiscardLevel) ; +			current_discard = llmax(current_discard, mSavedRawDiscardLevel);  		}		  	} -	return current_discard ; +	return current_discard;  }  bool LLViewerFetchedTexture::setDebugFetching(S32 debug_level) @@ -1782,7 +1782,7 @@ bool LLViewerFetchedTexture::updateFetch()  	static LLCachedControl<S32>  sCameraMotionBoost(gSavedSettings,"TextureCameraMotionBoost");  	if(textures_decode_disabled)  	{ -		return false ; +		return false;  	}  	mFetchState = 0; @@ -1817,7 +1817,7 @@ bool LLViewerFetchedTexture::updateFetch()  		return false;  	} -	S32 current_discard = getCurrentDiscardLevelForFetching() ; +	S32 current_discard = getCurrentDiscardLevelForFetching();  	S32 desired_discard = getDesiredDiscardLevel();  	F32 decode_priority = getDecodePriority();  	decode_priority = llclamp(decode_priority, 0.0f, maxDecodePriority()); @@ -1835,7 +1835,7 @@ bool LLViewerFetchedTexture::updateFetch()  		if (finished)  		{  			mIsFetching = FALSE; -			mLastPacketTimer.reset() ; +			mLastPacketTimer.reset();  		}  		else  		{ @@ -1849,8 +1849,8 @@ bool LLViewerFetchedTexture::updateFetch()  			LLTexturePipelineTester* tester = (LLTexturePipelineTester*)LLMetricPerformanceTesterBasic::getTester(sTesterName);  			if (tester)  			{ -				mIsFetched = TRUE ; -				tester->updateTextureLoadingStats(this, mRawImage, LLAppViewer::getTextureFetch()->isFromLocalCache(mID)) ; +				mIsFetched = TRUE; +				tester->updateTextureLoadingStats(this, mRawImage, LLAppViewer::getTextureFetch()->isFromLocalCache(mID));  			}  			mRawDiscardLevel = fetch_discard;  			if ((mRawImage->getDataSize() > 0 && mRawDiscardLevel >= 0) && @@ -1866,17 +1866,17 @@ bool LLViewerFetchedTexture::updateFetch()  					destroyRawImage();  					LL_WARNS() << "oversize, setting as missing" << LL_ENDL;  					setIsMissingAsset(); -					mRawDiscardLevel = INVALID_DISCARD_LEVEL ; -					mIsFetching = FALSE ; +					mRawDiscardLevel = INVALID_DISCARD_LEVEL; +					mIsFetching = FALSE;  					mLastPacketTimer.reset();  				}  				else  				{  					mIsRawImageValid = TRUE;			 -					addToCreateTexture() ; +					addToCreateTexture();  				} -				return TRUE ; +				return TRUE;  			}  			else  			{ @@ -1924,10 +1924,10 @@ bool LLViewerFetchedTexture::updateFetch()  // 				LL_INFOS() << "Calling updateRequestPriority() with decode_priority = 0.0f" << LL_ENDL;  // 				calcDecodePriority();  // 			} -			static const F32 MAX_HOLD_TIME = 5.0f ; //seconds to wait before canceling fecthing if decode_priority is 0.f. +			static const F32 MAX_HOLD_TIME = 5.0f; //seconds to wait before canceling fecthing if decode_priority is 0.f.  			if(decode_priority > 0.0f || mStopFetchingTimer.getElapsedTimeF32() > MAX_HOLD_TIME)  			{ -				mStopFetchingTimer.reset() ; +				mStopFetchingTimer.reset();  				LLAppViewer::getTextureFetch()->updateRequestPriority(mID, decode_priority);  			}  		} @@ -1953,7 +1953,7 @@ bool LLViewerFetchedTexture::updateFetch()  	else if(mCachedRawImage.notNull() && (current_discard < 0 || current_discard > mCachedRawDiscardLevel))  	{  		make_request = false; -		switchToCachedImage() ; //use the cached raw data first +		switchToCachedImage(); //use the cached raw data first  	}  	//else if (!isJustBound() && mCachedRawImageReady)  	//{ @@ -1965,7 +1965,7 @@ bool LLViewerFetchedTexture::updateFetch()  		// Load the texture progressively: we try not to rush to the desired discard too fast.  		// If the camera is not moving, we do not tweak the discard level notch by notch but go to the desired discard with larger boosted steps  		// This mitigates the "textures stay blurry" problem when loading while not killing the texture memory while moving around -		S32 delta_level = (mBoostLevel > LLGLTexture::BOOST_NONE) ? 2 : 1 ;  +		S32 delta_level = (mBoostLevel > LLGLTexture::BOOST_NONE) ? 2 : 1;   		if (current_discard < 0)  		{  			desired_discard = llmax(desired_discard, getMaxDiscardLevel() - delta_level); @@ -2051,7 +2051,7 @@ void LLViewerFetchedTexture::clearFetchedResults()  {  	if(mNeedsCreateTexture || mIsFetching)  	{ -		return ; +		return;  	}  	cleanup(); @@ -2068,7 +2068,7 @@ void LLViewerFetchedTexture::forceToDeleteRequest()  	if (mHasFetcher)  	{  		mHasFetcher = FALSE; -		mIsFetching = FALSE ; +		mIsFetching = FALSE;  	}  	resetTextureStats(); @@ -2116,19 +2116,19 @@ void LLViewerFetchedTexture::setLoadedCallback( loaded_callback_func loaded_call  	}  	else  	{ -		mLoadedCallbackDesiredDiscardLevel = llmin(mLoadedCallbackDesiredDiscardLevel, (S8)discard_level) ; +		mLoadedCallbackDesiredDiscardLevel = llmin(mLoadedCallbackDesiredDiscardLevel, (S8)discard_level);  	}  	if(mPauseLoadedCallBacks)  	{  		if(!pause)  		{ -			unpauseLoadedCallbacks(src_callback_list) ; +			unpauseLoadedCallbacks(src_callback_list);  		}  	}  	else if(pause)  	{ -		pauseLoadedCallbacks(src_callback_list) ; +		pauseLoadedCallbacks(src_callback_list);  	}  	LLLoadedCallbackEntry* entryp = new LLLoadedCallbackEntry(loaded_callback, discard_level, keep_imageraw, userdata, src_callback_list, this, pause); @@ -2137,21 +2137,21 @@ void LLViewerFetchedTexture::setLoadedCallback( loaded_callback_func loaded_call  	mNeedsAux |= needs_aux;  	if(keep_imageraw)  	{ -		mSaveRawImage = TRUE ; +		mSaveRawImage = TRUE;  	}  	if (mNeedsAux && mAuxRawImage.isNull() && getDiscardLevel() >= 0)  	{  		// We need aux data, but we've already loaded the image, and it didn't have any  		LL_WARNS() << "No aux data available for callback for image:" << getID() << LL_ENDL;  	} -	mLastCallBackActiveTime = sCurrentTime ; +	mLastCallBackActiveTime = sCurrentTime;  }  void LLViewerFetchedTexture::clearCallbackEntryList()  {  	if(mLoadedCallbackList.empty())  	{ -		return ; +		return;  	}  	for(callback_list_t::iterator iter = mLoadedCallbackList.begin(); @@ -2162,29 +2162,29 @@ void LLViewerFetchedTexture::clearCallbackEntryList()  		// We never finished loading the image.  Indicate failure.  		// Note: this allows mLoadedCallbackUserData to be cleaned up.  		entryp->mCallback(FALSE, this, NULL, NULL, 0, TRUE, entryp->mUserData); -		iter = mLoadedCallbackList.erase(iter) ; +		iter = mLoadedCallbackList.erase(iter);  		delete entryp;  	}  	gTextureList.mCallbackList.erase(this); -	mLoadedCallbackDesiredDiscardLevel = S8_MAX ; +	mLoadedCallbackDesiredDiscardLevel = S8_MAX;  	if(needsToSaveRawImage())  	{ -		destroySavedRawImage() ; +		destroySavedRawImage();  	} -	return ; +	return;  }  void LLViewerFetchedTexture::deleteCallbackEntry(const LLLoadedCallbackEntry::source_callback_list_t* callback_list)  {  	if(mLoadedCallbackList.empty() || !callback_list)  	{ -		return ; +		return;  	} -	S32 desired_discard = S8_MAX ; -	S32 desired_raw_discard = INVALID_DISCARD_LEVEL ; +	S32 desired_discard = S8_MAX; +	S32 desired_raw_discard = INVALID_DISCARD_LEVEL;  	for(callback_list_t::iterator iter = mLoadedCallbackList.begin();  			iter != mLoadedCallbackList.end(); )  	{ @@ -2194,17 +2194,17 @@ void LLViewerFetchedTexture::deleteCallbackEntry(const LLLoadedCallbackEntry::so  			// We never finished loading the image.  Indicate failure.  			// Note: this allows mLoadedCallbackUserData to be cleaned up.  			entryp->mCallback(FALSE, this, NULL, NULL, 0, TRUE, entryp->mUserData); -			iter = mLoadedCallbackList.erase(iter) ; +			iter = mLoadedCallbackList.erase(iter);  			delete entryp;  		}  		else  		{  			++iter; -			desired_discard = llmin(desired_discard, entryp->mDesiredDiscard) ; +			desired_discard = llmin(desired_discard, entryp->mDesiredDiscard);  			if(entryp->mNeedsImageRaw)  			{ -				desired_raw_discard = llmin(desired_raw_discard, entryp->mDesiredDiscard) ; +				desired_raw_discard = llmin(desired_raw_discard, entryp->mDesiredDiscard);  			}  		}  	} @@ -2217,18 +2217,18 @@ void LLViewerFetchedTexture::deleteCallbackEntry(const LLLoadedCallbackEntry::so  		if(needsToSaveRawImage())  		{ -			destroySavedRawImage() ; +			destroySavedRawImage();  		}  	}  	else if(needsToSaveRawImage() && mBoostLevel != LLGLTexture::BOOST_PREVIEW)  	{  		if(desired_raw_discard != INVALID_DISCARD_LEVEL)  		{ -			mDesiredSavedRawDiscardLevel = desired_raw_discard ; +			mDesiredSavedRawDiscardLevel = desired_raw_discard;  		}  		else  		{ -			destroySavedRawImage() ; +			destroySavedRawImage();  		}  	}  } @@ -2237,29 +2237,29 @@ void LLViewerFetchedTexture::unpauseLoadedCallbacks(const LLLoadedCallbackEntry:  {  	if(!callback_list)  { -		mPauseLoadedCallBacks = FALSE ; -		return ; +		mPauseLoadedCallBacks = FALSE; +		return;  	} -	BOOL need_raw = FALSE ; +	BOOL need_raw = FALSE;  	for(callback_list_t::iterator iter = mLoadedCallbackList.begin();  			iter != mLoadedCallbackList.end(); )  	{  		LLLoadedCallbackEntry *entryp = *iter++;  		if(entryp->mSourceCallbackList == callback_list)  		{ -			entryp->mPaused = FALSE ; +			entryp->mPaused = FALSE;  			if(entryp->mNeedsImageRaw)  			{ -				need_raw = TRUE ; +				need_raw = TRUE;  			}  		}  	} -	mPauseLoadedCallBacks = FALSE ; -	mLastCallBackActiveTime = sCurrentTime ; +	mPauseLoadedCallBacks = FALSE; +	mLastCallBackActiveTime = sCurrentTime;  	if(need_raw)  	{ -		mSaveRawImage = TRUE ; +		mSaveRawImage = TRUE;  	}  } @@ -2267,10 +2267,10 @@ void LLViewerFetchedTexture::pauseLoadedCallbacks(const LLLoadedCallbackEntry::s  {  	if(!callback_list)  { -		return ; +		return;  	} -	bool paused = true ; +	bool paused = true;  	for(callback_list_t::iterator iter = mLoadedCallbackList.begin();  			iter != mLoadedCallbackList.end(); ) @@ -2278,25 +2278,25 @@ void LLViewerFetchedTexture::pauseLoadedCallbacks(const LLLoadedCallbackEntry::s  		LLLoadedCallbackEntry *entryp = *iter++;  		if(entryp->mSourceCallbackList == callback_list)  		{ -			entryp->mPaused = TRUE ; +			entryp->mPaused = TRUE;  		}  		else if(!entryp->mPaused)  		{ -			paused = false ; +			paused = false;  		}  	}  	if(paused)  	{ -		mPauseLoadedCallBacks = TRUE ;//when set, loaded callback is paused. +		mPauseLoadedCallBacks = TRUE;//when set, loaded callback is paused.  		resetTextureStats(); -		mSaveRawImage = FALSE ; +		mSaveRawImage = FALSE;  	}  }  bool LLViewerFetchedTexture::doLoadedCallbacks()  { -	static const F32 MAX_INACTIVE_TIME = 900.f ; //seconds +	static const F32 MAX_INACTIVE_TIME = 900.f; //seconds  	if (mNeedsCreateTexture)  	{ @@ -2309,8 +2309,8 @@ bool LLViewerFetchedTexture::doLoadedCallbacks()  	}	  	if(sCurrentTime - mLastCallBackActiveTime > MAX_INACTIVE_TIME && !mIsFetching)  	{ -		clearCallbackEntryList() ; //remove all callbacks. -		return false ; +		clearCallbackEntryList(); //remove all callbacks. +		return false;  	}  	bool res = false; @@ -2330,7 +2330,7 @@ bool LLViewerFetchedTexture::doLoadedCallbacks()  		// Remove ourself from the global list of textures with callbacks  		gTextureList.mCallbackList.erase(this); -		return false ; +		return false;  	}	  	S32 gl_discard = getDiscardLevel(); @@ -2451,7 +2451,7 @@ bool LLViewerFetchedTexture::doLoadedCallbacks()  				// to satisfy the interested party, then this is the last time that  				// we're going to call them. -				mLastCallBackActiveTime = sCurrentTime ; +				mLastCallBackActiveTime = sCurrentTime;  				//llassert_always(mRawImage.notNull());  				if(mNeedsAux && mAuxRawImage.isNull())  				{ @@ -2487,7 +2487,7 @@ bool LLViewerFetchedTexture::doLoadedCallbacks()  			LLLoadedCallbackEntry *entryp = *curiter;  			if (!entryp->mNeedsImageRaw && (entryp->mLastUsedDiscard > gl_discard))  			{ -				mLastCallBackActiveTime = sCurrentTime ; +				mLastCallBackActiveTime = sCurrentTime;  				BOOL final = gl_discard <= entryp->mDesiredDiscard ? TRUE : FALSE;  				entryp->mLastUsedDiscard = gl_discard;  				entryp->mCallback(TRUE, this, NULL, NULL, gl_discard, final, entryp->mUserData); @@ -2521,66 +2521,66 @@ void LLViewerFetchedTexture::forceImmediateUpdate()  	//only immediately update a deleted texture which is now being re-used.  	if(!isDeleted())  	{ -		return ; +		return;  	}  	//if already called forceImmediateUpdate()  	if(mInImageList && mDecodePriority == LLViewerFetchedTexture::maxDecodePriority())  	{ -		return ; +		return;  	} -	gTextureList.forceImmediateUpdate(this) ; -	return ; +	gTextureList.forceImmediateUpdate(this); +	return;  }  LLImageRaw* LLViewerFetchedTexture::reloadRawImage(S8 discard_level)  { -	llassert_always(mGLTexturep.notNull()) ; +	llassert_always(mGLTexturep.notNull());  	llassert_always(discard_level >= 0);  	llassert_always(mComponents > 0);  	if (mRawImage.notNull())  	{  		//mRawImage is in use by somebody else, do not delete it. -		return NULL ; +		return NULL;  	}  	if(mSavedRawDiscardLevel >= 0 && mSavedRawDiscardLevel <= discard_level)  	{  		if(mSavedRawDiscardLevel != discard_level)  		{ -			mRawImage = new LLImageRaw(getWidth(discard_level), getHeight(discard_level), getComponents()) ; -			mRawImage->copy(getSavedRawImage()) ; +			mRawImage = new LLImageRaw(getWidth(discard_level), getHeight(discard_level), getComponents()); +			mRawImage->copy(getSavedRawImage());  		}  		else  		{ -			mRawImage = getSavedRawImage() ; +			mRawImage = getSavedRawImage();  		} -		mRawDiscardLevel = discard_level ; +		mRawDiscardLevel = discard_level;  	}  	else  	{		  		//force to fetch raw image again if cached raw image is not good enough.  		if(mCachedRawDiscardLevel > discard_level)  		{ -			mRawImage = mCachedRawImage ; +			mRawImage = mCachedRawImage;  			mRawDiscardLevel = mCachedRawDiscardLevel;  		}  		else //cached raw image is good enough, copy it.  		{  			if(mCachedRawDiscardLevel != discard_level)  			{ -				mRawImage = new LLImageRaw(getWidth(discard_level), getHeight(discard_level), getComponents()) ; -				mRawImage->copy(mCachedRawImage) ; +				mRawImage = new LLImageRaw(getWidth(discard_level), getHeight(discard_level), getComponents()); +				mRawImage->copy(mCachedRawImage);  			}  			else  			{ -				mRawImage = mCachedRawImage ; +				mRawImage = mCachedRawImage;  			} -			mRawDiscardLevel = discard_level ; +			mRawDiscardLevel = discard_level;  		}  	} -	mIsRawImageValid = TRUE ; +	mIsRawImageValid = TRUE;  	sRawCount++;	  	return mRawImage; @@ -2588,7 +2588,7 @@ LLImageRaw* LLViewerFetchedTexture::reloadRawImage(S8 discard_level)  bool LLViewerFetchedTexture::needsToSaveRawImage()  { -	return mForceToSaveRawImage || mSaveRawImage ; +	return mForceToSaveRawImage || mSaveRawImage;  }  void LLViewerFetchedTexture::destroyRawImage() @@ -2607,9 +2607,9 @@ void LLViewerFetchedTexture::destroyRawImage()  		{  			if(needsToSaveRawImage())  			{ -				saveRawImage() ; +				saveRawImage();  			}		 -			setCachedRawImage() ; +			setCachedRawImage();  		}  		mRawImage = NULL; @@ -2625,19 +2625,19 @@ void LLViewerFetchedTexture::switchToCachedImage()  {  	if(mCachedRawImage.notNull())  	{ -		mRawImage = mCachedRawImage ; +		mRawImage = mCachedRawImage;  		if (getComponents() != mRawImage->getComponents())  		{  			// We've changed the number of components, so we need to move any  			// objects using this pool to a different pool.  			mComponents = mRawImage->getComponents(); -			mGLTexturep->setComponents(mComponents) ; +			mGLTexturep->setComponents(mComponents);  			gTextureList.dirtyImage(this);  		}			  		mIsRawImageValid = TRUE; -		mRawDiscardLevel = mCachedRawDiscardLevel ; +		mRawDiscardLevel = mCachedRawDiscardLevel;  		gTextureList.mCreateTextureList.insert(this);  		mNeedsCreateTexture = TRUE;		  	} @@ -2649,9 +2649,9 @@ void LLViewerFetchedTexture::setCachedRawImage(S32 discard_level, LLImageRaw* im  {  	if(imageraw != mRawImage.get())  	{ -		mCachedRawImage = imageraw ; -		mCachedRawDiscardLevel = discard_level ; -		mCachedRawImageReady = TRUE ; +		mCachedRawImage = imageraw; +		mCachedRawDiscardLevel = discard_level; +		mCachedRawImageReady = TRUE;  	}  } @@ -2659,56 +2659,56 @@ void LLViewerFetchedTexture::setCachedRawImage()  {	  	if(mRawImage == mCachedRawImage)  	{ -		return ; +		return;  	}  	if(!mIsRawImageValid)  	{ -		return ; +		return;  	}  	if(mCachedRawImageReady)  	{ -		return ; +		return;  	}  	if(mCachedRawDiscardLevel < 0 || mCachedRawDiscardLevel > mRawDiscardLevel)  	{ -		S32 i = 0 ; -		S32 w = mRawImage->getWidth() ; -		S32 h = mRawImage->getHeight() ; +		S32 i = 0; +		S32 w = mRawImage->getWidth(); +		S32 h = mRawImage->getHeight(); -		S32 max_size = MAX_CACHED_RAW_IMAGE_AREA ; +		S32 max_size = MAX_CACHED_RAW_IMAGE_AREA;  		if(LLGLTexture::BOOST_TERRAIN == mBoostLevel)  		{ -			max_size = MAX_CACHED_RAW_TERRAIN_IMAGE_AREA ; +			max_size = MAX_CACHED_RAW_TERRAIN_IMAGE_AREA;  		}		  		if(mForSculpt)  		{ -			max_size = MAX_CACHED_RAW_SCULPT_IMAGE_AREA ; -			mCachedRawImageReady = !mRawDiscardLevel ; +			max_size = MAX_CACHED_RAW_SCULPT_IMAGE_AREA; +			mCachedRawImageReady = !mRawDiscardLevel;  		}  		else  		{ -			mCachedRawImageReady = (!mRawDiscardLevel || ((w * h) >= max_size)) ; +			mCachedRawImageReady = (!mRawDiscardLevel || ((w * h) >= max_size));  		}  		while(((w >> i) * (h >> i)) > max_size)  		{ -			++i ; +			++i;  		}  		if(i)  		{  			if(!(w >> i) || !(h >> i))  			{ -				--i ; +				--i;  			} -			mRawImage->scale(w >> i, h >> i) ; +			mRawImage->scale(w >> i, h >> i);  		} -		mCachedRawImage = mRawImage ; -		mRawDiscardLevel += i ; -		mCachedRawDiscardLevel = mRawDiscardLevel ;			 +		mCachedRawImage = mRawImage; +		mRawDiscardLevel += i; +		mCachedRawDiscardLevel = mRawDiscardLevel;			  	}  } @@ -2718,11 +2718,11 @@ void LLViewerFetchedTexture::checkCachedRawSculptImage()  	{  		if(getDiscardLevel() != 0)  		{ -			mCachedRawImageReady = FALSE ; +			mCachedRawImageReady = FALSE;  		}  		else if(isForSculptOnly())  		{ -			resetTextureStats() ; //do not update this image any more. +			resetTextureStats(); //do not update this image any more.  		}  	}  } @@ -2731,45 +2731,45 @@ void LLViewerFetchedTexture::saveRawImage()  {  	if(mRawImage.isNull() || mRawImage == mSavedRawImage || (mSavedRawDiscardLevel >= 0 && mSavedRawDiscardLevel <= mRawDiscardLevel))  	{ -		return ; +		return;  	} -	mSavedRawDiscardLevel = mRawDiscardLevel ; -	mSavedRawImage = new LLImageRaw(mRawImage->getData(), mRawImage->getWidth(), mRawImage->getHeight(), mRawImage->getComponents()) ; +	mSavedRawDiscardLevel = mRawDiscardLevel; +	mSavedRawImage = new LLImageRaw(mRawImage->getData(), mRawImage->getWidth(), mRawImage->getHeight(), mRawImage->getComponents());  	if(mForceToSaveRawImage && mSavedRawDiscardLevel <= mDesiredSavedRawDiscardLevel)  	{ -		mForceToSaveRawImage = FALSE ; +		mForceToSaveRawImage = FALSE;  	} -	mLastReferencedSavedRawImageTime = sCurrentTime ; +	mLastReferencedSavedRawImageTime = sCurrentTime;  }  void LLViewerFetchedTexture::forceToSaveRawImage(S32 desired_discard, F32 kept_time)   {  -	mKeptSavedRawImageTime = kept_time ; -	mLastReferencedSavedRawImageTime = sCurrentTime ; +	mKeptSavedRawImageTime = kept_time; +	mLastReferencedSavedRawImageTime = sCurrentTime;  	if(mSavedRawDiscardLevel > -1 && mSavedRawDiscardLevel <= desired_discard)  	{ -		return ; //raw imge is ready. +		return; //raw imge is ready.  	}  	if(!mForceToSaveRawImage || mDesiredSavedRawDiscardLevel < 0 || mDesiredSavedRawDiscardLevel > desired_discard)  	{ -		mForceToSaveRawImage = TRUE ; -		mDesiredSavedRawDiscardLevel = desired_discard ; +		mForceToSaveRawImage = TRUE; +		mDesiredSavedRawDiscardLevel = desired_discard;  		//copy from the cached raw image if exists.  		if(mCachedRawImage.notNull() && mRawImage.isNull() )  		{ -			mRawImage = mCachedRawImage ; -			mRawDiscardLevel = mCachedRawDiscardLevel ; +			mRawImage = mCachedRawImage; +			mRawDiscardLevel = mCachedRawDiscardLevel; -			saveRawImage() ; +			saveRawImage(); -			mRawImage = NULL ; -			mRawDiscardLevel = INVALID_DISCARD_LEVEL ; +			mRawImage = NULL; +			mRawDiscardLevel = INVALID_DISCARD_LEVEL;  		}		  	}  } @@ -2777,38 +2777,38 @@ void LLViewerFetchedTexture::destroySavedRawImage()  {  	if(mLastReferencedSavedRawImageTime < mKeptSavedRawImageTime)  	{ -		return ; //keep the saved raw image. +		return; //keep the saved raw image.  	} -	mForceToSaveRawImage  = FALSE ; -	mSaveRawImage = FALSE ; +	mForceToSaveRawImage  = FALSE; +	mSaveRawImage = FALSE; -	clearCallbackEntryList() ; +	clearCallbackEntryList(); -	mSavedRawImage = NULL ; -	mForceToSaveRawImage  = FALSE ; -	mSaveRawImage = FALSE ; -	mSavedRawDiscardLevel = -1 ; -	mDesiredSavedRawDiscardLevel = -1 ; -	mLastReferencedSavedRawImageTime = 0.0f ; -	mKeptSavedRawImageTime = 0.f ; +	mSavedRawImage = NULL; +	mForceToSaveRawImage  = FALSE; +	mSaveRawImage = FALSE; +	mSavedRawDiscardLevel = -1; +	mDesiredSavedRawDiscardLevel = -1; +	mLastReferencedSavedRawImageTime = 0.0f; +	mKeptSavedRawImageTime = 0.f;  }  LLImageRaw* LLViewerFetchedTexture::getSavedRawImage()   { -	mLastReferencedSavedRawImageTime = sCurrentTime ; +	mLastReferencedSavedRawImageTime = sCurrentTime; -	return mSavedRawImage ; +	return mSavedRawImage;  }  BOOL LLViewerFetchedTexture::hasSavedRawImage() const  { -	return mSavedRawImage.notNull() ; +	return mSavedRawImage.notNull();  }  F32 LLViewerFetchedTexture::getElapsedLastReferencedSavedRawImageTime() const  {  -	return sCurrentTime - mLastReferencedSavedRawImageTime ; +	return sCurrentTime - mLastReferencedSavedRawImageTime;  }  //---------------------------------------------------------------------------------------------- @@ -2821,13 +2821,13 @@ F32 LLViewerFetchedTexture::getElapsedLastReferencedSavedRawImageTime() const  LLViewerLODTexture::LLViewerLODTexture(const LLUUID& id, FTType f_type, const LLHost& host, BOOL usemipmaps)  	: LLViewerFetchedTexture(id, f_type, host, usemipmaps)  { -	init(TRUE) ; +	init(TRUE);  }  LLViewerLODTexture::LLViewerLODTexture(const std::string& url, FTType f_type, const LLUUID& id, BOOL usemipmaps)  	: LLViewerFetchedTexture(url, f_type, id, usemipmaps)  { -	init(TRUE) ; +	init(TRUE);  }  void LLViewerLODTexture::init(bool firstinit) @@ -2840,19 +2840,19 @@ void LLViewerLODTexture::init(bool firstinit)  //virtual   S8 LLViewerLODTexture::getType() const  { -	return LLViewerTexture::LOD_TEXTURE ; +	return LLViewerTexture::LOD_TEXTURE;  }  BOOL LLViewerLODTexture::isUpdateFrozen()  { -	return LLViewerTexture::sFreezeImageScalingDown && !getDiscardLevel() ; +	return LLViewerTexture::sFreezeImageScalingDown && !getDiscardLevel();  }  // This is gauranteed to get called periodically for every texture  //virtual  void LLViewerLODTexture::processTextureStats()  { -	updateVirtualSize() ; +	updateVirtualSize();  	static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes"); @@ -2874,7 +2874,7 @@ void LLViewerLODTexture::processTextureStats()  	}  	else if (!mFullWidth  || !mFullHeight)  	{ -		mDesiredDiscardLevel = 	getMaxDiscardLevel() ; +		mDesiredDiscardLevel = 	getMaxDiscardLevel();  	}  	else  	{ @@ -2900,7 +2900,7 @@ void LLViewerLODTexture::processTextureStats()  			if(isLargeImage() && !isJustBound() && mAdditionalDecodePriority < 0.3f)  			{  				//if is a big image and not being used recently, nor close to the view point, do not load hi-res data. -				mMaxVirtualSize = llmin(mMaxVirtualSize, (F32)LLViewerTexture::sMinLargeImageSize) ; +				mMaxVirtualSize = llmin(mMaxVirtualSize, (F32)LLViewerTexture::sMinLargeImageSize);  			}  			if ((mCalculatedDiscardLevel >= 0.f) && @@ -2921,7 +2921,7 @@ void LLViewerLODTexture::processTextureStats()  		{  			discard_level += sDesiredDiscardBias;  			discard_level *= sDesiredDiscardScale; // scale -			discard_level += sCameraMovingDiscardBias ; +			discard_level += sCameraMovingDiscardBias;  		}  		discard_level = floorf(discard_level); @@ -2948,19 +2948,19 @@ void LLViewerLODTexture::processTextureStats()  			if(desired_discard_bias_max <= sDesiredDiscardBias && !mForceToSaveRawImage)  			{  				//needs to release texture memory urgently -				scaleDown() ; +				scaleDown();  			}  			// Limit the amount of GL memory bound each frame  			else if ( sBoundTextureMemory > sMaxBoundTextureMem * texmem_middle_bound_scale &&  				(!getBoundRecently() || mDesiredDiscardLevel >= mCachedRawDiscardLevel))  			{ -				scaleDown() ; +				scaleDown();  			}  			// Only allow GL to have 2x the video card memory  			else if ( sTotalTextureMemory > sMaxTotalTextureMem * texmem_middle_bound_scale &&  				(!getBoundRecently() || mDesiredDiscardLevel >= mCachedRawDiscardLevel))  			{ -				scaleDown() ; +				scaleDown();  			}  		} @@ -2968,13 +2968,13 @@ void LLViewerLODTexture::processTextureStats()  	if(mForceToSaveRawImage && mDesiredSavedRawDiscardLevel >= 0)  	{ -		mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S8)mDesiredSavedRawDiscardLevel) ; +		mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S8)mDesiredSavedRawDiscardLevel);  	}  	else if(LLPipeline::sMemAllocationThrottled)//release memory of large textures by decrease their resolutions.  	{  		if(scaleDown())  		{ -			mDesiredDiscardLevel = mCachedRawDiscardLevel ; +			mDesiredDiscardLevel = mCachedRawDiscardLevel;  		}  	}  } @@ -2983,17 +2983,17 @@ bool LLViewerLODTexture::scaleDown()  {  	if(hasGLTexture() && mCachedRawDiscardLevel > getDiscardLevel())  	{		 -		switchToCachedImage() ;	 +		switchToCachedImage();	  		LLTexturePipelineTester* tester = (LLTexturePipelineTester*)LLMetricPerformanceTesterBasic::getTester(sTesterName);  		if (tester)  		{ -			tester->setStablizingTime() ; +			tester->setStablizingTime();  		} -		return true ; +		return true;  	} -	return false ; +	return false;  }  //----------------------------------------------------------------------------------------------  //end of LLViewerLODTexture @@ -3005,14 +3005,14 @@ bool LLViewerLODTexture::scaleDown()  //static  void LLViewerMediaTexture::updateClass()  { -	static const F32 MAX_INACTIVE_TIME = 30.f ; +	static const F32 MAX_INACTIVE_TIME = 30.f;  #if 0  	//force to play media. -	gSavedSettings.setBOOL("AudioStreamingMedia", true) ; +	gSavedSettings.setBOOL("AudioStreamingMedia", true);  #endif -	for(media_map_t::iterator iter = sMediaMap.begin() ; iter != sMediaMap.end(); ) +	for(media_map_t::iterator iter = sMediaMap.begin(); iter != sMediaMap.end(); )  	{  		LLViewerMediaTexture* mediap = iter->second;	 @@ -3023,29 +3023,29 @@ void LLViewerMediaTexture::updateClass()  			//  			if(mediap->getLastReferencedTimer()->getElapsedTimeF32() > MAX_INACTIVE_TIME)  			{ -				media_map_t::iterator cur = iter++ ; -				sMediaMap.erase(cur) ; -				continue ; +				media_map_t::iterator cur = iter++; +				sMediaMap.erase(cur); +				continue;  			}  		} -		++iter ; +		++iter;  	}  }  //static   void LLViewerMediaTexture::removeMediaImplFromTexture(const LLUUID& media_id)   { -	LLViewerMediaTexture* media_tex = findMediaTexture(media_id) ; +	LLViewerMediaTexture* media_tex = findMediaTexture(media_id);  	if(media_tex)  	{ -		media_tex->invalidateMediaImpl() ; +		media_tex->invalidateMediaImpl();  	}  }  //static  void LLViewerMediaTexture::cleanUpClass()  { -	sMediaMap.clear() ; +	sMediaMap.clear();  }  //static @@ -3057,9 +3057,9 @@ LLViewerMediaTexture* LLViewerMediaTexture::findMediaTexture(const LLUUID& media  		return NULL;  	} -	LLViewerMediaTexture* media_tex = iter->second ; -	media_tex->setMediaImpl() ; -	media_tex->getLastReferencedTimer()->reset() ; +	LLViewerMediaTexture* media_tex = iter->second; +	media_tex->setMediaImpl(); +	media_tex->getLastReferencedTimer()->reset();  	return media_tex;  } @@ -3071,48 +3071,48 @@ LLViewerMediaTexture::LLViewerMediaTexture(const LLUUID& id, BOOL usemipmaps, LL  {  	sMediaMap.insert(std::make_pair(id, this)); -	mGLTexturep = gl_image ; +	mGLTexturep = gl_image;  	if(mGLTexturep.isNull())  	{ -		generateGLTexture() ; +		generateGLTexture();  	}  	mGLTexturep->setAllowCompression(false); -	mGLTexturep->setNeedsAlphaAndPickMask(FALSE) ; +	mGLTexturep->setNeedsAlphaAndPickMask(FALSE); -	mIsPlaying = FALSE ; +	mIsPlaying = FALSE; -	setMediaImpl() ; +	setMediaImpl(); -	setCategory(LLGLTexture::MEDIA) ; +	setCategory(LLGLTexture::MEDIA); -	LLViewerTexture* tex = gTextureList.findImage(mID) ; +	LLViewerTexture* tex = gTextureList.findImage(mID);  	if(tex) //this media is a parcel media for tex.  	{ -		tex->setParcelMedia(this) ; +		tex->setParcelMedia(this);  	}  }  //virtual   LLViewerMediaTexture::~LLViewerMediaTexture()   {	 -	LLViewerTexture* tex = gTextureList.findImage(mID) ; +	LLViewerTexture* tex = gTextureList.findImage(mID);  	if(tex) //this media is a parcel media for tex.  	{ -		tex->setParcelMedia(NULL) ; +		tex->setParcelMedia(NULL);  	}  }  void LLViewerMediaTexture::reinit(BOOL usemipmaps /* = TRUE */)  { -	llassert(mGLTexturep.notNull()) ; +	llassert(mGLTexturep.notNull()); -	mUseMipMaps = usemipmaps ; -	getLastReferencedTimer()->reset() ; -	mGLTexturep->setUseMipMaps(mUseMipMaps) ; -	mGLTexturep->setNeedsAlphaAndPickMask(FALSE) ; +	mUseMipMaps = usemipmaps; +	getLastReferencedTimer()->reset(); +	mGLTexturep->setUseMipMaps(mUseMipMaps); +	mGLTexturep->setNeedsAlphaAndPickMask(FALSE);  }  void LLViewerMediaTexture::setUseMipMaps(BOOL mipmap)  @@ -3121,26 +3121,26 @@ void LLViewerMediaTexture::setUseMipMaps(BOOL mipmap)  	if(mGLTexturep.notNull())  	{ -		mGLTexturep->setUseMipMaps(mipmap) ; +		mGLTexturep->setUseMipMaps(mipmap);  	}  }  //virtual   S8 LLViewerMediaTexture::getType() const  { -	return LLViewerTexture::MEDIA_TEXTURE ; +	return LLViewerTexture::MEDIA_TEXTURE;  }  void LLViewerMediaTexture::invalidateMediaImpl()   { -	mMediaImplp = NULL ; +	mMediaImplp = NULL;  }  void LLViewerMediaTexture::setMediaImpl()  {  	if(!mMediaImplp)  	{ -		mMediaImplp = LLViewerMedia::getMediaImplFromTextureID(mID) ; +		mMediaImplp = LLViewerMedia::getMediaImplFromTextureID(mID);  	}  } @@ -3149,71 +3149,71 @@ void LLViewerMediaTexture::setMediaImpl()  //      because it does not check the face validity after the current frame.  BOOL LLViewerMediaTexture::findFaces()  {	 -	mMediaFaceList.clear() ; +	mMediaFaceList.clear(); -	BOOL ret = TRUE ; +	BOOL ret = TRUE; -	LLViewerTexture* tex = gTextureList.findImage(mID) ; +	LLViewerTexture* tex = gTextureList.findImage(mID);  	if(tex) //this media is a parcel media for tex.  	{  		for (U32 ch = 0; ch < LLRender::NUM_TEXTURE_CHANNELS; ++ch)  		{ -			const ll_face_list_t* face_list = tex->getFaceList(ch) ; -			U32 end = tex->getNumFaces(ch) ; -		for(U32 i = 0 ; i < end ; i++) +			const ll_face_list_t* face_list = tex->getFaceList(ch); +			U32 end = tex->getNumFaces(ch); +		for(U32 i = 0; i < end; i++)  		{ -			mMediaFaceList.push_back((*face_list)[i]) ; +			mMediaFaceList.push_back((*face_list)[i]);  		}  	}  	}  	if(!mMediaImplp)  	{ -		return TRUE ;  +		return TRUE;   	}  	//for media on a face. -	const std::list< LLVOVolume* >* obj_list = mMediaImplp->getObjectList() ; -	std::list< LLVOVolume* >::const_iterator iter = obj_list->begin() ; +	const std::list< LLVOVolume* >* obj_list = mMediaImplp->getObjectList(); +	std::list< LLVOVolume* >::const_iterator iter = obj_list->begin();  	for(; iter != obj_list->end(); ++iter)  	{ -		LLVOVolume* obj = *iter ; +		LLVOVolume* obj = *iter;  		if(obj->mDrawable.isNull())  		{ -			ret = FALSE ; -			continue ; +			ret = FALSE; +			continue;  		} -		S32 face_id = -1 ; -		S32 num_faces = obj->mDrawable->getNumFaces() ; +		S32 face_id = -1; +		S32 num_faces = obj->mDrawable->getNumFaces();  		while((face_id = obj->getFaceIndexWithMediaImpl(mMediaImplp, face_id)) > -1 && face_id < num_faces)  		{ -			LLFace* facep = obj->mDrawable->getFace(face_id) ; +			LLFace* facep = obj->mDrawable->getFace(face_id);  			if(facep)  			{ -				mMediaFaceList.push_back(facep) ; +				mMediaFaceList.push_back(facep);  			}  			else  			{ -				ret = FALSE ; +				ret = FALSE;  			}  		}  	} -	return ret ; +	return ret;  }  void LLViewerMediaTexture::initVirtualSize()  {  	if(mIsPlaying)  	{ -		return ; +		return;  	} -	findFaces() ; +	findFaces();  	for(std::list< LLFace* >::iterator iter = mMediaFaceList.begin(); iter!= mMediaFaceList.end(); ++iter)  	{ -		addTextureStats((*iter)->getVirtualSize()) ; +		addTextureStats((*iter)->getVirtualSize());  	}  } @@ -3221,77 +3221,77 @@ void LLViewerMediaTexture::addMediaToFace(LLFace* facep)  {  	if(facep)  	{ -		facep->setHasMedia(true) ; +		facep->setHasMedia(true);  	}  	if(!mIsPlaying)  	{ -		return ; //no need to add the face because the media is not in playing. +		return; //no need to add the face because the media is not in playing.  	} -	switchTexture(LLRender::DIFFUSE_MAP, facep) ; +	switchTexture(LLRender::DIFFUSE_MAP, facep);  }  void LLViewerMediaTexture::removeMediaFromFace(LLFace* facep)   {  	if(!facep)  	{ -		return ; +		return;  	} -	facep->setHasMedia(false) ; +	facep->setHasMedia(false);  	if(!mIsPlaying)  	{ -		return ; //no need to remove the face because the media is not in playing. +		return; //no need to remove the face because the media is not in playing.  	}	 -	mIsPlaying = FALSE ; //set to remove the media from the face. -	switchTexture(LLRender::DIFFUSE_MAP, facep) ; -	mIsPlaying = TRUE ; //set the flag back. +	mIsPlaying = FALSE; //set to remove the media from the face. +	switchTexture(LLRender::DIFFUSE_MAP, facep); +	mIsPlaying = TRUE; //set the flag back.  	if(getTotalNumFaces() < 1) //no face referencing to this media  	{ -		stopPlaying() ; +		stopPlaying();  	}  }  //virtual   void LLViewerMediaTexture::addFace(U32 ch, LLFace* facep)   { -	LLViewerTexture::addFace(ch, facep) ; +	LLViewerTexture::addFace(ch, facep); -	const LLTextureEntry* te = facep->getTextureEntry() ; +	const LLTextureEntry* te = facep->getTextureEntry();  	if(te && te->getID().notNull())  	{ -		LLViewerTexture* tex = gTextureList.findImage(te->getID()) ; +		LLViewerTexture* tex = gTextureList.findImage(te->getID());  		if(tex)  		{ -			mTextureList.push_back(tex) ;//increase the reference number by one for tex to avoid deleting it. -			return ; +			mTextureList.push_back(tex);//increase the reference number by one for tex to avoid deleting it. +			return;  		}  	}  	//check if it is a parcel media  	if(facep->getTexture() && facep->getTexture() != this && facep->getTexture()->getID() == mID)  	{ -		mTextureList.push_back(facep->getTexture()) ; //a parcel media. -		return ; +		mTextureList.push_back(facep->getTexture()); //a parcel media. +		return;  	}  	if(te && te->getID().notNull()) //should have a texture  	{ -		LL_ERRS() << "The face does not have a valid texture before media texture." << LL_ENDL ; +		LL_ERRS() << "The face does not have a valid texture before media texture." << LL_ENDL;  	}  }  //virtual   void LLViewerMediaTexture::removeFace(U32 ch, LLFace* facep)   { -	LLViewerTexture::removeFace(ch, facep) ; +	LLViewerTexture::removeFace(ch, facep); -	const LLTextureEntry* te = facep->getTextureEntry() ; +	const LLTextureEntry* te = facep->getTextureEntry();  	if(te && te->getID().notNull())  	{ -		LLViewerTexture* tex = gTextureList.findImage(te->getID()) ; +		LLViewerTexture* tex = gTextureList.findImage(te->getID());  		if(tex)  		{  			for(std::list< LLPointer<LLViewerTexture> >::iterator iter = mTextureList.begin(); @@ -3299,8 +3299,8 @@ void LLViewerMediaTexture::removeFace(U32 ch, LLFace* facep)  			{  				if(*iter == tex)  				{ -					mTextureList.erase(iter) ; //decrease the reference number for tex by one. -					return ; +					mTextureList.erase(iter); //decrease the reference number for tex by one. +					return;  				}  			} @@ -3314,7 +3314,7 @@ void LLViewerMediaTexture::removeFace(U32 ch, LLFace* facep)  				llassert(mNumFaces[ch] <= mFaceList[ch].size()); -				for(U32 j = 0 ; j < mNumFaces[ch] ; j++) +				for(U32 j = 0; j < mNumFaces[ch]; j++)  				{  					te_list.push_back(mFaceList[ch][j]->getTextureEntry());//all textures are in use.  				} @@ -3322,8 +3322,8 @@ void LLViewerMediaTexture::removeFace(U32 ch, LLFace* facep)  			if (te_list.empty())  			{ -				mTextureList.clear() ; -				return ; +				mTextureList.clear(); +				return;  			}  			S32 end = te_list.size(); @@ -3333,18 +3333,18 @@ void LLViewerMediaTexture::removeFace(U32 ch, LLFace* facep)  			{  				S32 i = 0; -				for(i = 0 ; i < end ; i++) +				for(i = 0; i < end; i++)  				{  					if(te_list[i] && te_list[i]->getID() == (*iter)->getID())//the texture is in use.  					{ -						te_list[i] = NULL ; -						break ; +						te_list[i] = NULL; +						break;  					}  				}  				if(i == end) //no hit for this texture, remove it.  				{ -					mTextureList.erase(iter) ; //decrease the reference number for tex by one. -					return ; +					mTextureList.erase(iter); //decrease the reference number for tex by one. +					return;  				}  			}  		} @@ -3356,14 +3356,14 @@ void LLViewerMediaTexture::removeFace(U32 ch, LLFace* facep)  	{  		if((*iter)->getID() == mID)  		{ -			mTextureList.erase(iter) ; //decrease the reference number for tex by one. -			return ; +			mTextureList.erase(iter); //decrease the reference number for tex by one. +			return;  		}  	}  	if(te && te->getID().notNull()) //should have a texture  	{ -		LL_ERRS() << "mTextureList texture reference number is corrupted." << LL_ENDL ; +		LL_ERRS() << "mTextureList texture reference number is corrupted." << LL_ENDL;  	}  } @@ -3372,9 +3372,9 @@ void LLViewerMediaTexture::stopPlaying()  	// Don't stop the media impl playing here -- this breaks non-inworld media (login screen, search, and media browser).  //	if(mMediaImplp)  //	{ -//		mMediaImplp->stop() ; +//		mMediaImplp->stop();  //	} -	mIsPlaying = FALSE ;			 +	mIsPlaying = FALSE;			  }  void LLViewerMediaTexture::switchTexture(U32 ch, LLFace* facep) @@ -3387,29 +3387,29 @@ void LLViewerMediaTexture::switchTexture(U32 ch, LLFace* facep)  		{  			if(mID == facep->getTexture()->getID()) //this is a parcel media  			{ -				return ; //let the prim media win. +				return; //let the prim media win.  			}  		}  		if(mIsPlaying) //old textures switch to the media texture  		{ -			facep->switchTexture(ch, this) ; +			facep->switchTexture(ch, this);  		}  		else //switch to old textures.  		{ -			const LLTextureEntry* te = facep->getTextureEntry() ; +			const LLTextureEntry* te = facep->getTextureEntry();  			if(te)  			{ -				LLViewerTexture* tex = te->getID().notNull() ? gTextureList.findImage(te->getID()) : NULL ; +				LLViewerTexture* tex = te->getID().notNull() ? gTextureList.findImage(te->getID()) : NULL;  				if(!tex && te->getID() != mID)//try parcel media.  				{ -					tex = gTextureList.findImage(mID) ; +					tex = gTextureList.findImage(mID);  				}  				if(!tex)  				{ -					tex = LLViewerFetchedTexture::sDefaultImagep ; +					tex = LLViewerFetchedTexture::sDefaultImagep;  				} -				facep->switchTexture(ch, tex) ; +				facep->switchTexture(ch, tex);  			}  		}  	} @@ -3419,36 +3419,36 @@ void LLViewerMediaTexture::setPlaying(BOOL playing)  {  	if(!mMediaImplp)  	{ -		return ;  +		return;   	}  	if(!playing && !mIsPlaying)  	{ -		return ; //media is already off +		return; //media is already off  	}  	if(playing == mIsPlaying && !mMediaImplp->isUpdated())  	{ -		return ; //nothing has changed since last time. +		return; //nothing has changed since last time.  	}	 -	mIsPlaying = playing ; +	mIsPlaying = playing;  	if(mIsPlaying) //is about to play this media  	{  		if(findFaces())  		{  			//about to update all faces. -			mMediaImplp->setUpdated(FALSE) ; +			mMediaImplp->setUpdated(FALSE);  		}  		if(mMediaFaceList.empty())//no face pointing to this media  		{ -			stopPlaying() ; -			return ; +			stopPlaying(); +			return;  		}  		for(std::list< LLFace* >::iterator iter = mMediaFaceList.begin(); iter!= mMediaFaceList.end(); ++iter)  		{ -			switchTexture(LLRender::DIFFUSE_MAP, *iter) ; +			switchTexture(LLRender::DIFFUSE_MAP, *iter);  		}  	}  	else //stop playing this media @@ -3456,12 +3456,12 @@ void LLViewerMediaTexture::setPlaying(BOOL playing)  		U32 ch = LLRender::DIFFUSE_MAP;  		llassert(mNumFaces[ch] <= mFaceList[ch].size()); -		for(U32 i = mNumFaces[ch] ; i ; i--) +		for(U32 i = mNumFaces[ch]; i; i--)  		{ -			switchTexture(ch, mFaceList[ch][i - 1]) ; //current face could be removed in this function. +			switchTexture(ch, mFaceList[ch][i - 1]); //current face could be removed in this function.  		}  	} -	return ; +	return;  }  //virtual  @@ -3469,13 +3469,13 @@ F32 LLViewerMediaTexture::getMaxVirtualSize()  {	  	if(LLFrameTimer::getFrameCount() == mUpdateVirtualSizeTime)  	{ -		return mMaxVirtualSize ; +		return mMaxVirtualSize;  	} -	mUpdateVirtualSizeTime = LLFrameTimer::getFrameCount() ; +	mUpdateVirtualSizeTime = LLFrameTimer::getFrameCount();  	if(!mMaxVirtualSizeResetCounter)  	{ -		addTextureStats(0.f, FALSE) ;//reset +		addTextureStats(0.f, FALSE);//reset  	}  	if(mIsPlaying) //media is playing @@ -3483,28 +3483,28 @@ F32 LLViewerMediaTexture::getMaxVirtualSize()  		for (U32 ch = 0; ch < LLRender::NUM_TEXTURE_CHANNELS; ++ch)  		{  			llassert(mNumFaces[ch] <= mFaceList[ch].size()); -			for(U32 i = 0 ; i < mNumFaces[ch] ; i++) +			for(U32 i = 0; i < mNumFaces[ch]; i++)  			{ -				LLFace* facep = mFaceList[ch][i] ; +				LLFace* facep = mFaceList[ch][i];  			if(facep->getDrawable()->isRecentlyVisible())  			{ -				addTextureStats(facep->getVirtualSize()) ; +				addTextureStats(facep->getVirtualSize());  			}  		}		  	}  	}  	else //media is not in playing  	{ -		findFaces() ; +		findFaces();  		if(!mMediaFaceList.empty())  		{  			for(std::list< LLFace* >::iterator iter = mMediaFaceList.begin(); iter!= mMediaFaceList.end(); ++iter)  			{ -				LLFace* facep = *iter ; +				LLFace* facep = *iter;  				if(facep->getDrawable()->isRecentlyVisible())  				{ -					addTextureStats(facep->getVirtualSize()) ; +					addTextureStats(facep->getVirtualSize());  				}  			}  		} @@ -3514,10 +3514,10 @@ F32 LLViewerMediaTexture::getMaxVirtualSize()  	{  		mMaxVirtualSizeResetCounter--;  	} -	reorganizeFaceList() ; +	reorganizeFaceList();  	reorganizeVolumeList(); -	return mMaxVirtualSize ; +	return mMaxVirtualSize;  }  //----------------------------------------------------------------------------------------------  //end of LLViewerMediaTexture @@ -3528,27 +3528,27 @@ F32 LLViewerMediaTexture::getMaxVirtualSize()  //----------------------------------------------------------------------------------------------  LLTexturePipelineTester::LLTexturePipelineTester() : LLMetricPerformanceTesterWithSession(sTesterName)   { -	addMetric("TotalBytesLoaded") ; -	addMetric("TotalBytesLoadedFromCache") ; -	addMetric("TotalBytesLoadedForLargeImage") ; -	addMetric("TotalBytesLoadedForSculpties") ; -	addMetric("StartFetchingTime") ; -	addMetric("TotalGrayTime") ; -	addMetric("TotalStablizingTime") ; -	addMetric("StartTimeLoadingSculpties") ; -	addMetric("EndTimeLoadingSculpties") ; - -	addMetric("Time") ; -	addMetric("TotalBytesBound") ; -	addMetric("TotalBytesBoundForLargeImage") ; -	addMetric("PercentageBytesBound") ; +	addMetric("TotalBytesLoaded"); +	addMetric("TotalBytesLoadedFromCache"); +	addMetric("TotalBytesLoadedForLargeImage"); +	addMetric("TotalBytesLoadedForSculpties"); +	addMetric("StartFetchingTime"); +	addMetric("TotalGrayTime"); +	addMetric("TotalStablizingTime"); +	addMetric("StartTimeLoadingSculpties"); +	addMetric("EndTimeLoadingSculpties"); + +	addMetric("Time"); +	addMetric("TotalBytesBound"); +	addMetric("TotalBytesBoundForLargeImage"); +	addMetric("PercentageBytesBound"); -	mTotalBytesLoaded = 0 ; -	mTotalBytesLoadedFromCache = 0 ;	 -	mTotalBytesLoadedForLargeImage = 0 ; -	mTotalBytesLoadedForSculpties = 0 ; +	mTotalBytesLoaded = (S32Bytes)0; +	mTotalBytesLoadedFromCache = (S32Bytes)0;	 +	mTotalBytesLoadedForLargeImage = (S32Bytes)0; +	mTotalBytesLoadedForSculpties = (S32Bytes)0; -	reset() ; +	reset();  }  LLTexturePipelineTester::~LLTexturePipelineTester() @@ -3558,222 +3558,222 @@ LLTexturePipelineTester::~LLTexturePipelineTester()  void LLTexturePipelineTester::update()  { -	mLastTotalBytesUsed = mTotalBytesUsed ; -	mLastTotalBytesUsedForLargeImage = mTotalBytesUsedForLargeImage ; -	mTotalBytesUsed = 0 ; -	mTotalBytesUsedForLargeImage = 0 ; +	mLastTotalBytesUsed = mTotalBytesUsed; +	mLastTotalBytesUsedForLargeImage = mTotalBytesUsedForLargeImage; +	mTotalBytesUsed = (S32Bytes)0; +	mTotalBytesUsedForLargeImage = (S32Bytes)0;  	if(LLAppViewer::getTextureFetch()->getNumRequests() > 0) //fetching list is not empty  	{  		if(mPause)  		{  			//start a new fetching session -			reset() ; -			mStartFetchingTime = LLImageGL::sLastFrameTime ; -			mPause = FALSE ; +			reset(); +			mStartFetchingTime = LLImageGL::sLastFrameTime; +			mPause = FALSE;  		}  		//update total gray time		  		if(mUsingDefaultTexture)  		{ -			mUsingDefaultTexture = FALSE ; -			mTotalGrayTime = LLImageGL::sLastFrameTime - mStartFetchingTime ;		 +			mUsingDefaultTexture = FALSE; +			mTotalGrayTime = LLImageGL::sLastFrameTime - mStartFetchingTime;		  		}  		//update the stablizing timer. -		updateStablizingTime() ; +		updateStablizingTime(); -		outputTestResults() ; +		outputTestResults();  	}  	else if(!mPause)  	{  		//stop the current fetching session -		mPause = TRUE ; -		outputTestResults() ; -		reset() ; +		mPause = TRUE; +		outputTestResults(); +		reset();  	}		  }  void LLTexturePipelineTester::reset()   { -	mPause = TRUE ; +	mPause = TRUE; -	mUsingDefaultTexture = FALSE ; -	mStartStablizingTime = 0.0f ; -	mEndStablizingTime = 0.0f ; +	mUsingDefaultTexture = FALSE; +	mStartStablizingTime = 0.0f; +	mEndStablizingTime = 0.0f; -	mTotalBytesUsed = 0 ; -	mTotalBytesUsedForLargeImage = 0 ; -	mLastTotalBytesUsed = 0 ; -	mLastTotalBytesUsedForLargeImage = 0 ; +	mTotalBytesUsed = (S32Bytes)0; +	mTotalBytesUsedForLargeImage = (S32Bytes)0; +	mLastTotalBytesUsed = (S32Bytes)0; +	mLastTotalBytesUsedForLargeImage = (S32Bytes)0; -	mStartFetchingTime = 0.0f ; +	mStartFetchingTime = 0.0f; -	mTotalGrayTime = 0.0f ; -	mTotalStablizingTime = 0.0f ; +	mTotalGrayTime = 0.0f; +	mTotalStablizingTime = 0.0f; -	mStartTimeLoadingSculpties = 1.0f ; -	mEndTimeLoadingSculpties = 0.0f ; +	mStartTimeLoadingSculpties = 1.0f; +	mEndTimeLoadingSculpties = 0.0f;  }  //virtual   void LLTexturePipelineTester::outputTestRecord(LLSD *sd)   {	  	std::string currentLabel = getCurrentLabelName(); -	(*sd)[currentLabel]["TotalBytesLoaded"]              = (LLSD::Integer)mTotalBytesLoaded ; -	(*sd)[currentLabel]["TotalBytesLoadedFromCache"]     = (LLSD::Integer)mTotalBytesLoadedFromCache ; -	(*sd)[currentLabel]["TotalBytesLoadedForLargeImage"] = (LLSD::Integer)mTotalBytesLoadedForLargeImage ; -	(*sd)[currentLabel]["TotalBytesLoadedForSculpties"]  = (LLSD::Integer)mTotalBytesLoadedForSculpties ; +	(*sd)[currentLabel]["TotalBytesLoaded"]              = (LLSD::Integer)mTotalBytesLoaded.value(); +	(*sd)[currentLabel]["TotalBytesLoadedFromCache"]     = (LLSD::Integer)mTotalBytesLoadedFromCache.value(); +	(*sd)[currentLabel]["TotalBytesLoadedForLargeImage"] = (LLSD::Integer)mTotalBytesLoadedForLargeImage.value(); +	(*sd)[currentLabel]["TotalBytesLoadedForSculpties"]  = (LLSD::Integer)mTotalBytesLoadedForSculpties.value(); -	(*sd)[currentLabel]["StartFetchingTime"]             = (LLSD::Real)mStartFetchingTime ; -	(*sd)[currentLabel]["TotalGrayTime"]                 = (LLSD::Real)mTotalGrayTime ; -	(*sd)[currentLabel]["TotalStablizingTime"]           = (LLSD::Real)mTotalStablizingTime ; +	(*sd)[currentLabel]["StartFetchingTime"]             = (LLSD::Real)mStartFetchingTime; +	(*sd)[currentLabel]["TotalGrayTime"]                 = (LLSD::Real)mTotalGrayTime; +	(*sd)[currentLabel]["TotalStablizingTime"]           = (LLSD::Real)mTotalStablizingTime; -	(*sd)[currentLabel]["StartTimeLoadingSculpties"]     = (LLSD::Real)mStartTimeLoadingSculpties ; -	(*sd)[currentLabel]["EndTimeLoadingSculpties"]       = (LLSD::Real)mEndTimeLoadingSculpties ; +	(*sd)[currentLabel]["StartTimeLoadingSculpties"]     = (LLSD::Real)mStartTimeLoadingSculpties; +	(*sd)[currentLabel]["EndTimeLoadingSculpties"]       = (LLSD::Real)mEndTimeLoadingSculpties; -	(*sd)[currentLabel]["Time"]                          = LLImageGL::sLastFrameTime ; -	(*sd)[currentLabel]["TotalBytesBound"]               = (LLSD::Integer)mLastTotalBytesUsed ; -	(*sd)[currentLabel]["TotalBytesBoundForLargeImage"]  = (LLSD::Integer)mLastTotalBytesUsedForLargeImage ; -	(*sd)[currentLabel]["PercentageBytesBound"]          = (LLSD::Real)(100.f * mLastTotalBytesUsed / mTotalBytesLoaded) ; +	(*sd)[currentLabel]["Time"]                          = LLImageGL::sLastFrameTime; +	(*sd)[currentLabel]["TotalBytesBound"]               = (LLSD::Integer)mLastTotalBytesUsed.value(); +	(*sd)[currentLabel]["TotalBytesBoundForLargeImage"]  = (LLSD::Integer)mLastTotalBytesUsedForLargeImage.value(); +	(*sd)[currentLabel]["PercentageBytesBound"]          = (LLSD::Real)(100.f * mLastTotalBytesUsed / mTotalBytesLoaded);  }  void LLTexturePipelineTester::updateTextureBindingStats(const LLViewerTexture* imagep)   { -	U32 mem_size = (U32)imagep->getTextureMemory() ; -	mTotalBytesUsed += mem_size ;  +	U32Bytes mem_size = imagep->getTextureMemory(); +	mTotalBytesUsed += mem_size;  -	if(MIN_LARGE_IMAGE_AREA <= (U32)(mem_size / (U32)imagep->getComponents())) +	if(MIN_LARGE_IMAGE_AREA <= (U32)(mem_size.value() / (U32)imagep->getComponents()))  	{ -		mTotalBytesUsedForLargeImage += mem_size ; +		mTotalBytesUsedForLargeImage += mem_size;  	}  }  void LLTexturePipelineTester::updateTextureLoadingStats(const LLViewerFetchedTexture* imagep, const LLImageRaw* raw_imagep, BOOL from_cache)   { -	U32 data_size = (U32)raw_imagep->getDataSize() ; -	mTotalBytesLoaded += data_size ; +	U32Bytes data_size = (U32Bytes)raw_imagep->getDataSize(); +	mTotalBytesLoaded += data_size;  	if(from_cache)  	{ -		mTotalBytesLoadedFromCache += data_size ; +		mTotalBytesLoadedFromCache += data_size;  	} -	if(MIN_LARGE_IMAGE_AREA <= (U32)(data_size / (U32)raw_imagep->getComponents())) +	if(MIN_LARGE_IMAGE_AREA <= (U32)(data_size.value() / (U32)raw_imagep->getComponents()))  	{ -		mTotalBytesLoadedForLargeImage += data_size ; +		mTotalBytesLoadedForLargeImage += data_size;  	}  	if(imagep->forSculpt())  	{ -		mTotalBytesLoadedForSculpties += data_size ; +		mTotalBytesLoadedForSculpties += data_size;  		if(mStartTimeLoadingSculpties > mEndTimeLoadingSculpties)  		{ -			mStartTimeLoadingSculpties = LLImageGL::sLastFrameTime ; +			mStartTimeLoadingSculpties = LLImageGL::sLastFrameTime;  		} -		mEndTimeLoadingSculpties = LLImageGL::sLastFrameTime ; +		mEndTimeLoadingSculpties = LLImageGL::sLastFrameTime;  	}  }  void LLTexturePipelineTester::updateGrayTextureBinding()  { -	mUsingDefaultTexture = TRUE ; +	mUsingDefaultTexture = TRUE;  }  void LLTexturePipelineTester::setStablizingTime()  {  	if(mStartStablizingTime <= mStartFetchingTime)  	{ -		mStartStablizingTime = LLImageGL::sLastFrameTime ; +		mStartStablizingTime = LLImageGL::sLastFrameTime;  	} -	mEndStablizingTime = LLImageGL::sLastFrameTime ; +	mEndStablizingTime = LLImageGL::sLastFrameTime;  }  void LLTexturePipelineTester::updateStablizingTime()  {  	if(mStartStablizingTime > mStartFetchingTime)  	{ -		F32 t = mEndStablizingTime - mStartStablizingTime ; +		F32 t = mEndStablizingTime - mStartStablizingTime;  		if(t > F_ALMOST_ZERO && (t - mTotalStablizingTime) < F_ALMOST_ZERO)  		{  			//already stablized -			mTotalStablizingTime = LLImageGL::sLastFrameTime - mStartStablizingTime ; +			mTotalStablizingTime = LLImageGL::sLastFrameTime - mStartStablizingTime;  			//cancel the timer -			mStartStablizingTime = 0.f ; -			mEndStablizingTime = 0.f ; +			mStartStablizingTime = 0.f; +			mEndStablizingTime = 0.f;  		}  		else  		{ -			mTotalStablizingTime = t ; +			mTotalStablizingTime = t;  		}  	} -	mTotalStablizingTime = 0.f ; +	mTotalStablizingTime = 0.f;  }  //virtual   void LLTexturePipelineTester::compareTestSessions(std::ofstream* os)   {	 -	LLTexturePipelineTester::LLTextureTestSession* base_sessionp = dynamic_cast<LLTexturePipelineTester::LLTextureTestSession*>(mBaseSessionp) ; -	LLTexturePipelineTester::LLTextureTestSession* current_sessionp = dynamic_cast<LLTexturePipelineTester::LLTextureTestSession*>(mCurrentSessionp) ; +	LLTexturePipelineTester::LLTextureTestSession* base_sessionp = dynamic_cast<LLTexturePipelineTester::LLTextureTestSession*>(mBaseSessionp); +	LLTexturePipelineTester::LLTextureTestSession* current_sessionp = dynamic_cast<LLTexturePipelineTester::LLTextureTestSession*>(mCurrentSessionp);  	if(!base_sessionp || !current_sessionp)  	{ -		LL_ERRS() << "type of test session does not match!" << LL_ENDL ; +		LL_ERRS() << "type of test session does not match!" << LL_ENDL;  	}  	//compare and output the comparison -	*os << llformat("%s\n", getTesterName().c_str()) ; -	*os << llformat("AggregateResults\n") ; +	*os << llformat("%s\n", getTesterName().c_str()); +	*os << llformat("AggregateResults\n"); -	compareTestResults(os, "TotalFetchingTime", base_sessionp->mTotalFetchingTime, current_sessionp->mTotalFetchingTime) ; -	compareTestResults(os, "TotalGrayTime", base_sessionp->mTotalGrayTime, current_sessionp->mTotalGrayTime) ; +	compareTestResults(os, "TotalFetchingTime", base_sessionp->mTotalFetchingTime, current_sessionp->mTotalFetchingTime); +	compareTestResults(os, "TotalGrayTime", base_sessionp->mTotalGrayTime, current_sessionp->mTotalGrayTime);  	compareTestResults(os, "TotalStablizingTime", base_sessionp->mTotalStablizingTime, current_sessionp->mTotalStablizingTime); -	compareTestResults(os, "StartTimeLoadingSculpties", base_sessionp->mStartTimeLoadingSculpties, current_sessionp->mStartTimeLoadingSculpties) ;		 -	compareTestResults(os, "TotalTimeLoadingSculpties", base_sessionp->mTotalTimeLoadingSculpties, current_sessionp->mTotalTimeLoadingSculpties) ; +	compareTestResults(os, "StartTimeLoadingSculpties", base_sessionp->mStartTimeLoadingSculpties, current_sessionp->mStartTimeLoadingSculpties);		 +	compareTestResults(os, "TotalTimeLoadingSculpties", base_sessionp->mTotalTimeLoadingSculpties, current_sessionp->mTotalTimeLoadingSculpties); -	compareTestResults(os, "TotalBytesLoaded", base_sessionp->mTotalBytesLoaded, current_sessionp->mTotalBytesLoaded) ; -	compareTestResults(os, "TotalBytesLoadedFromCache", base_sessionp->mTotalBytesLoadedFromCache, current_sessionp->mTotalBytesLoadedFromCache) ; -	compareTestResults(os, "TotalBytesLoadedForLargeImage", base_sessionp->mTotalBytesLoadedForLargeImage, current_sessionp->mTotalBytesLoadedForLargeImage) ; -	compareTestResults(os, "TotalBytesLoadedForSculpties", base_sessionp->mTotalBytesLoadedForSculpties, current_sessionp->mTotalBytesLoadedForSculpties) ; +	compareTestResults(os, "TotalBytesLoaded", base_sessionp->mTotalBytesLoaded, current_sessionp->mTotalBytesLoaded); +	compareTestResults(os, "TotalBytesLoadedFromCache", base_sessionp->mTotalBytesLoadedFromCache, current_sessionp->mTotalBytesLoadedFromCache); +	compareTestResults(os, "TotalBytesLoadedForLargeImage", base_sessionp->mTotalBytesLoadedForLargeImage, current_sessionp->mTotalBytesLoadedForLargeImage); +	compareTestResults(os, "TotalBytesLoadedForSculpties", base_sessionp->mTotalBytesLoadedForSculpties, current_sessionp->mTotalBytesLoadedForSculpties); -	*os << llformat("InstantResults\n") ; -	S32 size = llmin(base_sessionp->mInstantPerformanceListCounter, current_sessionp->mInstantPerformanceListCounter) ; -	for(S32 i = 0 ; i < size ; i++) +	*os << llformat("InstantResults\n"); +	S32 size = llmin(base_sessionp->mInstantPerformanceListCounter, current_sessionp->mInstantPerformanceListCounter); +	for(S32 i = 0; i < size; i++)  	{ -		*os << llformat("Time(B-T)-%.4f-%.4f\n", base_sessionp->mInstantPerformanceList[i].mTime, current_sessionp->mInstantPerformanceList[i].mTime) ; +		*os << llformat("Time(B-T)-%.4f-%.4f\n", base_sessionp->mInstantPerformanceList[i].mTime, current_sessionp->mInstantPerformanceList[i].mTime);  		compareTestResults(os, "AverageBytesUsedPerSecond", base_sessionp->mInstantPerformanceList[i].mAverageBytesUsedPerSecond, -			current_sessionp->mInstantPerformanceList[i].mAverageBytesUsedPerSecond) ; +			current_sessionp->mInstantPerformanceList[i].mAverageBytesUsedPerSecond);  		compareTestResults(os, "AverageBytesUsedForLargeImagePerSecond", base_sessionp->mInstantPerformanceList[i].mAverageBytesUsedForLargeImagePerSecond, -			current_sessionp->mInstantPerformanceList[i].mAverageBytesUsedForLargeImagePerSecond) ; +			current_sessionp->mInstantPerformanceList[i].mAverageBytesUsedForLargeImagePerSecond);  		compareTestResults(os, "AveragePercentageBytesUsedPerSecond", base_sessionp->mInstantPerformanceList[i].mAveragePercentageBytesUsedPerSecond, -			current_sessionp->mInstantPerformanceList[i].mAveragePercentageBytesUsedPerSecond) ; +			current_sessionp->mInstantPerformanceList[i].mAveragePercentageBytesUsedPerSecond);  	}  	if(size < base_sessionp->mInstantPerformanceListCounter)  	{ -		for(S32 i = size ; i < base_sessionp->mInstantPerformanceListCounter ; i++) +		for(S32 i = size; i < base_sessionp->mInstantPerformanceListCounter; i++)  		{ -			*os << llformat("Time(B-T)-%.4f- \n", base_sessionp->mInstantPerformanceList[i].mTime) ; +			*os << llformat("Time(B-T)-%.4f- \n", base_sessionp->mInstantPerformanceList[i].mTime); -			*os << llformat(", AverageBytesUsedPerSecond, %d, N/A \n", base_sessionp->mInstantPerformanceList[i].mAverageBytesUsedPerSecond) ; -			*os << llformat(", AverageBytesUsedForLargeImagePerSecond, %d, N/A \n", base_sessionp->mInstantPerformanceList[i].mAverageBytesUsedForLargeImagePerSecond) ;				 -			*os << llformat(", AveragePercentageBytesUsedPerSecond, %.4f, N/A \n", base_sessionp->mInstantPerformanceList[i].mAveragePercentageBytesUsedPerSecond) ;			 +			*os << llformat(", AverageBytesUsedPerSecond, %d, N/A \n", base_sessionp->mInstantPerformanceList[i].mAverageBytesUsedPerSecond); +			*os << llformat(", AverageBytesUsedForLargeImagePerSecond, %d, N/A \n", base_sessionp->mInstantPerformanceList[i].mAverageBytesUsedForLargeImagePerSecond);				 +			*os << llformat(", AveragePercentageBytesUsedPerSecond, %.4f, N/A \n", base_sessionp->mInstantPerformanceList[i].mAveragePercentageBytesUsedPerSecond);			  		}  	}  	else if(size < current_sessionp->mInstantPerformanceListCounter)  	{ -		for(S32 i = size ; i < current_sessionp->mInstantPerformanceListCounter ; i++) +		for(S32 i = size; i < current_sessionp->mInstantPerformanceListCounter; i++)  		{ -			*os << llformat("Time(B-T)- -%.4f\n", current_sessionp->mInstantPerformanceList[i].mTime) ; +			*os << llformat("Time(B-T)- -%.4f\n", current_sessionp->mInstantPerformanceList[i].mTime); -			*os << llformat(", AverageBytesUsedPerSecond, N/A, %d\n", current_sessionp->mInstantPerformanceList[i].mAverageBytesUsedPerSecond) ; -			*os << llformat(", AverageBytesUsedForLargeImagePerSecond, N/A, %d\n", current_sessionp->mInstantPerformanceList[i].mAverageBytesUsedForLargeImagePerSecond) ;				 -			*os << llformat(", AveragePercentageBytesUsedPerSecond, N/A, %.4f\n", current_sessionp->mInstantPerformanceList[i].mAveragePercentageBytesUsedPerSecond) ;			 +			*os << llformat(", AverageBytesUsedPerSecond, N/A, %d\n", current_sessionp->mInstantPerformanceList[i].mAverageBytesUsedPerSecond); +			*os << llformat(", AverageBytesUsedForLargeImagePerSecond, N/A, %d\n", current_sessionp->mInstantPerformanceList[i].mAverageBytesUsedForLargeImagePerSecond);				 +			*os << llformat(", AveragePercentageBytesUsedPerSecond, N/A, %.4f\n", current_sessionp->mInstantPerformanceList[i].mAveragePercentageBytesUsedPerSecond);			  		}  	}  } @@ -3781,144 +3781,144 @@ void LLTexturePipelineTester::compareTestSessions(std::ofstream* os)  //virtual   LLMetricPerformanceTesterWithSession::LLTestSession* LLTexturePipelineTester::loadTestSession(LLSD* log)  { -	LLTexturePipelineTester::LLTextureTestSession* sessionp = new LLTexturePipelineTester::LLTextureTestSession() ; +	LLTexturePipelineTester::LLTextureTestSession* sessionp = new LLTexturePipelineTester::LLTextureTestSession();  	if(!sessionp)  	{ -		return NULL ; +		return NULL;  	} -	F32 total_fetching_time = 0.f ; -	F32 total_gray_time = 0.f ; -	F32 total_stablizing_time = 0.f ; -	F32 total_loading_sculpties_time = 0.f ; - -	F32 start_fetching_time = -1.f ; -	F32 start_fetching_sculpties_time = 0.f ; - -	F32 last_time = 0.0f ; -	S32 frame_count = 0 ; - -	sessionp->mInstantPerformanceListCounter = 0 ; -	sessionp->mInstantPerformanceList.resize(128) ; -	sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedPerSecond = 0 ; -	sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedForLargeImagePerSecond = 0 ; -	sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAveragePercentageBytesUsedPerSecond = 0.f ; -	sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mTime = 0.f ; +	F32 total_fetching_time = 0.f; +	F32 total_gray_time = 0.f; +	F32 total_stablizing_time = 0.f; +	F32 total_loading_sculpties_time = 0.f; + +	F32 start_fetching_time = -1.f; +	F32 start_fetching_sculpties_time = 0.f; + +	F32 last_time = 0.0f; +	S32 frame_count = 0; + +	sessionp->mInstantPerformanceListCounter = 0; +	sessionp->mInstantPerformanceList.resize(128); +	sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedPerSecond = 0; +	sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedForLargeImagePerSecond = 0; +	sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAveragePercentageBytesUsedPerSecond = 0.f; +	sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mTime = 0.f;  	//load a session  	std::string currentLabel = getCurrentLabelName(); -	BOOL in_log = (*log).has(currentLabel) ; +	BOOL in_log = (*log).has(currentLabel);  	while (in_log)  	{ -		LLSD::String label = currentLabel ;		 +		LLSD::String label = currentLabel;		  		if(sessionp->mInstantPerformanceListCounter >= (S32)sessionp->mInstantPerformanceList.size())  		{ -			sessionp->mInstantPerformanceList.resize(sessionp->mInstantPerformanceListCounter + 128) ; +			sessionp->mInstantPerformanceList.resize(sessionp->mInstantPerformanceListCounter + 128);  		}  		//time -		F32 start_time = (*log)[label]["StartFetchingTime"].asReal() ; -		F32 cur_time   = (*log)[label]["Time"].asReal() ; +		F32 start_time = (*log)[label]["StartFetchingTime"].asReal(); +		F32 cur_time   = (*log)[label]["Time"].asReal();  		if(start_time - start_fetching_time > F_ALMOST_ZERO) //fetching has paused for a while  		{ -			sessionp->mTotalFetchingTime += total_fetching_time ; -			sessionp->mTotalGrayTime += total_gray_time ; -			sessionp->mTotalStablizingTime += total_stablizing_time ; +			sessionp->mTotalFetchingTime += total_fetching_time; +			sessionp->mTotalGrayTime += total_gray_time; +			sessionp->mTotalStablizingTime += total_stablizing_time; -			sessionp->mStartTimeLoadingSculpties = start_fetching_sculpties_time ;  -			sessionp->mTotalTimeLoadingSculpties += total_loading_sculpties_time ; +			sessionp->mStartTimeLoadingSculpties = start_fetching_sculpties_time;  +			sessionp->mTotalTimeLoadingSculpties += total_loading_sculpties_time; -			start_fetching_time = start_time ; -			total_fetching_time = 0.0f ; -			total_gray_time = 0.f ; -			total_stablizing_time = 0.f ; -			total_loading_sculpties_time = 0.f ; +			start_fetching_time = start_time; +			total_fetching_time = 0.0f; +			total_gray_time = 0.f; +			total_stablizing_time = 0.f; +			total_loading_sculpties_time = 0.f;  		}  		else  		{ -			total_fetching_time = cur_time - start_time ; -			total_gray_time = (*log)[label]["TotalGrayTime"].asReal() ; -			total_stablizing_time = (*log)[label]["TotalStablizingTime"].asReal() ; +			total_fetching_time = cur_time - start_time; +			total_gray_time = (*log)[label]["TotalGrayTime"].asReal(); +			total_stablizing_time = (*log)[label]["TotalStablizingTime"].asReal(); -			total_loading_sculpties_time = (*log)[label]["EndTimeLoadingSculpties"].asReal() - (*log)[label]["StartTimeLoadingSculpties"].asReal() ; +			total_loading_sculpties_time = (*log)[label]["EndTimeLoadingSculpties"].asReal() - (*log)[label]["StartTimeLoadingSculpties"].asReal();  			if(start_fetching_sculpties_time < 0.f && total_loading_sculpties_time > 0.f)  			{ -				start_fetching_sculpties_time = (*log)[label]["StartTimeLoadingSculpties"].asReal() ; +				start_fetching_sculpties_time = (*log)[label]["StartTimeLoadingSculpties"].asReal();  			}			  		}  		//total loaded bytes -		sessionp->mTotalBytesLoaded = (*log)[label]["TotalBytesLoaded"].asInteger() ;  -		sessionp->mTotalBytesLoadedFromCache = (*log)[label]["TotalBytesLoadedFromCache"].asInteger() ; -		sessionp->mTotalBytesLoadedForLargeImage = (*log)[label]["TotalBytesLoadedForLargeImage"].asInteger() ; -		sessionp->mTotalBytesLoadedForSculpties = (*log)[label]["TotalBytesLoadedForSculpties"].asInteger() ;  +		sessionp->mTotalBytesLoaded = (*log)[label]["TotalBytesLoaded"].asInteger();  +		sessionp->mTotalBytesLoadedFromCache = (*log)[label]["TotalBytesLoadedFromCache"].asInteger(); +		sessionp->mTotalBytesLoadedForLargeImage = (*log)[label]["TotalBytesLoadedForLargeImage"].asInteger(); +		sessionp->mTotalBytesLoadedForSculpties = (*log)[label]["TotalBytesLoadedForSculpties"].asInteger();   		//instant metrics			  		sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedPerSecond += -			(*log)[label]["TotalBytesBound"].asInteger() ; +			(*log)[label]["TotalBytesBound"].asInteger();  		sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedForLargeImagePerSecond += -			(*log)[label]["TotalBytesBoundForLargeImage"].asInteger() ; +			(*log)[label]["TotalBytesBoundForLargeImage"].asInteger();  		sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAveragePercentageBytesUsedPerSecond += -			(*log)[label]["PercentageBytesBound"].asReal() ; -		frame_count++ ; +			(*log)[label]["PercentageBytesBound"].asReal(); +		frame_count++;  		if(cur_time - last_time >= 1.0f)  		{ -			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedPerSecond /= frame_count ; -			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedForLargeImagePerSecond /= frame_count ; -			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAveragePercentageBytesUsedPerSecond /= frame_count ; -			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mTime = last_time ; +			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedPerSecond /= frame_count; +			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedForLargeImagePerSecond /= frame_count; +			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAveragePercentageBytesUsedPerSecond /= frame_count; +			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mTime = last_time; -			frame_count = 0 ; -			last_time = cur_time ; -			sessionp->mInstantPerformanceListCounter++ ; -			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedPerSecond = 0 ; -			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedForLargeImagePerSecond = 0 ; -			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAveragePercentageBytesUsedPerSecond = 0.f ; -			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mTime = 0.f ; +			frame_count = 0; +			last_time = cur_time; +			sessionp->mInstantPerformanceListCounter++; +			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedPerSecond = 0; +			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAverageBytesUsedForLargeImagePerSecond = 0; +			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mAveragePercentageBytesUsedPerSecond = 0.f; +			sessionp->mInstantPerformanceList[sessionp->mInstantPerformanceListCounter].mTime = 0.f;  		}  		// Next label -		incrementCurrentCount() ; +		incrementCurrentCount();  		currentLabel = getCurrentLabelName(); -		in_log = (*log).has(currentLabel) ; +		in_log = (*log).has(currentLabel);  	} -	sessionp->mTotalFetchingTime += total_fetching_time ; -	sessionp->mTotalGrayTime += total_gray_time ; -	sessionp->mTotalStablizingTime += total_stablizing_time ; +	sessionp->mTotalFetchingTime += total_fetching_time; +	sessionp->mTotalGrayTime += total_gray_time; +	sessionp->mTotalStablizingTime += total_stablizing_time;  	if(sessionp->mStartTimeLoadingSculpties < 0.f)  	{ -		sessionp->mStartTimeLoadingSculpties = start_fetching_sculpties_time ;  +		sessionp->mStartTimeLoadingSculpties = start_fetching_sculpties_time;   	} -	sessionp->mTotalTimeLoadingSculpties += total_loading_sculpties_time ; +	sessionp->mTotalTimeLoadingSculpties += total_loading_sculpties_time;  	return sessionp;  }  LLTexturePipelineTester::LLTextureTestSession::LLTextureTestSession()   { -	reset() ; +	reset();  }  LLTexturePipelineTester::LLTextureTestSession::~LLTextureTestSession()   {  }  void LLTexturePipelineTester::LLTextureTestSession::reset()   { -	mTotalFetchingTime = 0.0f ; +	mTotalFetchingTime = 0.0f; -	mTotalGrayTime = 0.0f ; -	mTotalStablizingTime = 0.0f ; +	mTotalGrayTime = 0.0f; +	mTotalStablizingTime = 0.0f; -	mStartTimeLoadingSculpties = 0.0f ;  -	mTotalTimeLoadingSculpties = 0.0f ; +	mStartTimeLoadingSculpties = 0.0f;  +	mTotalTimeLoadingSculpties = 0.0f; -	mTotalBytesLoaded = 0 ;  -	mTotalBytesLoadedFromCache = 0 ; -	mTotalBytesLoadedForLargeImage = 0 ; -	mTotalBytesLoadedForSculpties = 0 ;  +	mTotalBytesLoaded = 0;  +	mTotalBytesLoadedFromCache = 0; +	mTotalBytesLoadedForLargeImage = 0; +	mTotalBytesLoadedForSculpties = 0;  -	mInstantPerformanceListCounter = 0 ; +	mInstantPerformanceListCounter = 0;  }  //----------------------------------------------------------------------------------------------  //end of LLTexturePipelineTester diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index 9a00ccd8c6..b12b988513 100755 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -38,8 +38,8 @@  #include <map>  #include <list> -extern const S32Mibibytes gMinVideoRam; -extern const S32Mibibytes gMaxVideoRam; +extern const S32Megabytes gMinVideoRam; +extern const S32Megabytes gMaxVideoRam;  class LLImageGL ;  class LLImageRaw; @@ -207,8 +207,8 @@ public:  	static F32 sDesiredDiscardScale;  	static S32Bytes sBoundTextureMemory;  	static S32Bytes sTotalTextureMemory; -	static S32Mibibytes sMaxBoundTextureMem; -	static S32Mibibytes sMaxTotalTextureMem; +	static S32Megabytes sMaxBoundTextureMem; +	static S32Megabytes sMaxTotalTextureMem;  	static S32Bytes sMaxDesiredTextureMem ;  	static S8  sCameraMovingDiscardBias;  	static F32 sCameraMovingBias; @@ -690,18 +690,18 @@ private:  private:  	BOOL mUsingDefaultTexture;            //if set, some textures are still gray. -	U32 mTotalBytesUsed ;                     //total bytes of textures bound/used for the current frame. -	U32 mTotalBytesUsedForLargeImage ;        //total bytes of textures bound/used for the current frame for images larger than 256 * 256. -	U32 mLastTotalBytesUsed ;                 //total bytes of textures bound/used for the previous frame. -	U32 mLastTotalBytesUsedForLargeImage ;    //total bytes of textures bound/used for the previous frame for images larger than 256 * 256. +	U32Bytes mTotalBytesUsed ;                     //total bytes of textures bound/used for the current frame. +	U32Bytes mTotalBytesUsedForLargeImage ;        //total bytes of textures bound/used for the current frame for images larger than 256 * 256. +	U32Bytes mLastTotalBytesUsed ;                 //total bytes of textures bound/used for the previous frame. +	U32Bytes mLastTotalBytesUsedForLargeImage ;    //total bytes of textures bound/used for the previous frame for images larger than 256 * 256.  	//  	//data size  	// -	U32 mTotalBytesLoaded ;               //total bytes fetched by texture pipeline -	U32 mTotalBytesLoadedFromCache ;      //total bytes fetched by texture pipeline from local cache	 -	U32 mTotalBytesLoadedForLargeImage ;  //total bytes fetched by texture pipeline for images larger than 256 * 256.  -	U32 mTotalBytesLoadedForSculpties ;   //total bytes fetched by texture pipeline for sculpties +	U32Bytes mTotalBytesLoaded ;               //total bytes fetched by texture pipeline +	U32Bytes mTotalBytesLoadedFromCache ;      //total bytes fetched by texture pipeline from local cache	 +	U32Bytes mTotalBytesLoadedForLargeImage ;  //total bytes fetched by texture pipeline for images larger than 256 * 256.  +	U32Bytes mTotalBytesLoadedForSculpties ;   //total bytes fetched by texture pipeline for sculpties  	//  	//time diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 046dfd6eaf..cb7ea1f637 100755 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -86,11 +86,11 @@ void LLViewerTextureList::init()  	mInitialized = TRUE ;  	sNumImages = 0;  	mUpdateStats = TRUE; -	mMaxResidentTexMemInMegaBytes = 0; -	mMaxTotalTextureMemInMegaBytes = 0 ; +	mMaxResidentTexMemInMegaBytes = (U32Bytes)0; +	mMaxTotalTextureMemInMegaBytes = (U32Bytes)0;  	// Update how much texture RAM we're allowed to use. -	updateMaxResidentTexMem(S32Mibibytes(0)); // 0 = use current +	updateMaxResidentTexMem(S32Megabytes(0)); // 0 = use current  	doPreloadImages();  } @@ -663,7 +663,7 @@ void LLViewerTextureList::updateImages(F32 max_time)  	}  	cleared = FALSE; -	LLAppViewer::getTextureFetch()->setTextureBandwidth(LLTrace::get_frame_recording().getPeriodMeanPerSec(LLStatViewer::TEXTURE_NETWORK_DATA_RECEIVED)); +	LLAppViewer::getTextureFetch()->setTextureBandwidth(LLTrace::get_frame_recording().getPeriodMeanPerSec(LLStatViewer::TEXTURE_NETWORK_DATA_RECEIVED).value());  	{  		using namespace LLStatViewer; @@ -1237,23 +1237,23 @@ const S32 MIN_VIDEO_RAM = 32;  const S32 MAX_VIDEO_RAM = 512; // 512MB max for performance reasons.  // Returns min setting for TextureMemory (in MB) -S32Mibibytes LLViewerTextureList::getMinVideoRamSetting() +S32Megabytes LLViewerTextureList::getMinVideoRamSetting()  { -	S32Mibibytes system_ram = gSysMemory.getPhysicalMemoryClamped(); +	S32Megabytes system_ram = gSysMemory.getPhysicalMemoryClamped();  	//min texture mem sets to 64M if total physical mem is more than 1.5GB -	return (system_ram > S32Mibibytes(1500)) ? S32Mibibytes(64) : gMinVideoRam ; +	return (system_ram > S32Megabytes(1500)) ? S32Megabytes(64) : gMinVideoRam ;  }  //static  // Returns max setting for TextureMemory (in MB) -S32Mibibytes LLViewerTextureList::getMaxVideoRamSetting(bool get_recommended) +S32Megabytes LLViewerTextureList::getMaxVideoRamSetting(bool get_recommended)  { -	S32Mibibytes max_texmem; +	S32Megabytes max_texmem;  	if (gGLManager.mVRAM != 0)  	{  		// Treat any card with < 32 MB (shudder) as having 32 MB  		//  - it's going to be swapping constantly regardless -		S32Mibibytes max_vram(gGLManager.mVRAM); +		S32Megabytes max_vram(gGLManager.mVRAM);  		if(gGLManager.mIsATI)  		{ @@ -1270,21 +1270,21 @@ S32Mibibytes LLViewerTextureList::getMaxVideoRamSetting(bool get_recommended)  	{  		if (!get_recommended)  		{ -			max_texmem = 512; +			max_texmem = (S32Megabytes)512;  		}  		else if (gSavedSettings.getBOOL("NoHardwareProbe")) //did not do hardware detection at startup  		{ -			max_texmem = 512; +			max_texmem = (S32Megabytes)512;  		}  		else  		{ -			max_texmem = 128; +			max_texmem = (S32Megabytes)128;  		}  		LL_WARNS() << "VRAM amount not detected, defaulting to " << max_texmem << " MB" << LL_ENDL;  	} -	S32Mibibytes system_ram = gSysMemory.getPhysicalMemoryClamped(); // In MB +	S32Megabytes system_ram = gSysMemory.getPhysicalMemoryClamped(); // In MB  	//LL_INFOS() << "*** DETECTED " << system_ram << " MB of system memory." << LL_ENDL;  	if (get_recommended)  		max_texmem = llmin(max_texmem, system_ram/2); @@ -1296,25 +1296,25 @@ S32Mibibytes LLViewerTextureList::getMaxVideoRamSetting(bool get_recommended)  	return max_texmem;  } -const S32Mibibytes VIDEO_CARD_FRAMEBUFFER_MEM(12); -const S32Mibibytes MIN_MEM_FOR_NON_TEXTURE(512); -void LLViewerTextureList::updateMaxResidentTexMem(S32Mibibytes mem) +const S32Megabytes VIDEO_CARD_FRAMEBUFFER_MEM(12); +const S32Megabytes MIN_MEM_FOR_NON_TEXTURE(512); +void LLViewerTextureList::updateMaxResidentTexMem(S32Megabytes mem)  {  	// Initialize the image pipeline VRAM settings -	S32Mibibytes cur_mem(gSavedSettings.getS32("TextureMemory")); +	S32Megabytes cur_mem(gSavedSettings.getS32("TextureMemory"));  	F32 mem_multiplier = gSavedSettings.getF32("RenderTextureMemoryMultiple"); -	S32Mibibytes default_mem(getMaxVideoRamSetting(true)); // recommended default -	if (mem == 0) +	S32Megabytes default_mem(getMaxVideoRamSetting(true)); // recommended default +	if (mem == (S32Bytes)0)  	{ -		mem = cur_mem > 0 ? cur_mem : default_mem; +		mem = cur_mem > (S32Bytes)0 ? cur_mem : default_mem;  	} -	else if (mem < 0) +	else if (mem < (S32Bytes)0)  	{  		mem = default_mem;  	}  	// limit the texture memory to a multiple of the default if we've found some cards to behave poorly otherwise -	mem = llmin(mem, S32Mibibytes(mem_multiplier * (F32Mibibytes)default_mem)); +	mem = llmin(mem, S32Megabytes(mem_multiplier * (F32Megabytes)default_mem));  	mem = llclamp(mem, getMinVideoRamSetting(), getMaxVideoRamSetting());  	if (mem != cur_mem) @@ -1326,23 +1326,23 @@ void LLViewerTextureList::updateMaxResidentTexMem(S32Mibibytes mem)  	// TODO: set available resident texture mem based on use by other subsystems  	// currently max(12MB, VRAM/4) assumed... -	S32Mibibytes vb_mem = mem; -	S32Mibibytes fb_mem = llmax(VIDEO_CARD_FRAMEBUFFER_MEM, vb_mem/4); +	S32Megabytes vb_mem = mem; +	S32Megabytes fb_mem = llmax(VIDEO_CARD_FRAMEBUFFER_MEM, vb_mem/4);  	mMaxResidentTexMemInMegaBytes = (vb_mem - fb_mem) ; //in MB  	mMaxTotalTextureMemInMegaBytes = mMaxResidentTexMemInMegaBytes * 2; -	if (mMaxResidentTexMemInMegaBytes > 640) +	if (mMaxResidentTexMemInMegaBytes > (S32Megabytes)640)  	{  		mMaxTotalTextureMemInMegaBytes -= (mMaxResidentTexMemInMegaBytes / 4);  	}  	//system mem -	S32Mibibytes system_ram = gSysMemory.getPhysicalMemoryClamped(); +	S32Megabytes system_ram = gSysMemory.getPhysicalMemoryClamped();  	//minimum memory reserved for non-texture use.  	//if system_raw >= 1GB, reserve at least 512MB for non-texture use;  	//otherwise reserve half of the system_ram for non-texture use. -	S32Mibibytes min_non_texture_mem = llmin(system_ram / 2, MIN_MEM_FOR_NON_TEXTURE) ;  +	S32Megabytes min_non_texture_mem = llmin(system_ram / 2, MIN_MEM_FOR_NON_TEXTURE) ;   	if (mMaxTotalTextureMemInMegaBytes > system_ram - min_non_texture_mem)  	{ @@ -1370,16 +1370,16 @@ void LLViewerTextureList::receiveImageHeader(LLMessageSystem *msg, void **user_d  	char ip_string[256];  	u32_to_ip_string(msg->getSenderIP(),ip_string); -	U32 received_size ; +	U32Bytes received_size ;  	if (msg->getReceiveCompressedSize())  	{ -		received_size = msg->getReceiveCompressedSize() ;		 +		received_size = (U32Bytes)msg->getReceiveCompressedSize() ;		  	}  	else  	{ -		received_size = msg->getReceiveSize() ;		 +		received_size = (U32Bytes)msg->getReceiveSize() ;		  	} -	add(LLStatViewer::TEXTURE_NETWORK_DATA_RECEIVED, F64Bytes(received_size)); +	add(LLStatViewer::TEXTURE_NETWORK_DATA_RECEIVED, received_size);  	add(LLStatViewer::TEXTURE_PACKETS, 1);  	U8 codec; @@ -1443,14 +1443,14 @@ void LLViewerTextureList::receiveImagePacket(LLMessageSystem *msg, void **user_d  	char ip_string[256];  	u32_to_ip_string(msg->getSenderIP(),ip_string); -	U32 received_size ; +	U32Bytes received_size ;  	if (msg->getReceiveCompressedSize())  	{ -		received_size = msg->getReceiveCompressedSize() ; +		received_size = (U32Bytes)msg->getReceiveCompressedSize() ;  	}  	else  	{ -		received_size = msg->getReceiveSize() ;		 +		received_size = (U32Bytes)msg->getReceiveSize() ;		  	}  	add(LLStatViewer::TEXTURE_NETWORK_DATA_RECEIVED, F64Bytes(received_size)); @@ -1517,24 +1517,6 @@ void LLViewerTextureList::processImageNotInDatabase(LLMessageSystem *msg,void **  	}  } -/////////////////////////////////////////////////////////////////////////////// - -//static -const LLUnitImplicit<F32, LLUnits::Mibibytes> SIXTEEN_MEG(16); -S32Bytes LLViewerTextureList::calcMaxTextureRAM() -{ -	// Decide the maximum amount of RAM we should allow the user to allocate to texture cache -	LLMemoryInfo memory_info; -	LLUnitImplicit<F32, LLUnits::Mibibytes> available_memory = memory_info.getPhysicalMemoryClamped(); -	 -	// as originally written, this code was a no-op.  Not sure of the side effect of making it actually work -	/*clamp_rescale(available_memory.value(), -				  (SIXTEEN_MEG * 16), -				  (F32Mibibytes)U32_MAX, -				  (SIXTEEN_MEG * 4), -				  (F32Mibibytes)(U32_MAX >> 1));*/ -	return available_memory; -}  /////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index 9817fea811..835d750d94 100755 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -71,7 +71,6 @@ public:  	static BOOL createUploadFile(const std::string& filename, const std::string& out_filename, const U8 codec);  	static LLPointer<LLImageJ2C> convertToUploadFile(LLPointer<LLImageRaw> raw_image);  	static void processImageNotInDatabase( LLMessageSystem *msg, void **user_data ); -	static S32Bytes calcMaxTextureRAM();  	static void receiveImageHeader(LLMessageSystem *msg, void **user_data);  	static void receiveImagePacket(LLMessageSystem *msg, void **user_data); @@ -101,11 +100,11 @@ public:  	void setUpdateStats(BOOL b)			{ mUpdateStats = b; } -	S32Mibibytes	getMaxResidentTexMem() const	{ return mMaxResidentTexMemInMegaBytes; } -	S32Mibibytes getMaxTotalTextureMem() const   { return mMaxTotalTextureMemInMegaBytes;} +	S32Megabytes	getMaxResidentTexMem() const	{ return mMaxResidentTexMemInMegaBytes; } +	S32Megabytes getMaxTotalTextureMem() const   { return mMaxTotalTextureMemInMegaBytes;}  	S32 getNumImages()					{ return mImageList.size(); } -	void updateMaxResidentTexMem(S32Mibibytes mem); +	void updateMaxResidentTexMem(S32Megabytes mem);  	void doPreloadImages();  	void doPrefetchImages(); @@ -113,8 +112,8 @@ public:  	void clearFetchingRequests();  	void setDebugFetching(LLViewerFetchedTexture* tex, S32 debug_level); -	static S32Mibibytes getMinVideoRamSetting(); -	static S32Mibibytes getMaxVideoRamSetting(bool get_recommended = false); +	static S32Megabytes getMinVideoRamSetting(); +	static S32Megabytes getMaxVideoRamSetting(bool get_recommended = false);  private:  	void updateImagesDecodePriorities(); @@ -200,8 +199,8 @@ private:  	BOOL mInitialized ;  	BOOL mUpdateStats; -	S32Mibibytes	mMaxResidentTexMemInMegaBytes; -	S32Mibibytes mMaxTotalTextureMemInMegaBytes; +	S32Megabytes	mMaxResidentTexMemInMegaBytes; +	S32Megabytes mMaxTotalTextureMemInMegaBytes;  	LLFrameTimer mForceDecodeTimer;  private: diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 1e60b59932..5509c6e0e5 100755 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -736,9 +736,9 @@ public:  			U32 old_y = ypos ;  			for(S32 i = LLViewerTexture::BOOST_NONE; i < LLViewerTexture::MAX_GL_IMAGE_CATEGORY; i++)  			{ -				if(gTotalTextureBytesPerBoostLevel[i] > 0) +				if(gTotalTextureBytesPerBoostLevel[i] > (S32Bytes)0)  				{ -					addText(xpos, ypos, llformat("Boost_Level %d:  %.3f MB", i, F32Mibibytes(gTotalTextureBytesPerBoostLevel[i]).value())); +					addText(xpos, ypos, llformat("Boost_Level %d:  %.3f MB", i, F32Megabytes(gTotalTextureBytesPerBoostLevel[i]).value()));  					ypos += y_inc;  				}  			} diff --git a/indra/newview/llvlmanager.cpp b/indra/newview/llvlmanager.cpp index 9b55bbf277..895ceed880 100755 --- a/indra/newview/llvlmanager.cpp +++ b/indra/newview/llvlmanager.cpp @@ -52,19 +52,19 @@ LLVLManager::~LLVLManager()  	mPacketData.clear();  } -void LLVLManager::addLayerData(LLVLData *vl_datap, const S32 mesg_size) +void LLVLManager::addLayerData(LLVLData *vl_datap, const S32Bytes mesg_size)  {  	if (LAND_LAYER_CODE == vl_datap->mType)  	{ -		mLandBits += mesg_size * 8; +		mLandBits += mesg_size;  	}  	else if (WIND_LAYER_CODE == vl_datap->mType)  	{ -		mWindBits += mesg_size * 8; +		mWindBits += mesg_size;  	}  	else if (CLOUD_LAYER_CODE == vl_datap->mType)  	{ -		mCloudBits += mesg_size * 8; +		mCloudBits += mesg_size;  	}  	else  	{ @@ -112,25 +112,25 @@ void LLVLManager::unpackData(const S32 num_packets)  void LLVLManager::resetBitCounts()  { -	mLandBits = mWindBits = mCloudBits = 0; +	mLandBits = mWindBits = mCloudBits = (S32Bits)0;  } -S32 LLVLManager::getLandBits() const +U32Bits LLVLManager::getLandBits() const  {  	return mLandBits;  } -S32 LLVLManager::getWindBits() const +U32Bits LLVLManager::getWindBits() const  {  	return mWindBits;  } -S32 LLVLManager::getCloudBits() const +U32Bits LLVLManager::getCloudBits() const  {  	return mCloudBits;  } -S32 LLVLManager::getTotalBytes() const +S32Bytes LLVLManager::getTotalBytes() const  {  	return mLandBits + mWindBits + mCloudBits;  } diff --git a/indra/newview/llvlmanager.h b/indra/newview/llvlmanager.h index 0733aebaae..5e7fadc522 100755 --- a/indra/newview/llvlmanager.h +++ b/indra/newview/llvlmanager.h @@ -39,15 +39,15 @@ class LLVLManager  public:  	~LLVLManager(); -	void addLayerData(LLVLData *vl_datap, const S32 mesg_size); +	void addLayerData(LLVLData *vl_datap, const S32Bytes mesg_size);  	void unpackData(const S32 num_packets = 10); -	S32 getTotalBytes() const; +	S32Bytes getTotalBytes() const; -	S32 getLandBits() const; -	S32 getWindBits() const; -	S32 getCloudBits() const; +	U32Bits getLandBits() const; +	U32Bits getWindBits() const; +	U32Bits getCloudBits() const;  	void resetBitCounts(); @@ -55,9 +55,9 @@ public:  protected:  	std::vector<LLVLData *> mPacketData; -	U32 mLandBits; -	U32 mWindBits; -	U32 mCloudBits; +	U32Bits mLandBits; +	U32Bits mWindBits; +	U32Bits mCloudBits;  };  class LLVLData diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 5971da95ce..724ba3c85e 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -4175,9 +4175,9 @@ std::string LLVOAvatar::bakedTextureOriginInfo()  	return result;  } -S32 LLVOAvatar::totalTextureMemForUUIDS(std::set<LLUUID>& ids) +S32Bytes LLVOAvatar::totalTextureMemForUUIDS(std::set<LLUUID>& ids)  { -	S32 result = 0; +	S32Bytes result(0);  	for (std::set<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); ++it)  	{  		LLViewerFetchedTexture *imagep = gTextureList.findImage(*it); @@ -4242,12 +4242,12 @@ void LLVOAvatar::collectTextureUUIDs(std::set<LLUUID>& ids)  void LLVOAvatar::releaseOldTextures()  { -	S32 current_texture_mem = 0; +	S32Bytes current_texture_mem;  	// Any textures that we used to be using but are no longer using should no longer be flagged as "NO_DELETE"  	std::set<LLUUID> baked_texture_ids;  	collectBakedTextureUUIDs(baked_texture_ids); -	S32 new_baked_mem = totalTextureMemForUUIDS(baked_texture_ids); +	S32Bytes new_baked_mem = totalTextureMemForUUIDS(baked_texture_ids);  	std::set<LLUUID> local_texture_ids;  	collectLocalTextureUUIDs(local_texture_ids); @@ -4256,7 +4256,7 @@ void LLVOAvatar::releaseOldTextures()  	std::set<LLUUID> new_texture_ids;  	new_texture_ids.insert(baked_texture_ids.begin(),baked_texture_ids.end());  	new_texture_ids.insert(local_texture_ids.begin(),local_texture_ids.end()); -	S32 new_total_mem = totalTextureMemForUUIDS(new_texture_ids); +	S32Bytes new_total_mem = totalTextureMemForUUIDS(new_texture_ids);  	//S32 old_total_mem = totalTextureMemForUUIDS(mTextureIDs);  	//LL_DEBUGS("Avatar") << getFullname() << " old_total_mem: " << old_total_mem << " new_total_mem (L/B): " << new_total_mem << " (" << new_local_mem <<", " << new_baked_mem << ")" << LL_ENDL;   diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 2c86ed63d1..b600d2a8f1 100755 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -128,29 +128,29 @@ protected:  public:  	/*virtual*/ void			updateGL();  	/*virtual*/ LLVOAvatar*		asAvatar(); -	virtual U32    	 	 		processUpdateMessage(LLMessageSystem *mesgsys, -													 void **user_data, -													 U32 block_num, -													 const EObjectUpdateType update_type, -													 LLDataPacker *dp); -	virtual void   	 	 		idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time); +	virtual U32    	 	 	processUpdateMessage(LLMessageSystem *mesgsys, +												void **user_data, +												U32 block_num, +												const EObjectUpdateType update_type, +												LLDataPacker *dp); +	virtual void   	 	 	idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time);  	/*virtual*/ BOOL   	 	 	updateLOD(); -	BOOL  	 	 	 	 		updateJointLODs(); -	void						updateLODRiggedAttachments( void ); +	BOOL  	 	 	 	 	updateJointLODs(); +	void					updateLODRiggedAttachments( void );  	/*virtual*/ BOOL   	 	 	isActive() const; // Whether this object needs to do an idleUpdate. -	S32 						totalTextureMemForUUIDS(std::set<LLUUID>& ids); -	bool 						allTexturesCompletelyDownloaded(std::set<LLUUID>& ids) const; -	bool 						allLocalTexturesCompletelyDownloaded() const; -	bool 						allBakedTexturesCompletelyDownloaded() const; -	void 						bakedTextureOriginCounts(S32 &sb_count, S32 &host_count, -														 S32 &both_count, S32 &neither_count); -	std::string 				bakedTextureOriginInfo(); -	void 						collectLocalTextureUUIDs(std::set<LLUUID>& ids) const; -	void 						collectBakedTextureUUIDs(std::set<LLUUID>& ids) const; -	void 						collectTextureUUIDs(std::set<LLUUID>& ids); -	void						releaseOldTextures(); +	S32Bytes				totalTextureMemForUUIDS(std::set<LLUUID>& ids); +	bool 					allTexturesCompletelyDownloaded(std::set<LLUUID>& ids) const; +	bool 					allLocalTexturesCompletelyDownloaded() const; +	bool 					allBakedTexturesCompletelyDownloaded() const; +	void 					bakedTextureOriginCounts(S32 &sb_count, S32 &host_count, +													 S32 &both_count, S32 &neither_count); +	std::string 			bakedTextureOriginInfo(); +	void 					collectLocalTextureUUIDs(std::set<LLUUID>& ids) const; +	void 					collectBakedTextureUUIDs(std::set<LLUUID>& ids) const; +	void 					collectTextureUUIDs(std::set<LLUUID>& ids); +	void					releaseOldTextures();  	/*virtual*/ void   	 	 	updateTextures(); -	LLViewerFetchedTexture*		getBakedTextureImage(const U8 te, const LLUUID& uuid); +	LLViewerFetchedTexture*	getBakedTextureImage(const U8 te, const LLUUID& uuid);  	/*virtual*/ S32    	 	 	setTETexture(const U8 te, const LLUUID& uuid); // If setting a baked texture, need to request it from a non-local sim.  	/*virtual*/ void   	 	 	onShift(const LLVector4a& shift_vector);  	/*virtual*/ U32    	 	 	getPartitionType() const; diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index db6d2d6fe9..e36bed3e5b 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -142,7 +142,7 @@ struct LocalTextureData  //-----------------------------------------------------------------------------  // Static Data  //----------------------------------------------------------------------------- -S32 LLVOAvatarSelf::sScratchTexBytes = 0; +S32Bytes LLVOAvatarSelf::sScratchTexBytes(0);  std::map< LLGLenum, LLGLuint*> LLVOAvatarSelf::sScratchTexNames; @@ -3067,13 +3067,13 @@ void LLVOAvatarSelf::deleteScratchTextures()  		stop_glerror();  	} -	if( sScratchTexBytes ) +	if( sScratchTexBytes.value() )  	{ -		LL_DEBUGS() << "Clearing Scratch Textures " << (sScratchTexBytes/1024) << "KB" << LL_ENDL; +		LL_DEBUGS() << "Clearing Scratch Textures " << (S32Kilobytes)sScratchTexBytes << LL_ENDL;  		delete_and_clear(sScratchTexNames);  		LLImageGL::sGlobalTextureMemory -= sScratchTexBytes; -		sScratchTexBytes = 0; +		sScratchTexBytes = S32Bytes(0);  	}  } diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index be98f8dfa9..9e9e2b61d7 100755 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -276,7 +276,7 @@ public:  public:  	static void		deleteScratchTextures();  private: -	static S32 		sScratchTexBytes; +	static S32Bytes sScratchTexBytes;  	static std::map< LLGLenum, LLGLuint*> sScratchTexNames;  /**                    Textures diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp index 1f346b2928..e226583097 100755 --- a/indra/newview/llvopartgroup.cpp +++ b/indra/newview/llvopartgroup.cpp @@ -46,7 +46,7 @@  const F32 MAX_PART_LIFETIME = 120.f; -extern LLUnitImplicit<U64, LLUnits::Microseconds> gFrameTime; +extern U64MicrosecondsImplicit gFrameTime;  LLPointer<LLVertexBuffer> LLVOPartGroup::sVB = NULL;  S32 LLVOPartGroup::sVBSlotFree[]; diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 9d727dafbe..2c160754a6 100755 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -727,7 +727,7 @@ void LLWorld::updateNetStats()  		regionp->updateNetStats();  		bits += regionp->mBitsReceived;  		packets += llfloor( regionp->mPacketsReceived ); -		regionp->mBitsReceived = 0.f; +		regionp->mBitsReceived = (F32Bits)0.f;  		regionp->mPacketsReceived = 0.f;  	} @@ -977,12 +977,12 @@ LLViewerTexture* LLWorld::getDefaultWaterTexture()  	return mDefaultWaterTexturep;  } -void LLWorld::setSpaceTimeUSec(const LLUnitImplicit<U64, LLUnits::Microseconds> space_time_usec) +void LLWorld::setSpaceTimeUSec(const U64MicrosecondsImplicit space_time_usec)  {  	mSpaceTimeUSec = space_time_usec;  } -LLUnitImplicit<U64, LLUnits::Microseconds> LLWorld::getSpaceTimeUSec() const +U64MicrosecondsImplicit LLWorld::getSpaceTimeUSec() const  {  	return mSpaceTimeUSec;  } diff --git a/indra/newview/llworld.h b/indra/newview/llworld.h index c74ac3fa6f..287e41d323 100755 --- a/indra/newview/llworld.h +++ b/indra/newview/llworld.h @@ -141,8 +141,8 @@ public:  	void waterHeightRegionInfo(std::string const& sim_name, F32 water_height);  	void shiftRegions(const LLVector3& offset); -	void setSpaceTimeUSec(const LLUnitImplicit<U64, LLUnits::Microseconds> space_time_usec); -	LLUnitImplicit<U64, LLUnits::Microseconds> getSpaceTimeUSec() const; +	void setSpaceTimeUSec(const U64MicrosecondsImplicit space_time_usec); +	U64MicrosecondsImplicit getSpaceTimeUSec() const;  	void getInfo(LLSD& info);  	U32  getNumOfActiveCachedObjects() const {return mNumOfActiveCachedObjects;} @@ -189,7 +189,7 @@ private:  	S32 mLastPacketsOut;  	S32 mLastPacketsLost;  	U32 mNumOfActiveCachedObjects; -	LLUnitImplicit<U64, LLUnits::Microseconds> mSpaceTimeUSec; +	U64MicrosecondsImplicit mSpaceTimeUSec;  	BOOL mClassicCloudsEnabled; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 8d70629206..7c74d4dcca 100755 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -3017,7 +3017,7 @@ void LLPipeline::updateGeom(F32 max_dtime)  	S32 count = 0; -	max_dtime = llmax(update_timer.getElapsedTimeF32()+0.001f, LLUnitImplicit<F32, LLUnits::Seconds>(max_dtime)); +	max_dtime = llmax(update_timer.getElapsedTimeF32()+0.001f, F32SecondsImplicit(max_dtime));  	LLSpatialGroup* last_group = NULL;  	LLSpatialBridge* last_bridge = NULL; | 
