Removed signalUnreffed interface

This commit is contained in:
Robert Osfield
2010-05-17 14:21:53 +00:00
parent f832198128
commit ccd9f31309
5 changed files with 12 additions and 61 deletions

View File

@@ -27,13 +27,6 @@ class OSG_EXPORT Observer
Observer();
virtual ~Observer();
/** objectUnreferenced(void*) is called when the observed object's referenced count goes to zero, indicating that
* the object will be deleted unless a new reference is made to it. If you wish to prevent deletion of the object
* then it's reference count should be incremented such as via taking a ref_ptr<> to it, if no refernce is taken
* by any of the observers of the object then the object will be deleted, and objectDeleted will in turn be called.
* return true if the Observer wishes to removed from the oberseved objects observer set.*/
virtual bool objectUnreferenced(void*) { return false; }
/** objectDeleted is called when the observed object is about to be deleted. The observer will be automatically
* removed from the observerd objects observer set so there is no need for the objectDeleted implementation
* to call removeObserver() on the observed object. */
@@ -54,8 +47,6 @@ class OSG_EXPORT ObserverSet
void addObserver(Observer* observer);
void removeObserver(Observer* observer);
void signalObjectUnreferenced(void* ptr);
void signalObjectDeleted(void* ptr);
typedef std::set<Observer*> Observers;

View File

@@ -90,11 +90,8 @@ class OSG_EXPORT Referenced
should only be called if the user knows exactly who will
be responsible for, one should prefer unref() over unref_nodelete()
as the later can lead to memory leaks.
@param signalObserversOnZeroRefCount - By default true, adjust the reference count and send
any signal to observers if ref count goes to zero.
*/
int unref_nodelete(bool signalObserversOnZeroRefCount = true) const;
int unref_nodelete() const;
/** Return the number pointers currently referencing this object. */
inline int referenceCount() const { return _refCount; }
@@ -141,7 +138,7 @@ class OSG_EXPORT Referenced
virtual ~Referenced();
void signalObserversAndDelete(bool signalUnreferened, bool signalDelete, bool doDelete) const;
void signalObserversAndDelete(bool signalDelete, bool doDelete) const;
void deleteUsingDeleteHandler() const;
@@ -199,7 +196,7 @@ inline int Referenced::unref() const
if (needDelete)
{
signalObserversAndDelete(true,true,true);
signalObserversAndDelete(true,true);
}
return newRef;
}

View File

@@ -47,7 +47,7 @@ struct WeakReference : public Observer, public Referenced
// The object is in the process of being deleted, but our
// objectDeleted() method hasn't been run yet (and we're
// blocking it -- and the final destruction -- with our lock).
_ptr->unref_nodelete(false);
_ptr->unref_nodelete();
return 0;
}
return _ptr;