diff options
| author | Dave Parks <davep@lindenlab.com> | 2011-05-16 16:11:56 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2011-05-16 16:11:56 -0500 | 
| commit | 26f321bf6530734173792f92316b32c470cc1b20 (patch) | |
| tree | b6c913bc714ce29ee559a0da49c6318051637789 /indra/llcommon/llrefcount.h | |
| parent | 113f532ee57eeeca4dc7eb6ca05f923f1f3543d3 (diff) | |
| parent | 8ae550996c70df16b707f6773666b93409123689 (diff) | |
merge
Diffstat (limited to 'indra/llcommon/llrefcount.h')
| -rw-r--r-- | indra/llcommon/llrefcount.h | 20 | 
1 files changed, 18 insertions, 2 deletions
| diff --git a/indra/llcommon/llrefcount.h b/indra/llcommon/llrefcount.h index 19f008b15c..8eb5d53f3f 100644 --- a/indra/llcommon/llrefcount.h +++ b/indra/llcommon/llrefcount.h @@ -28,6 +28,11 @@  #include <boost/noncopyable.hpp> +#define LL_REF_COUNT_DEBUG 0 +#if LL_REF_COUNT_DEBUG +class LLMutex ; +#endif +  //----------------------------------------------------------------------------  // RefCount objects should generally only be accessed by way of LLPointer<>'s  // see llthread.h for LLThreadSafeRefCount @@ -43,12 +48,16 @@ protected:  public:  	LLRefCount(); -	void ref() const +#if LL_REF_COUNT_DEBUG +	void ref() const ; +	S32 unref() const ; +#else +	inline void ref() const  	{   		mRef++;   	}  -	S32 unref() const +	inline S32 unref() const  	{  		llassert(mRef >= 1);  		if (0 == --mRef)  @@ -58,6 +67,7 @@ public:  		}  		return mRef;  	}	 +#endif  	//NOTE: when passing around a const LLRefCount object, this can return different results  	// at different types, since mRef is mutable @@ -68,6 +78,12 @@ public:  private:   	mutable S32	mRef;  + +#if LL_REF_COUNT_DEBUG +	LLMutex*  mMutexp ; +	mutable U32  mLockedThreadID ; +	mutable BOOL mCrashAtUnlock ;  +#endif  };  #endif | 
