OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
osg::DeleteHandler Class Reference

#include <DeleteHandler.h>

Collaboration diagram for osg::DeleteHandler:
Collaboration graph
[legend]

Public Types

typedef std::pair< unsigned
int, const osg::Referenced * > 
FrameNumberObjectPair
 
typedef std::list
< FrameNumberObjectPair
ObjectsToDeleteList
 

Public Member Functions

 DeleteHandler (int numberOfFramesToRetainObjects=0)
 
virtual ~DeleteHandler ()
 
void setNumFramesToRetainObjects (unsigned int numberOfFramesToRetainObjects)
 
unsigned int getNumFramesToRetainObjects () const
 
void setFrameNumber (unsigned int frameNumber)
 
unsigned int getFrameNumber () const
 
void doDelete (const Referenced *object)
 
virtual void flush ()
 
virtual void flushAll ()
 
virtual void requestDelete (const osg::Referenced *object)
 

Protected Member Functions

 DeleteHandler (const DeleteHandler &)
 
DeleteHandler operator= (const DeleteHandler &)
 

Protected Attributes

unsigned int _numFramesToRetainObjects
 
unsigned int _currentFrameNumber
 
OpenThreads::Mutex _mutex
 
ObjectsToDeleteList _objectsToDelete
 

Detailed Description

Class for overriding the default delete behaviour so that users can implement their own object deletion schemes. This might be used to implement a protection scheme that avoids multiple threads deleting objects unintentionally. Note, the DeleteHandler cannot itself be reference counted, otherwise it would be responsible for deleting itself! A static auto_ptr<> is used internally in Referenced.cpp to manage the DeleteHandler's memory.

Definition at line 32 of file DeleteHandler.h.

Member Typedef Documentation

typedef std::pair<unsigned int, const osg::Referenced*> osg::DeleteHandler::FrameNumberObjectPair

Definition at line 36 of file DeleteHandler.h.

Definition at line 37 of file DeleteHandler.h.

Constructor & Destructor Documentation

osg::DeleteHandler::DeleteHandler ( int  numberOfFramesToRetainObjects = 0)
virtual osg::DeleteHandler::~DeleteHandler ( )
virtual
osg::DeleteHandler::DeleteHandler ( const DeleteHandler )
inlineprotected

Definition at line 75 of file DeleteHandler.h.

Member Function Documentation

void osg::DeleteHandler::doDelete ( const Referenced object)
inline

Definition at line 58 of file DeleteHandler.h.

virtual void osg::DeleteHandler::flush ( )
virtual

Flush objects that are ready to be fully deleted.

virtual void osg::DeleteHandler::flushAll ( )
virtual

Flush all objects that the DeleteHandler holds. Note, this should only be called if there are no threads running with non ref_ptr<> pointers, such as graphics threads.

unsigned int osg::DeleteHandler::getFrameNumber ( ) const
inline

Get the current frame number.

Definition at line 56 of file DeleteHandler.h.

unsigned int osg::DeleteHandler::getNumFramesToRetainObjects ( ) const
inline

Definition at line 50 of file DeleteHandler.h.

DeleteHandler osg::DeleteHandler::operator= ( const DeleteHandler )
inlineprotected

Definition at line 78 of file DeleteHandler.h.

virtual void osg::DeleteHandler::requestDelete ( const osg::Referenced object)
virtual

Request the deletion of an object. Depending on users implementation of DeleteHandler, the delete of the object may occur straight away or be delayed until doDelete is called. The default implementation does a delete straight away.

void osg::DeleteHandler::setFrameNumber ( unsigned int  frameNumber)
inline

Set the current frame number so that subsequent deletes get tagged as associated with this frame.

Definition at line 53 of file DeleteHandler.h.

void osg::DeleteHandler::setNumFramesToRetainObjects ( unsigned int  numberOfFramesToRetainObjects)
inline

Set the number of frames to retain objects that have been requested for deletion. When set to zero objects are deleted immediately, by setting to 1 they are kept around for an extra frame etc. The ability to retain objects for several frames is useful to prevent premature deletion when objects are still being used by graphics threads that use double buffering of rendering data structures with non ref_ptr<> pointers to scene graph elements.

Definition at line 48 of file DeleteHandler.h.

Member Data Documentation

unsigned int osg::DeleteHandler::_currentFrameNumber
protected

Definition at line 81 of file DeleteHandler.h.

OpenThreads::Mutex osg::DeleteHandler::_mutex
protected

Definition at line 82 of file DeleteHandler.h.

unsigned int osg::DeleteHandler::_numFramesToRetainObjects
protected

Definition at line 80 of file DeleteHandler.h.

ObjectsToDeleteList osg::DeleteHandler::_objectsToDelete
protected

Definition at line 83 of file DeleteHandler.h.


The documentation for this class was generated from the following file: