diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llimage/llimage.cpp | 34 | ||||
| -rw-r--r-- | indra/llimage/llimage.h | 32 | ||||
| -rw-r--r-- | indra/llimage/llimagej2c.cpp | 4 | ||||
| -rw-r--r-- | indra/llrender/llrender2dutils.h | 1 | ||||
| -rw-r--r-- | indra/newview/llappviewer.cpp | 3 | 
5 files changed, 42 insertions, 32 deletions
| diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index 7a0c8cd8f5..aed8943439 100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -583,29 +583,39 @@ static void bilinear_scale(const U8 *src, U32 srcW, U32 srcH, U32 srcCh, U32 src  // LLImage  //--------------------------------------------------------------------------- -LLImage::LLImage(bool use_new_byte_range, S32 minimal_reverse_byte_range_percent) +//static +std::string LLImage::sLastErrorMessage; +LLMutex* LLImage::sMutex = NULL; +bool LLImage::sUseNewByteRange = false; +S32  LLImage::sMinimalReverseByteRangePercent = 75; + +//static +void LLImage::initClass(bool use_new_byte_range, S32 minimal_reverse_byte_range_percent)  { -    mMutex = new LLMutex(); -    mUseNewByteRange = use_new_byte_range; -    mMinimalReverseByteRangePercent = minimal_reverse_byte_range_percent; +	sUseNewByteRange = use_new_byte_range; +    sMinimalReverseByteRangePercent = minimal_reverse_byte_range_percent; +	sMutex = new LLMutex();  } -LLImage::~LLImage() +//static +void LLImage::cleanupClass()  { -    delete mMutex; -    mMutex = NULL; +	delete sMutex; +	sMutex = NULL;  } -const std::string& LLImage::getLastErrorMessage() +//static +const std::string& LLImage::getLastError()  {  	static const std::string noerr("No Error"); -	return mLastErrorMessage.empty() ? noerr : mLastErrorMessage; +	return sLastErrorMessage.empty() ? noerr : sLastErrorMessage;  } -void LLImage::setLastErrorMessage(const std::string& message) +//static +void LLImage::setLastError(const std::string& message)  { -	LLMutexLock m(mMutex); -	mLastErrorMessage = message; +	LLMutexLock m(sMutex); +	sLastErrorMessage = message;  }  //--------------------------------------------------------------------------- diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h index 9f8d061293..f66b1666d7 100644 --- a/indra/llimage/llimage.h +++ b/indra/llimage/llimage.h @@ -30,7 +30,6 @@  #include "lluuid.h"  #include "llstring.h"  #include "llpointer.h" -#include "llsingleton.h"  #include "lltrace.h"  const S32 MIN_IMAGE_MIP =  2; // 4x4, only used for expand/contract power of 2 @@ -88,26 +87,25 @@ typedef enum e_image_codec  //============================================================================  // library initialization class +// LLImage is frequently used in threads so do not convert it to LLSingleton -class LLImage : public LLParamSingleton<LLImage> +class LLImage  { -	LLSINGLETON(LLImage, bool use_new_byte_range = false, S32 minimal_reverse_byte_range_percent = 75); -	~LLImage();  public: +	static void initClass(bool use_new_byte_range = false, S32 minimal_reverse_byte_range_percent = 75); +	static void cleanupClass(); -	const std::string& getLastErrorMessage(); -	static const std::string& getLastError() { return getInstance()->getLastErrorMessage(); }; -	void setLastErrorMessage(const std::string& message); -	static void setLastError(const std::string& message) { getInstance()->setLastErrorMessage(message); } - -	bool useNewByteRange() { return mUseNewByteRange; } -	S32  getReverseByteRangePercent() { return mMinimalReverseByteRangePercent; } - -private: -	LLMutex* mMutex; -	std::string mLastErrorMessage; -	bool mUseNewByteRange; -	S32  mMinimalReverseByteRangePercent; +	static const std::string& getLastError(); +	static void setLastError(const std::string& message); +	 +	static bool useNewByteRange() { return sUseNewByteRange; } +	static S32  getReverseByteRangePercent() { return sMinimalReverseByteRangePercent; } +	 +protected: +	static LLMutex* sMutex; +	static std::string sLastErrorMessage; +	static bool sUseNewByteRange; +    static S32  sMinimalReverseByteRangePercent;  };  //============================================================================ diff --git a/indra/llimage/llimagej2c.cpp b/indra/llimage/llimagej2c.cpp index 71cab0554d..4bff21610f 100644 --- a/indra/llimage/llimagej2c.cpp +++ b/indra/llimage/llimagej2c.cpp @@ -281,7 +281,7 @@ S32 LLImageJ2C::calcDataSizeJ2C(S32 w, S32 h, S32 comp, S32 discard_level, F32 r  	S32 bytes;  	S32 new_bytes = (S32) (sqrt((F32)(w*h))*(F32)(comp)*rate*1000.f/layer_factor);  	S32 old_bytes = (S32)((F32)(w*h*comp)*rate); -	bytes = (LLImage::getInstance()->useNewByteRange() && (new_bytes < old_bytes) ? new_bytes : old_bytes); +	bytes = (LLImage::useNewByteRange() && (new_bytes < old_bytes) ? new_bytes : old_bytes);  	bytes = llmax(bytes, calcHeaderSizeJ2C());  	return bytes;  } @@ -322,7 +322,7 @@ S32 LLImageJ2C::calcDiscardLevelBytes(S32 bytes)  	{  		S32 bytes_needed = calcDataSize(discard_level);  		// Use TextureReverseByteRange percent (see settings.xml) of the optimal size to qualify as correct rendering for the given discard level -		if (bytes >= (bytes_needed*LLImage::getInstance()->getReverseByteRangePercent()/100)) +		if (bytes >= (bytes_needed*LLImage::getReverseByteRangePercent()/100))  		{  			break;  		} diff --git a/indra/llrender/llrender2dutils.h b/indra/llrender/llrender2dutils.h index 70ab006fd6..8c01784071 100644 --- a/indra/llrender/llrender2dutils.h +++ b/indra/llrender/llrender2dutils.h @@ -32,6 +32,7 @@  #include "llpointer.h"		// LLPointer<>  #include "llrect.h" +#include "llsingleton.h"  #include "llglslshader.h"  class LLColor4;  diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index da1a58efd9..e067ab6778 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2073,6 +2073,7 @@ bool LLAppViewer::cleanup()  	LLUIImageList::getInstance()->cleanUp();  	// This should eventually be done in LLAppViewer +	SUBSYSTEM_CLEANUP(LLImage);  	SUBSYSTEM_CLEANUP(LLVFSThread);  	SUBSYSTEM_CLEANUP(LLLFSThread); @@ -2182,7 +2183,7 @@ bool LLAppViewer::initThreads()  {  	static const bool enable_threads = true; -	LLImage::initParamSingleton(gSavedSettings.getBOOL("TextureNewByteRange"),gSavedSettings.getS32("TextureReverseByteRange")); +	LLImage::initClass(gSavedSettings.getBOOL("TextureNewByteRange"),gSavedSettings.getS32("TextureReverseByteRange"));  	LLVFSThread::initClass(enable_threads && false);  	LLLFSThread::initClass(enable_threads && false); | 
