15#define OSG_REFERENCED 1
23#if !defined(_OPENTHREADS_ATOMIC_USE_MUTEX)
24# define _OSG_REFERENCED_USE_ATOMIC_OPERATIONS
36template <
typename T, T M()>
62#if defined(_OSG_REFERENCED_USE_ATOMIC_OPERATIONS)
65 bool getThreadSafeRefUnref()
const {
return _refMutex!=0; }
69#if defined(_OSG_REFERENCED_USE_ATOMIC_OPERATIONS)
80 inline int ref()
const;
86 inline int unref()
const;
103 #if defined(_OSG_REFERENCED_USE_ATOMIC_OPERATIONS)
104 return static_cast<ObserverSet*
>(_observerSet.get());
147#if defined(_OSG_REFERENCED_USE_ATOMIC_OPERATIONS)
155 mutable int _refCount;
157 mutable void* _observerSet;
163#if defined(_OSG_REFERENCED_USE_ATOMIC_OPERATIONS)
181#if defined(_OSG_REFERENCED_USE_ATOMIC_OPERATIONS)
183 bool needDelete = (newRef == 0);
185 bool needDelete =
false;
190 needDelete = newRef==0;
195 needDelete = newRef==0;
This class provides an atomic pointer assignment using cas operations.
Definition Atomic:83
This class provides an atomic increment and decrement operation.
Definition Atomic:48
This class provides an object-oriented thread mutex interface.
Definition Mutex:31
Definition DeleteHandler:33
Referenced(bool threadSafeRefUnref)
int unref_nodelete() const
void addObserver(Observer *observer) const
void signalObserversAndDelete(bool signalDelete, bool doDelete) const
OpenThreads::AtomicPtr _observerSet
Definition Referenced:148
Referenced(const Referenced &)
int unref() const
Definition Referenced:178
static DeleteHandler * getDeleteHandler()
void deleteUsingDeleteHandler() const
ObserverSet * getObserverSet() const
Definition Referenced:101
bool getThreadSafeRefUnref() const
Definition Referenced:63
virtual void setThreadSafeRefUnref(bool)
Definition Referenced:59
int referenceCount() const
Definition Referenced:97
OpenThreads::Atomic _refCount
Definition Referenced:150
OpenThreads::Mutex * getRefMutex() const
Definition Referenced:70
void removeObserver(Observer *observer) const
static OpenThreads::Mutex * getGlobalReferencedMutex()
int ref() const
Definition Referenced:161
static void setDeleteHandler(DeleteHandler *handler)
ObserverSet * getOrCreateObserverSet() const
author: Julien Valentin 2017 (mp3butcher@hotmail.com)
Definition AlphaFunc:19
void resizeGLObjectBuffers(osg::Object *object, unsigned int maxSize)
Definition Object:396
void intrusive_ptr_add_ref(Referenced *p)
Definition Referenced:208
void releaseGLObjects(osg::Object *object, osg::State *state=0)
Definition Object:400
void intrusive_ptr_release(Referenced *p)
Definition Referenced:209
#define OSG_EXPORT
Definition osg/Export:39
depends_on()
Definition Referenced:39