diff options
Diffstat (limited to 'indra/llimage')
| -rw-r--r-- | indra/llimage/llimage.cpp | 11 | ||||
| -rw-r--r-- | indra/llimage/llimage.h | 4 | 
2 files changed, 14 insertions, 1 deletions
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index a88ac148ef..3f8d1baddd 100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -666,8 +666,17 @@ void LLImageRaw::fill( const LLColor4U& color )  	}  } +LLPointer<LLImageRaw> LLImageRaw::duplicate() +{ +	if(getNumRefs() < 2) +	{ +		return this; //nobody else refences to this image, no need to duplicate. +	} - +	//make a duplicate +	LLPointer<LLImageRaw> dup = new LLImageRaw(getData(), getWidth(), getHeight(), getComponents()); +	return dup;  +}  // Src and dst can be any size.  Src and dst can each have 3 or 4 components.  void LLImageRaw::copy(LLImageRaw* src) diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h index 6cb1226da0..1d56411ae8 100644 --- a/indra/llimage/llimage.h +++ b/indra/llimage/llimage.h @@ -30,6 +30,7 @@  #include "lluuid.h"  #include "llstring.h"  #include "llthread.h" +#include "llpointer.h"  const S32 MIN_IMAGE_MIP =  2; // 4x4, only used for expand/contract power of 2  const S32 MAX_IMAGE_MIP = 11; // 2048x2048 @@ -214,6 +215,9 @@ public:  	// Copy operations +	//duplicate this raw image if refCount > 1. +	LLPointer<LLImageRaw> duplicate(); +  	// Src and dst can be any size.  Src and dst can each have 3 or 4 components.  	void copy( LLImageRaw* src );  | 
