diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2022-06-13 15:18:14 -0400 | 
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2022-06-13 15:18:14 -0400 | 
| commit | 3b043d90b60eca17dfcc014b21c4c8fc5b432384 (patch) | |
| tree | 614d3ae0efdcbec1211d638e602cdb2d78aa8057 /indra | |
| parent | 64209ddeeafd944f82da6f13a6e790f9b542b3ff (diff) | |
SL-17483: Per review feedback, avoid LLPointer refcount twiddling
when passing LLPointers into functions. Only increment the refcount when
storing in new ImageRequest.
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llimage/llimageworker.cpp | 17 | ||||
| -rw-r--r-- | indra/llimage/llimageworker.h | 4 | 
2 files changed, 13 insertions, 8 deletions
| diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp index 3c21499673..0093958e6d 100644 --- a/indra/llimage/llimageworker.cpp +++ b/indra/llimage/llimageworker.cpp @@ -34,15 +34,17 @@  class ImageRequest  {  public: -	ImageRequest(LLPointer<LLImageFormatted> image, +	ImageRequest(const LLPointer<LLImageFormatted>& image,  				 S32 discard, BOOL needs_aux, -				 LLPointer<LLImageDecodeThread::Responder> responder); +				 const LLPointer<LLImageDecodeThread::Responder>& responder);  	virtual ~ImageRequest();  	/*virtual*/ bool processRequest();  	/*virtual*/ void finishRequest(bool completed);  private: +	// LLPointers stored in ImageRequest MUST be LLPointer instances rather +	// than references: we need to increment the refcount when storing these.  	// input  	LLPointer<LLImageFormatted> mFormattedImage;  	S32 mDiscardLevel; @@ -82,8 +84,11 @@ S32 LLImageDecodeThread::getPending()      return mThreadPool->getQueue().size();  } -LLImageDecodeThread::handle_t LLImageDecodeThread::decodeImage(LLPointer<LLImageFormatted> image,  -    S32 discard, BOOL needs_aux, LLPointer<LLImageDecodeThread::Responder> responder) +LLImageDecodeThread::handle_t LLImageDecodeThread::decodeImage( +    const LLPointer<LLImageFormatted>& image,  +    S32 discard, +    BOOL needs_aux, +    const LLPointer<LLImageDecodeThread::Responder>& responder)  {      LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE; @@ -113,9 +118,9 @@ LLImageDecodeThread::Responder::~Responder()  //---------------------------------------------------------------------------- -ImageRequest::ImageRequest(LLPointer<LLImageFormatted> image,  +ImageRequest::ImageRequest(const LLPointer<LLImageFormatted>& image,   							S32 discard, BOOL needs_aux, -							LLPointer<LLImageDecodeThread::Responder> responder) +							const LLPointer<LLImageDecodeThread::Responder>& responder)  	: mFormattedImage(image),  	  mDiscardLevel(discard),  	  mNeedsAux(needs_aux), diff --git a/indra/llimage/llimageworker.h b/indra/llimage/llimageworker.h index 6a0b2b4681..18398d9ae2 100644 --- a/indra/llimage/llimageworker.h +++ b/indra/llimage/llimageworker.h @@ -52,9 +52,9 @@ public:  	// meant to resemble LLQueuedThread::handle_t  	typedef U32 handle_t; -	handle_t decodeImage(LLPointer<LLImageFormatted> image, +	handle_t decodeImage(const LLPointer<LLImageFormatted>& image,  						 S32 discard, BOOL needs_aux, -						 LLPointer<Responder> responder); +						 const LLPointer<Responder>& responder);  	S32 getPending();  	S32 update(F32 max_time_ms);  	void shutdown(); | 
