Converted FrameStamp::g/setFrameNumber from int to uint

This commit is contained in:
Robert Osfield 2010-12-22 20:11:05 +00:00
parent b5d4d9954a
commit 410b4fd109
49 changed files with 201 additions and 209 deletions

View File

@ -31,7 +31,7 @@ PROJECT(OpenSceneGraph)
SET(OPENSCENEGRAPH_MAJOR_VERSION 2) SET(OPENSCENEGRAPH_MAJOR_VERSION 2)
SET(OPENSCENEGRAPH_MINOR_VERSION 9) SET(OPENSCENEGRAPH_MINOR_VERSION 9)
SET(OPENSCENEGRAPH_PATCH_VERSION 11) SET(OPENSCENEGRAPH_PATCH_VERSION 11)
SET(OPENSCENEGRAPH_SOVERSION 69) SET(OPENSCENEGRAPH_SOVERSION 70)
# set to 0 when not a release candidate, non zero means that any generated # set to 0 when not a release candidate, non zero means that any generated
# svn tags will be treated as release candidates of given number # svn tags will be treated as release candidates of given number

View File

@ -88,7 +88,7 @@
osg::Timer_t _startTime; osg::Timer_t _startTime;
osg::Timer_t _currentTime; osg::Timer_t _currentTime;
bool _playing; bool _playing;
int _lastUpdate; unsigned int _lastUpdate;
}; };
@ -150,7 +150,7 @@ public:
osg::Timer_t _startTime; osg::Timer_t _startTime;
osg::Timer_t _currentTime; osg::Timer_t _currentTime;
bool _playing; bool _playing;
int _lastUpdate; unsigned int _lastUpdate;
}; };
// This won't really give good results in any situation, but it does demonstrate // This won't really give good results in any situation, but it does demonstrate

View File

@ -80,7 +80,7 @@ public:
osg::Timer_t _startTime; osg::Timer_t _startTime;
osg::Timer_t _currentTime; osg::Timer_t _currentTime;
bool _playing; bool _playing;
int _lastUpdate; unsigned int _lastUpdate;
}; };
@ -143,7 +143,7 @@ public:
osg::Timer_t _startTime; osg::Timer_t _startTime;
osg::Timer_t _currentTime; osg::Timer_t _currentTime;
bool _playing; bool _playing;
int _lastUpdate; unsigned int _lastUpdate;
}; };

View File

@ -91,7 +91,7 @@ class ElevationLayerBlendingCallback : public osg::NodeCallback
typedef std::vector<double> Elevations; typedef std::vector<double> Elevations;
ElevationLayerBlendingCallback(osgFX::MultiTextureControl* mtc, const Elevations& elevations, float animationTime=4.0f): ElevationLayerBlendingCallback(osgFX::MultiTextureControl* mtc, const Elevations& elevations, float animationTime=4.0f):
_previousFrame(-1), _previousFrame(0),
_previousTime(0.0), _previousTime(0.0),
_animationTime(animationTime), _animationTime(animationTime),
_currentElevation(0.0), _currentElevation(0.0),
@ -105,7 +105,7 @@ class ElevationLayerBlendingCallback : public osg::NodeCallback
{ {
float deltaTime = 0.01f; float deltaTime = 0.01f;
if (_previousFrame!=-1) if (_previousFrame!=0)
{ {
deltaTime = float(nv->getFrameStamp()->getReferenceTime() - _previousTime); deltaTime = float(nv->getFrameStamp()->getReferenceTime() - _previousTime);
} }
@ -171,7 +171,7 @@ class ElevationLayerBlendingCallback : public osg::NodeCallback
traverse(node,nv); traverse(node,nv);
} }
int _previousFrame; unsigned int _previousFrame;
double _previousTime; double _previousTime;
float _animationTime; float _animationTime;
double _currentElevation; double _currentElevation;

View File

@ -43,7 +43,7 @@ public:
if ( nv->getFrameStamp() && updateTimeStamp ) if ( nv->getFrameStamp() && updateTimeStamp )
{ {
double timeStamp = nv->getFrameStamp()?nv->getFrameStamp()->getReferenceTime():0.0; double timeStamp = nv->getFrameStamp()?nv->getFrameStamp()->getReferenceTime():0.0;
int frameNumber = nv->getFrameStamp()?nv->getFrameStamp()->getFrameNumber():0; unsigned int frameNumber = nv->getFrameStamp()?nv->getFrameStamp()->getFrameNumber():0;
pagedLOD->setFrameNumberOfLastTraversal( frameNumber ); pagedLOD->setFrameNumberOfLastTraversal( frameNumber );
pagedLOD->setTimeStamp( numChildren-1, timeStamp ); pagedLOD->setTimeStamp( numChildren-1, timeStamp );

View File

@ -142,7 +142,7 @@ protected:
bool _isRunning; bool _isRunning;
bool _isFinishing; bool _isFinishing;
int _lastBindingFrame; unsigned int _lastBindingFrame;
int _tileRows; int _tileRows;
int _tileColumns; int _tileColumns;
int _currentRow; int _currentRow;

View File

@ -87,7 +87,7 @@ void updateUserStats(osgViewer::Viewer& viewer)
// use that frame's timings because it's probably not finished // use that frame's timings because it's probably not finished
// rendering yet (in multithreaded viewer modes). So we'll use the // rendering yet (in multithreaded viewer modes). So we'll use the
// timings for framenumber-2 for this demo. // timings for framenumber-2 for this demo.
int framenumber = viewer.getFrameStamp()->getFrameNumber(); unsigned int framenumber = viewer.getFrameStamp()->getFrameNumber();
// Get the update time and the viewer main camera's cull time. We use // Get the update time and the viewer main camera's cull time. We use
// getAveragedAttribute() in order to get the actual time elapsed as // getAveragedAttribute() in order to get the actual time elapsed as
@ -131,7 +131,7 @@ void startTiming(osgViewer::Viewer& viewer, const std::string& name)
{ {
osg::Timer_t tick = osg::Timer::instance()->tick(); osg::Timer_t tick = osg::Timer::instance()->tick();
double currentTime = osg::Timer::instance()->delta_s(viewer.getStartTick(), tick); double currentTime = osg::Timer::instance()->delta_s(viewer.getStartTick(), tick);
int framenumber = viewer.getFrameStamp()->getFrameNumber(); unsigned int framenumber = viewer.getFrameStamp()->getFrameNumber();
viewer.getViewerStats()->setAttribute(framenumber, name + " begin", currentTime); viewer.getViewerStats()->setAttribute(framenumber, name + " begin", currentTime);
} }
@ -142,7 +142,7 @@ void endTiming(osgViewer::Viewer& viewer, const std::string& name)
{ {
osg::Timer_t tick = osg::Timer::instance()->tick(); osg::Timer_t tick = osg::Timer::instance()->tick();
double currentTime = osg::Timer::instance()->delta_s(viewer.getStartTick(), tick); double currentTime = osg::Timer::instance()->delta_s(viewer.getStartTick(), tick);
int framenumber = viewer.getFrameStamp()->getFrameNumber(); unsigned int framenumber = viewer.getFrameStamp()->getFrameNumber();
viewer.getViewerStats()->setAttribute(framenumber, name + " end", currentTime); viewer.getViewerStats()->setAttribute(framenumber, name + " end", currentTime);

View File

@ -32,7 +32,7 @@ class OSG_EXPORT DeleteHandler
{ {
public: public:
typedef std::pair<int, const osg::Referenced*> FrameNumberObjectPair; typedef std::pair<unsigned int, const osg::Referenced*> FrameNumberObjectPair;
typedef std::list<FrameNumberObjectPair> ObjectsToDeleteList; typedef std::list<FrameNumberObjectPair> ObjectsToDeleteList;
DeleteHandler(int numberOfFramesToRetainObjects=0); DeleteHandler(int numberOfFramesToRetainObjects=0);
@ -44,15 +44,15 @@ class OSG_EXPORT DeleteHandler
* The ability to retain objects for several frames is useful to prevent premature deletion when objects * The ability to retain objects for several frames is useful to prevent premature deletion when objects
* are still be used the graphics threads that are using double buffering of rendering data structures with * are still be used the graphics threads that are using double buffering of rendering data structures with
* non ref_ptr<> pointers to scene graph elements.*/ * non ref_ptr<> pointers to scene graph elements.*/
void setNumFramesToRetainObjects(int numberOfFramesToRetainObjects) { _numFramesToRetainObjects = numberOfFramesToRetainObjects; } void setNumFramesToRetainObjects(unsigned int numberOfFramesToRetainObjects) { _numFramesToRetainObjects = numberOfFramesToRetainObjects; }
int getNumFramesToRetainObjects() const { return _numFramesToRetainObjects; } unsigned int getNumFramesToRetainObjects() const { return _numFramesToRetainObjects; }
/** Set the current frame number so that subsequent deletes get tagged as associated with this frame.*/ /** Set the current frame number so that subsequent deletes get tagged as associated with this frame.*/
void setFrameNumber(int frameNumber) { _currentFrameNumber = frameNumber; } void setFrameNumber(unsigned int frameNumber) { _currentFrameNumber = frameNumber; }
/** Get the current frame number.*/ /** Get the current frame number.*/
int getFrameNumber() const { return _currentFrameNumber; } unsigned int getFrameNumber() const { return _currentFrameNumber; }
inline void doDelete(const Referenced* object) { delete object; } inline void doDelete(const Referenced* object) { delete object; }
@ -76,10 +76,10 @@ class OSG_EXPORT DeleteHandler
_currentFrameNumber(0) {} _currentFrameNumber(0) {}
DeleteHandler operator = (const DeleteHandler&) { return *this; } DeleteHandler operator = (const DeleteHandler&) { return *this; }
int _numFramesToRetainObjects; unsigned int _numFramesToRetainObjects;
int _currentFrameNumber; unsigned int _currentFrameNumber;
OpenThreads::Mutex _mutex; OpenThreads::Mutex _mutex;
ObjectsToDeleteList _objectsToDelete; ObjectsToDeleteList _objectsToDelete;
}; };

View File

@ -40,8 +40,8 @@ class OSG_EXPORT FrameStamp : public Referenced
FrameStamp& operator = (const FrameStamp& fs); FrameStamp& operator = (const FrameStamp& fs);
void setFrameNumber(int fnum) { _frameNumber = fnum; } void setFrameNumber(unsigned int fnum) { _frameNumber = fnum; }
int getFrameNumber() const { return _frameNumber; } unsigned int getFrameNumber() const { return _frameNumber; }
void setReferenceTime(double refTime) { _referenceTime = refTime; } void setReferenceTime(double refTime) { _referenceTime = refTime; }
double getReferenceTime() const { return _referenceTime; } double getReferenceTime() const { return _referenceTime; }
@ -63,9 +63,9 @@ class OSG_EXPORT FrameStamp : public Referenced
// via a simple memory copy or within a data packet across // via a simple memory copy or within a data packet across
// the network. // the network.
int _frameNumber; unsigned int _frameNumber;
double _referenceTime; double _referenceTime;
double _simulationTime; double _simulationTime;
// member variables of time.h's tm structure, copied here to // member variables of time.h's tm structure, copied here to
// ensure that all data is not dynamic. The tm structure itself // ensure that all data is not dynamic. The tm structure itself

View File

@ -42,6 +42,8 @@ class Transform;
class Camera; class Camera;
class CameraView; class CameraView;
const unsigned int UNINITIALIZED_FRAME_NUMBER=0xffffffff;
#define META_NodeVisitor(library,name) \ #define META_NodeVisitor(library,name) \
virtual const char* libraryName() const { return #library; }\ virtual const char* libraryName() const { return #library; }\
virtual const char* className() const { return #name; } virtual const char* className() const { return #name; }
@ -109,10 +111,10 @@ class OSG_EXPORT NodeVisitor : public virtual Referenced
inline VisitorType getVisitorType() const { return _visitorType; } inline VisitorType getVisitorType() const { return _visitorType; }
/** Set the traversal number. Typically used to denote the frame count.*/ /** Set the traversal number. Typically used to denote the frame count.*/
inline void setTraversalNumber(int fn) { _traversalNumber = fn; } inline void setTraversalNumber(unsigned int fn) { _traversalNumber = fn; }
/** Get the traversal number. Typically used to denote the frame count.*/ /** Get the traversal number. Typically used to denote the frame count.*/
inline int getTraversalNumber() const { return _traversalNumber; } inline unsigned int getTraversalNumber() const { return _traversalNumber; }
/** Set the FrameStamp that this traversal is associated with.*/ /** Set the FrameStamp that this traversal is associated with.*/
inline void setFrameStamp(FrameStamp* fs) { _frameStamp = fs; } inline void setFrameStamp(FrameStamp* fs) { _frameStamp = fs; }
@ -326,7 +328,7 @@ class OSG_EXPORT NodeVisitor : public virtual Referenced
protected: protected:
VisitorType _visitorType; VisitorType _visitorType;
int _traversalNumber; unsigned int _traversalNumber;
ref_ptr<FrameStamp> _frameStamp; ref_ptr<FrameStamp> _frameStamp;

View File

@ -122,8 +122,8 @@ public:
unsigned int getVisibilityThreshold() const { return _visThreshold; } unsigned int getVisibilityThreshold() const { return _visThreshold; }
// Specifies how many frames to wait before issuing another query. // Specifies how many frames to wait before issuing another query.
void setQueryFrameCount( int frames ) { _queryFrameCount = frames; } void setQueryFrameCount( unsigned int frames ) { _queryFrameCount = frames; }
int getQueryFrameCount() const { return _queryFrameCount; } unsigned int getQueryFrameCount() const { return _queryFrameCount; }
// Indicate whether or not the bounding box used in the occlusion query test // Indicate whether or not the bounding box used in the occlusion query test
// should be rendered. Handy for debugging and development. // should be rendered. Handy for debugging and development.
@ -179,7 +179,7 @@ protected:
// Tracks the last frame number that we performed a query. // Tracks the last frame number that we performed a query.
// User can set how many times (See setQueryFrameCount). // User can set how many times (See setQueryFrameCount).
typedef std::map< const osg::Camera*, int > FrameCountMap; typedef std::map< const osg::Camera*, unsigned int > FrameCountMap;
FrameCountMap _frameCountMap; FrameCountMap _frameCountMap;
mutable OpenThreads::Mutex _frameCountMutex; mutable OpenThreads::Mutex _frameCountMutex;
@ -188,7 +188,7 @@ protected:
// User-settable variables // User-settable variables
unsigned int _visThreshold; unsigned int _visThreshold;
int _queryFrameCount; unsigned int _queryFrameCount;
bool _debugBB; bool _debugBB;

View File

@ -71,8 +71,8 @@ class OSG_EXPORT PagedLOD : public LOD
float _priorityOffset; float _priorityOffset;
float _priorityScale; float _priorityScale;
double _timeStamp; double _timeStamp;
int _frameNumber; unsigned int _frameNumber;
int _frameNumberOfLastReleaseGLObjects; unsigned int _frameNumberOfLastReleaseGLObjects;
osg::ref_ptr<osg::Referenced> _databaseRequest; osg::ref_ptr<osg::Referenced> _databaseRequest;
}; };
@ -96,8 +96,8 @@ class OSG_EXPORT PagedLOD : public LOD
double getTimeStamp(unsigned int childNo) const { return _perRangeDataList[childNo]._timeStamp; } double getTimeStamp(unsigned int childNo) const { return _perRangeDataList[childNo]._timeStamp; }
unsigned int getNumTimeStamps() const { return _perRangeDataList.size(); } unsigned int getNumTimeStamps() const { return _perRangeDataList.size(); }
void setFrameNumber(unsigned int childNo, int frameNumber) { expandPerRangeDataTo(childNo); _perRangeDataList[childNo]._frameNumber=frameNumber; } void setFrameNumber(unsigned int childNo, unsigned int frameNumber) { expandPerRangeDataTo(childNo); _perRangeDataList[childNo]._frameNumber=frameNumber; }
double getFrameNumber(unsigned int childNo) const { return _perRangeDataList[childNo]._frameNumber; } unsigned getFrameNumber(unsigned int childNo) const { return _perRangeDataList[childNo]._frameNumber; }
unsigned int getNumFrameNumbers() const { return _perRangeDataList.size(); } unsigned int getNumFrameNumbers() const { return _perRangeDataList.size(); }
@ -114,10 +114,10 @@ class OSG_EXPORT PagedLOD : public LOD
/** Set the frame number of the last time that this PageLOD node was traversed. /** Set the frame number of the last time that this PageLOD node was traversed.
* Note, this frame number is automatically set by the traverse() method for all traversals (update, cull etc.). * Note, this frame number is automatically set by the traverse() method for all traversals (update, cull etc.).
*/ */
inline void setFrameNumberOfLastTraversal(int frameNumber) { _frameNumberOfLastTraversal=frameNumber; } inline void setFrameNumberOfLastTraversal(unsigned int frameNumber) { _frameNumberOfLastTraversal=frameNumber; }
/** Get the frame number of the last time that this PageLOD node was traversed.*/ /** Get the frame number of the last time that this PageLOD node was traversed.*/
inline int getFrameNumberOfLastTraversal() const { return _frameNumberOfLastTraversal; } inline unsigned int getFrameNumberOfLastTraversal() const { return _frameNumberOfLastTraversal; }
/** Set the number of children that the PagedLOD must keep around, even if they are older than their expiry time.*/ /** Set the number of children that the PagedLOD must keep around, even if they are older than their expiry time.*/
@ -137,11 +137,7 @@ class OSG_EXPORT PagedLOD : public LOD
* The removed children are added to the removeChildren list passed into the method, * The removed children are added to the removeChildren list passed into the method,
* this allows the children to be deleted later at the caller's discretion. * this allows the children to be deleted later at the caller's discretion.
* Return true if children are removed, false otherwise. */ * Return true if children are removed, false otherwise. */
virtual bool removeExpiredChildren(double expiryTime, int expiryFrame, NodeList& removedChildren); virtual bool removeExpiredChildren(double expiryTime, unsigned int expiryFrame, NodeList& removedChildren);
/** Release the GL Objects of the children from the PagedLOD which haven't been visited since specified expiry time and expiry frame number.
* Return true if any children have release called upon them, false otherwise. */
virtual bool releaseGLObjectsOnExpiredChildren(double releaseTime, int releaseFrame);
protected : protected :
@ -152,7 +148,7 @@ class OSG_EXPORT PagedLOD : public LOD
ref_ptr<Referenced> _databaseOptions; ref_ptr<Referenced> _databaseOptions;
std::string _databasePath; std::string _databasePath;
int _frameNumberOfLastTraversal; unsigned int _frameNumberOfLastTraversal;
unsigned int _numChildrenThatCannotBeExpired; unsigned int _numChildrenThatCannotBeExpired;
bool _disableExternalChildrenPaging; bool _disableExternalChildrenPaging;

View File

@ -38,15 +38,15 @@ class OSG_EXPORT Stats : public osg::Referenced
void allocate(unsigned int numberOfFrames); void allocate(unsigned int numberOfFrames);
int getEarliestFrameNumber() const { return _latestFrameNumber < static_cast<int>(_attributeMapList.size()) ? 0 : _latestFrameNumber - static_cast<int>(_attributeMapList.size()) + 1; } unsigned int getEarliestFrameNumber() const { return _latestFrameNumber < static_cast<unsigned int>(_attributeMapList.size()) ? 0 : _latestFrameNumber - static_cast<unsigned int>(_attributeMapList.size()) + 1; }
int getLatestFrameNumber() const { return _latestFrameNumber; } unsigned int getLatestFrameNumber() const { return _latestFrameNumber; }
typedef std::map<std::string, double> AttributeMap; typedef std::map<std::string, double> AttributeMap;
typedef std::vector<AttributeMap> AttributeMapList; typedef std::vector<AttributeMap> AttributeMapList;
bool setAttribute(int frameNumber, const std::string& attributeName, double value); bool setAttribute(unsigned int frameNumber, const std::string& attributeName, double value);
inline bool getAttribute(int frameNumber, const std::string& attributeName, double& value) const inline bool getAttribute(unsigned int frameNumber, const std::string& attributeName, double& value) const
{ {
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex); OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex);
return getAttributeNoMutex(frameNumber, attributeName, value); return getAttributeNoMutex(frameNumber, attributeName, value);
@ -54,15 +54,15 @@ class OSG_EXPORT Stats : public osg::Referenced
bool getAveragedAttribute(const std::string& attributeName, double& value, bool averageInInverseSpace=false) const; bool getAveragedAttribute(const std::string& attributeName, double& value, bool averageInInverseSpace=false) const;
bool getAveragedAttribute(int startFrameNumber, int endFrameNumber, const std::string& attributeName, double& value, bool averageInInverseSpace=false) const; bool getAveragedAttribute(unsigned int startFrameNumber, unsigned int endFrameNumber, const std::string& attributeName, double& value, bool averageInInverseSpace=false) const;
inline AttributeMap& getAttributeMap(int frameNumber) inline AttributeMap& getAttributeMap(unsigned int frameNumber)
{ {
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex); OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex);
return getAttributeMapNoMutex(frameNumber); return getAttributeMapNoMutex(frameNumber);
} }
inline const AttributeMap& getAttributeMap(int frameNumber) const inline const AttributeMap& getAttributeMap(unsigned int frameNumber) const
{ {
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex); OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex);
return getAttributeMapNoMutex(frameNumber); return getAttributeMapNoMutex(frameNumber);
@ -87,13 +87,13 @@ class OSG_EXPORT Stats : public osg::Referenced
virtual ~Stats() {} virtual ~Stats() {}
bool getAttributeNoMutex(int frameNumber, const std::string& attributeName, double& value) const; bool getAttributeNoMutex(unsigned int frameNumber, const std::string& attributeName, double& value) const;
AttributeMap& getAttributeMapNoMutex(int frameNumber); AttributeMap& getAttributeMapNoMutex(unsigned int frameNumber);
const AttributeMap& getAttributeMapNoMutex(int frameNumber) const; const AttributeMap& getAttributeMapNoMutex(unsigned int frameNumber) const;
int getIndex(int frameNumber) const int getIndex(unsigned int frameNumber) const
{ {
// reject frame that are in the future // reject frame that are in the future
if (frameNumber > _latestFrameNumber) return -1; if (frameNumber > _latestFrameNumber) return -1;
@ -109,8 +109,8 @@ class OSG_EXPORT Stats : public osg::Referenced
mutable OpenThreads::Mutex _mutex; mutable OpenThreads::Mutex _mutex;
int _baseFrameNumber; unsigned int _baseFrameNumber;
int _latestFrameNumber; unsigned int _latestFrameNumber;
AttributeMapList _attributeMapList; AttributeMapList _attributeMapList;
AttributeMap _invalidAttributeMap; AttributeMap _invalidAttributeMap;

View File

@ -21,7 +21,7 @@ extern "C" {
#define OPENSCENEGRAPH_MAJOR_VERSION 2 #define OPENSCENEGRAPH_MAJOR_VERSION 2
#define OPENSCENEGRAPH_MINOR_VERSION 9 #define OPENSCENEGRAPH_MINOR_VERSION 9
#define OPENSCENEGRAPH_PATCH_VERSION 11 #define OPENSCENEGRAPH_PATCH_VERSION 11
#define OPENSCENEGRAPH_SOVERSION 69 #define OPENSCENEGRAPH_SOVERSION 70
/* Convenience macro that can be used to decide whether a feature is present or not i.e. /* Convenience macro that can be used to decide whether a feature is present or not i.e.
* #if OSG_MIN_VERSION_REQUIRED(2,9,5) * #if OSG_MIN_VERSION_REQUIRED(2,9,5)

View File

@ -104,8 +104,8 @@ class OSGDB_EXPORT DatabasePager : public osg::NodeVisitor::DatabaseRequestHandl
void setName(const std::string& name) { _name = name; } void setName(const std::string& name) { _name = name; }
const std::string& getName() const { return _name; } const std::string& getName() const { return _name; }
void setDone(bool done) { _done = done; } void setDone(bool done) { _done.exchange(done?1:0); }
bool getDone() const { return _done; } bool getDone() const { return _done!=0; }
void setActive(bool active) { _active = active; } void setActive(bool active) { _active = active; }
bool getActive() const { return _active; } bool getActive() const { return _active; }
@ -118,7 +118,7 @@ class OSGDB_EXPORT DatabasePager : public osg::NodeVisitor::DatabaseRequestHandl
virtual ~DatabaseThread(); virtual ~DatabaseThread();
volatile bool _done; OpenThreads::Atomic _done;
volatile bool _active; volatile bool _active;
DatabasePager* _pager; DatabasePager* _pager;
Mode _mode; Mode _mode;
@ -163,7 +163,7 @@ class OSGDB_EXPORT DatabasePager : public osg::NodeVisitor::DatabaseRequestHandl
/** Find all PagedLOD nodes in a subgraph and register them with /** Find all PagedLOD nodes in a subgraph and register them with
* the DatabasePager so it can keep track of expired nodes. * the DatabasePager so it can keep track of expired nodes.
* note, should be only be called from the update thread. */ * note, should be only be called from the update thread. */
virtual void registerPagedLODs(osg::Node* subgraph, int frameNumber = 0); virtual void registerPagedLODs(osg::Node* subgraph, unsigned int frameNumber = 0);
/** Set the incremental compile operation. /** Set the incremental compile operation.
* Used to manage the OpenGL object compilation and merging of subgraphs in a way that avoids overloading * Used to manage the OpenGL object compilation and merging of subgraphs in a way that avoids overloading
@ -273,7 +273,7 @@ class OSGDB_EXPORT DatabasePager : public osg::NodeVisitor::DatabaseRequestHandl
virtual PagedLODList* clone() = 0; virtual PagedLODList* clone() = 0;
virtual void clear() = 0; virtual void clear() = 0;
virtual unsigned int size() = 0; virtual unsigned int size() = 0;
virtual void removeExpiredChildren(int numberChildrenToRemove, double expiryTime, int expiryFrame, ObjectList& childrenRemoved, bool visitActive) = 0; virtual void removeExpiredChildren(int numberChildrenToRemove, double expiryTime, unsigned int expiryFrame, ObjectList& childrenRemoved, bool visitActive) = 0;
virtual void removeNodes(osg::NodeList& nodesToRemove) = 0; virtual void removeNodes(osg::NodeList& nodesToRemove) = 0;
virtual void insertPagedLOD(const osg::observer_ptr<osg::PagedLOD>& plod) = 0; virtual void insertPagedLOD(const osg::observer_ptr<osg::PagedLOD>& plod) = 0;
virtual bool containsPagedLOD(const osg::observer_ptr<osg::PagedLOD>& plod) const = 0; virtual bool containsPagedLOD(const osg::observer_ptr<osg::PagedLOD>& plod) const = 0;
@ -309,10 +309,10 @@ class OSGDB_EXPORT DatabasePager : public osg::NodeVisitor::DatabaseRequestHandl
bool _valid; bool _valid;
std::string _fileName; std::string _fileName;
int _frameNumberFirstRequest; unsigned int _frameNumberFirstRequest;
double _timestampFirstRequest; double _timestampFirstRequest;
float _priorityFirstRequest; float _priorityFirstRequest;
int _frameNumberLastRequest; unsigned int _frameNumberLastRequest;
double _timestampLastRequest; double _timestampLastRequest;
float _priorityLastRequest; float _priorityLastRequest;
unsigned int _numOfRequests; unsigned int _numOfRequests;
@ -362,7 +362,7 @@ class OSGDB_EXPORT DatabasePager : public osg::NodeVisitor::DatabaseRequestHandl
DatabasePager* _pager; DatabasePager* _pager;
RequestList _requestList; RequestList _requestList;
OpenThreads::Mutex _requestMutex; OpenThreads::Mutex _requestMutex;
int _frameNumberLastPruned; unsigned int _frameNumberLastPruned;
protected: protected:
virtual ~RequestQueue(); virtual ~RequestQueue();
@ -427,7 +427,7 @@ class OSGDB_EXPORT DatabasePager : public osg::NodeVisitor::DatabaseRequestHandl
int _numFramesActive; int _numFramesActive;
mutable OpenThreads::Mutex _numFramesActiveMutex; mutable OpenThreads::Mutex _numFramesActiveMutex;
volatile int _frameNumber; OpenThreads::Atomic _frameNumber;
osg::ref_ptr<ReadQueue> _fileRequestQueue; osg::ref_ptr<ReadQueue> _fileRequestQueue;
osg::ref_ptr<ReadQueue> _httpRequestQueue; osg::ref_ptr<ReadQueue> _httpRequestQueue;

View File

@ -172,7 +172,7 @@ namespace osgParticle
//added- 1/17/06- bgandere@nps.edu //added- 1/17/06- bgandere@nps.edu
//a var to keep from doing multiple updates //a var to keep from doing multiple updates
int _frameNumber; unsigned int _frameNumber;
}; };
// INLINE FUNCTIONS // INLINE FUNCTIONS

View File

@ -176,7 +176,7 @@ namespace osgParticle
inline virtual void reuseParticle(int i) { _deadparts.push(&(_particles[i])); } inline virtual void reuseParticle(int i) { _deadparts.push(&(_particles[i])); }
/// Get the last frame number. /// Get the last frame number.
inline int getLastFrameNumber() const; inline unsigned int getLastFrameNumber() const;
/// Get the unique delta time for emitters and updaters to use /// Get the unique delta time for emitters and updaters to use
inline double& getDeltaTime( double currentTime ); inline double& getDeltaTime( double currentTime );
@ -294,7 +294,7 @@ namespace osgParticle
bool _bounds_computed; bool _bounds_computed;
Particle _def_ptemp; Particle _def_ptemp;
mutable int _last_frame; mutable unsigned int _last_frame;
mutable bool _dirty_dt; mutable bool _dirty_dt;
bool _freeze_on_cull; bool _freeze_on_cull;
@ -403,7 +403,7 @@ namespace osgParticle
_particles[i].kill(); _particles[i].kill();
} }
inline int ParticleSystem::getLastFrameNumber() const inline unsigned int ParticleSystem::getLastFrameNumber() const
{ {
return _last_frame; return _last_frame;
} }

View File

@ -89,7 +89,7 @@ namespace osgParticle
//added 1/17/06- bgandere@nps.edu //added 1/17/06- bgandere@nps.edu
//a var to keep from doing multiple updates per frame //a var to keep from doing multiple updates per frame
int _frameNumber; unsigned int _frameNumber;
}; };
// INLINE FUNCTIONS // INLINE FUNCTIONS

View File

@ -35,7 +35,7 @@ class OSGPRESENTATION_EXPORT CompileSlideCallback : public osg::Camera::DrawCall
virtual ~CompileSlideCallback() {} virtual ~CompileSlideCallback() {}
mutable bool _needCompile; mutable bool _needCompile;
mutable int _frameNumber; mutable unsigned int _frameNumber;
osg::ref_ptr<osg::Node> _sceneToCompile; osg::ref_ptr<osg::Node> _sceneToCompile;
}; };

View File

@ -91,7 +91,7 @@ class OSGQT_EXPORT QGraphicsViewAdapter : public QObject
OpenThreads::Mutex _qimagesMutex; OpenThreads::Mutex _qimagesMutex;
OpenThreads::Mutex _qresizeMutex; OpenThreads::Mutex _qresizeMutex;
int _previousFrameNumber; unsigned int _previousFrameNumber;
bool _newImageAvailable; bool _newImageAvailable;
unsigned int _currentRead; unsigned int _currentRead;
unsigned int _currentWrite; unsigned int _currentWrite;

View File

@ -116,8 +116,8 @@ class OSGSIM_EXPORT DOFTransform : public osg::Transform
virtual ~DOFTransform() {} virtual ~DOFTransform() {}
int _previousTraversalNumber; unsigned int _previousTraversalNumber;
double _previousTime; double _previousTime;
osg::Vec3 _minHPR; osg::Vec3 _minHPR;
osg::Vec3 _maxHPR; osg::Vec3 _maxHPR;

View File

@ -71,10 +71,10 @@ class OSGSIM_EXPORT ImpostorSprite : public osg::Drawable
inline const osg::Vec3& getStoredLocalEyePoint() const { return _storedLocalEyePoint; } inline const osg::Vec3& getStoredLocalEyePoint() const { return _storedLocalEyePoint; }
/** Set the frame number for when the ImpostorSprite was last used in rendering. */ /** Set the frame number for when the ImpostorSprite was last used in rendering. */
inline void setLastFrameUsed(int frameNumber) { _lastFrameUsed = frameNumber; } inline void setLastFrameUsed(unsigned int frameNumber) { _lastFrameUsed = frameNumber; }
/** Get the frame number for when the ImpostorSprite was last used in rendering. */ /** Get the frame number for when the ImpostorSprite was last used in rendering. */
inline int getLastFrameUsed() const { return _lastFrameUsed; } inline unsigned int getLastFrameUsed() const { return _lastFrameUsed; }
/** Get the coordinates of the corners of the quad. /** Get the coordinates of the corners of the quad.
@ -180,7 +180,7 @@ class OSGSIM_EXPORT ImpostorSprite : public osg::Drawable
ImpostorSprite* _previous; ImpostorSprite* _previous;
ImpostorSprite* _next; ImpostorSprite* _next;
int _lastFrameUsed; unsigned int _lastFrameUsed;
osg::Vec3 _storedLocalEyePoint; osg::Vec3 _storedLocalEyePoint;
@ -212,7 +212,7 @@ class OSGSIM_EXPORT ImpostorSpriteManager : public osg::Referenced
void remove(ImpostorSprite* is); void remove(ImpostorSprite* is);
ImpostorSprite* createOrReuseImpostorSprite(int s,int t,int frameNumber); ImpostorSprite* createOrReuseImpostorSprite(int s,int t,unsigned int frameNumber);
osg::StateSet* createOrReuseStateSet(); osg::StateSet* createOrReuseStateSet();

View File

@ -40,7 +40,7 @@ class OSGUTIL_EXPORT TransformCallback : public osg::NodeCallback
osg::Vec3 _pivot; osg::Vec3 _pivot;
osg::Vec3 _axis; osg::Vec3 _axis;
int _previousTraversalNumber; unsigned int _previousTraversalNumber;
double _previousTime; double _previousTime;
bool _pause; bool _pause;

View File

@ -29,7 +29,7 @@ class OSGVIEWER_EXPORT OpenGLQuerySupport : public osg::Referenced
virtual void checkQuery(osg::Stats* stats, osg::State* state, virtual void checkQuery(osg::Stats* stats, osg::State* state,
osg::Timer_t startTick) = 0; osg::Timer_t startTick) = 0;
virtual void beginQuery(int frameNumber, osg::State* state) = 0; virtual void beginQuery(unsigned int frameNumber, osg::State* state) = 0;
virtual void endQuery(osg::State* state) = 0; virtual void endQuery(osg::State* state) = 0;
virtual void initialize(osg::State* state, osg::Timer_t startTick); virtual void initialize(osg::State* state, osg::Timer_t startTick);
protected: protected:

View File

@ -37,7 +37,7 @@ void DeleteHandler::flush()
// list, but delete the objects outside this scoped lock so that if any objects deleted // list, but delete the objects outside this scoped lock so that if any objects deleted
// unref their children then no deadlock happens. // unref their children then no deadlock happens.
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex); OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex);
int frameNumberToClearTo = _currentFrameNumber - _numFramesToRetainObjects; unsigned int frameNumberToClearTo = _currentFrameNumber - _numFramesToRetainObjects;
ObjectsToDeleteList::iterator itr; ObjectsToDeleteList::iterator itr;
for(itr = _objectsToDelete.begin(); for(itr = _objectsToDelete.begin();
@ -65,7 +65,7 @@ void DeleteHandler::flush()
void DeleteHandler::flushAll() void DeleteHandler::flushAll()
{ {
int temp_numFramesToRetainObjects = _numFramesToRetainObjects; unsigned int temp_numFramesToRetainObjects = _numFramesToRetainObjects;
_numFramesToRetainObjects = 0; _numFramesToRetainObjects = 0;
typedef std::list<const osg::Referenced*> DeletionList; typedef std::list<const osg::Referenced*> DeletionList;

View File

@ -512,7 +512,7 @@ OcclusionQueryNode::getPassed( const osg::Camera* camera, osg::NodeVisitor& nv )
// 2) we haven't rendered for an abnormally long time (probably because we're an out-of-range LOD child) // 2) we haven't rendered for an abnormally long time (probably because we're an out-of-range LOD child)
// In these cases, assume we're visible to avoid blinking. // In these cases, assume we're visible to avoid blinking.
OpenThreads::ScopedLock<OpenThreads::Mutex> lock( _frameCountMutex ); OpenThreads::ScopedLock<OpenThreads::Mutex> lock( _frameCountMutex );
const int& lastQueryFrame( _frameCountMap[ camera ] ); const unsigned int& lastQueryFrame( _frameCountMap[ camera ] );
if( ( lastQueryFrame == 0 ) || if( ( lastQueryFrame == 0 ) ||
( (nv.getTraversalNumber() - lastQueryFrame) > (_queryFrameCount + 1) ) ) ( (nv.getTraversalNumber() - lastQueryFrame) > (_queryFrameCount + 1) ) )
return true; return true;
@ -559,7 +559,7 @@ OcclusionQueryNode::traverseQuery( const osg::Camera* camera, osg::NodeVisitor&
const int curFrame = nv.getTraversalNumber(); const int curFrame = nv.getTraversalNumber();
OpenThreads::ScopedLock<OpenThreads::Mutex> lock( _frameCountMutex ); OpenThreads::ScopedLock<OpenThreads::Mutex> lock( _frameCountMutex );
int& lastQueryFrame = _frameCountMap[ camera ]; unsigned int& lastQueryFrame = _frameCountMap[ camera ];
issueQuery = (curFrame - lastQueryFrame >= _queryFrameCount); issueQuery = (curFrame - lastQueryFrame >= _queryFrameCount);
if (issueQuery) if (issueQuery)
lastQueryFrame = curFrame; lastQueryFrame = curFrame;

View File

@ -127,7 +127,7 @@ void PagedLOD::traverse(NodeVisitor& nv)
} }
double timeStamp = nv.getFrameStamp()?nv.getFrameStamp()->getReferenceTime():0.0; double timeStamp = nv.getFrameStamp()?nv.getFrameStamp()->getReferenceTime():0.0;
int frameNumber = nv.getFrameStamp()?nv.getFrameStamp()->getFrameNumber():0; unsigned int frameNumber = nv.getFrameStamp()?nv.getFrameStamp()->getFrameNumber():0;
bool updateTimeStamp = nv.getVisitorType()==osg::NodeVisitor::CULL_VISITOR; bool updateTimeStamp = nv.getVisitorType()==osg::NodeVisitor::CULL_VISITOR;
switch(nv.getTraversalMode()) switch(nv.getTraversalMode())
@ -284,7 +284,7 @@ bool PagedLOD::removeChildren( unsigned int pos,unsigned int numChildrenToRemove
return Group::removeChildren(pos,numChildrenToRemove); return Group::removeChildren(pos,numChildrenToRemove);
} }
bool PagedLOD::removeExpiredChildren(double expiryTime, int expiryFrame, NodeList& removedChildren) bool PagedLOD::removeExpiredChildren(double expiryTime, unsigned int expiryFrame, NodeList& removedChildren)
{ {
if (_children.size()>_numChildrenThatCannotBeExpired) if (_children.size()>_numChildrenThatCannotBeExpired)
{ {
@ -299,23 +299,3 @@ bool PagedLOD::removeExpiredChildren(double expiryTime, int expiryFrame, NodeLis
} }
return false; return false;
} }
bool PagedLOD::releaseGLObjectsOnExpiredChildren(double releaseTime, int releaseFrame)
{
unsigned int numChildrenReleased = 0;
unsigned int numChildren = osg::minimum(_perRangeDataList.size(), _children.size());
for(unsigned int i=_numChildrenThatCannotBeExpired; i<numChildren; ++i)
{
if (_perRangeDataList[i]._frameNumberOfLastReleaseGLObjects != _perRangeDataList[i]._frameNumber &&
_perRangeDataList[i]._timeStamp<releaseTime &&
_perRangeDataList[i]._frameNumber<releaseFrame)
{
_perRangeDataList[i]._frameNumberOfLastReleaseGLObjects = _perRangeDataList[i]._frameNumber;
_children[i]->releaseGLObjects();
++numChildrenReleased;
}
}
return numChildrenReleased>0;
}

View File

@ -40,7 +40,7 @@ void Stats::allocate(unsigned int numberOfFrames)
} }
bool Stats::setAttribute(int frameNumber, const std::string& attributeName, double value) bool Stats::setAttribute(unsigned int frameNumber, const std::string& attributeName, double value)
{ {
if (frameNumber<getEarliestFrameNumber()) return false; if (frameNumber<getEarliestFrameNumber()) return false;
@ -51,13 +51,13 @@ bool Stats::setAttribute(int frameNumber, const std::string& attributeName, doub
// need to advance // need to advance
// first clear the entries up to and including the new frameNumber // first clear the entries up to and including the new frameNumber
for(int i = _latestFrameNumber+1; i<= frameNumber; ++i) for(unsigned int i = _latestFrameNumber+1; i<= frameNumber; ++i)
{ {
int index = (i - _baseFrameNumber) % _attributeMapList.size(); unsigned int index = (i - _baseFrameNumber) % _attributeMapList.size();
_attributeMapList[index].clear(); _attributeMapList[index].clear();
} }
if ( (frameNumber-_baseFrameNumber) >= static_cast<int>(_attributeMapList.size())) if ( (frameNumber-_baseFrameNumber) >= static_cast<unsigned int>(_attributeMapList.size()))
{ {
_baseFrameNumber = (frameNumber/_attributeMapList.size())*_attributeMapList.size(); _baseFrameNumber = (frameNumber/_attributeMapList.size())*_attributeMapList.size();
} }
@ -79,7 +79,7 @@ bool Stats::setAttribute(int frameNumber, const std::string& attributeName, doub
return true; return true;
} }
bool Stats::getAttributeNoMutex(int frameNumber, const std::string& attributeName, double& value) const bool Stats::getAttributeNoMutex(unsigned int frameNumber, const std::string& attributeName, double& value) const
{ {
int index = getIndex(frameNumber); int index = getIndex(frameNumber);
if (index<0) return false; if (index<0) return false;
@ -97,7 +97,7 @@ bool Stats::getAveragedAttribute(const std::string& attributeName, double& value
return getAveragedAttribute(getEarliestFrameNumber(), getLatestFrameNumber(), attributeName, value, averageInInverseSpace); return getAveragedAttribute(getEarliestFrameNumber(), getLatestFrameNumber(), attributeName, value, averageInInverseSpace);
} }
bool Stats::getAveragedAttribute(int startFrameNumber, int endFrameNumber, const std::string& attributeName, double& value, bool averageInInverseSpace) const bool Stats::getAveragedAttribute(unsigned int startFrameNumber, unsigned int endFrameNumber, const std::string& attributeName, double& value, bool averageInInverseSpace) const
{ {
if (endFrameNumber<startFrameNumber) if (endFrameNumber<startFrameNumber)
{ {
@ -108,7 +108,7 @@ bool Stats::getAveragedAttribute(int startFrameNumber, int endFrameNumber, const
double total = 0.0; double total = 0.0;
double numValidSamples = 0.0; double numValidSamples = 0.0;
for(int i = startFrameNumber; i<=endFrameNumber; ++i) for(unsigned int i = startFrameNumber; i<=endFrameNumber; ++i)
{ {
double v = 0.0; double v = 0.0;
if (getAttributeNoMutex(i,attributeName,v)) if (getAttributeNoMutex(i,attributeName,v))
@ -127,7 +127,7 @@ bool Stats::getAveragedAttribute(int startFrameNumber, int endFrameNumber, const
else return false; else return false;
} }
Stats::AttributeMap& Stats::getAttributeMapNoMutex(int frameNumber) Stats::AttributeMap& Stats::getAttributeMapNoMutex(unsigned int frameNumber)
{ {
int index = getIndex(frameNumber); int index = getIndex(frameNumber);
if (index<0) return _invalidAttributeMap; if (index<0) return _invalidAttributeMap;
@ -135,7 +135,7 @@ Stats::AttributeMap& Stats::getAttributeMapNoMutex(int frameNumber)
return _attributeMapList[index]; return _attributeMapList[index];
} }
const Stats::AttributeMap& Stats::getAttributeMapNoMutex(int frameNumber) const const Stats::AttributeMap& Stats::getAttributeMapNoMutex(unsigned int frameNumber) const
{ {
int index = getIndex(frameNumber); int index = getIndex(frameNumber);
if (index<0) return _invalidAttributeMap; if (index<0) return _invalidAttributeMap;
@ -149,7 +149,7 @@ void Stats::report(std::ostream& out, const char* indent) const
if (indent) out<<indent; if (indent) out<<indent;
out<<"Stats "<<_name<<std::endl; out<<"Stats "<<_name<<std::endl;
for(int i = getEarliestFrameNumber(); i<= getLatestFrameNumber(); ++i) for(unsigned int i = getEarliestFrameNumber(); i<= getLatestFrameNumber(); ++i)
{ {
out<<" FrameNumber "<<i<<std::endl; out<<" FrameNumber "<<i<<std::endl;
const osg::Stats::AttributeMap& attributes = getAttributeMapNoMutex(i); const osg::Stats::AttributeMap& attributes = getAttributeMapNoMutex(i);

View File

@ -150,7 +150,7 @@ struct StatsGraph : public osg::MatrixTransform
const float _max; const float _max;
const std::string _nameBegin; const std::string _nameBegin;
const std::string _nameEnd; const std::string _nameEnd;
mutable int _frameNumber; mutable unsigned int _frameNumber;
GraphUpdateCallback(float width, float height, osg::Stats* viewerStats, osg::Stats* stats, GraphUpdateCallback(float width, float height, osg::Stats* viewerStats, osg::Stats* stats,
float max, const std::string& nameBegin, const std::string& nameEnd = "") float max, const std::string& nameBegin, const std::string& nameEnd = "")
@ -168,7 +168,7 @@ struct StatsGraph : public osg::MatrixTransform
osg::Vec3Array* vertices = dynamic_cast<osg::Vec3Array*>(geometry->getVertexArray()); osg::Vec3Array* vertices = dynamic_cast<osg::Vec3Array*>(geometry->getVertexArray());
if (!vertices) return; if (!vertices) return;
int frameNumber = nv->getFrameStamp()->getFrameNumber(); unsigned int frameNumber = nv->getFrameStamp()->getFrameNumber();
if (frameNumber == _frameNumber) if (frameNumber == _frameNumber)
return; return;
@ -253,7 +253,7 @@ struct ValueTextDrawCallback : public virtual osg::Drawable::DrawCallback
{ {
osgText::Text* text = (osgText::Text*)drawable; osgText::Text* text = (osgText::Text*)drawable;
int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber(); unsigned int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
if (frameNumber == _frameNumber) { if (frameNumber == _frameNumber) {
text->drawImplementation(renderInfo); text->drawImplementation(renderInfo);
return; return;
@ -276,7 +276,7 @@ struct ValueTextDrawCallback : public virtual osg::Drawable::DrawCallback
osg::ref_ptr<osg::Stats> _stats; osg::ref_ptr<osg::Stats> _stats;
std::string _attributeName; std::string _attributeName;
mutable char _tmpText[128]; mutable char _tmpText[128];
mutable int _frameNumber; mutable unsigned int _frameNumber;
}; };
@ -562,10 +562,10 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap
typedef std::vector<osg::Stats*> StatsList; typedef std::vector<osg::Stats*> StatsList;
StatsList statsList; StatsList statsList;
for (int i = 0; i < (int)finder._timelines.size(); i++) for (unsigned int i = 0; i < finder._timelines.size(); i++)
statsList.push_back(finder._timelines[i]->getStats()); statsList.push_back(finder._timelines[i]->getStats());
for(int i = statsList[0]->getEarliestFrameNumber(); i<= statsList[0]->getLatestFrameNumber()-1; ++i) for(unsigned int i = statsList[0]->getEarliestFrameNumber(); i< statsList[0]->getLatestFrameNumber(); ++i)
{ {
for(StatsList::iterator itr = statsList.begin(); for(StatsList::iterator itr = statsList.begin();
itr != statsList.end(); itr != statsList.end();

View File

@ -46,10 +46,6 @@ using namespace OpenThreads;
static osg::ApplicationUsageProxy DatabasePager_e0(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_DO_PRE_COMPILE <ON/OFF>","Switch on or off the pre compile of OpenGL object database pager."); static osg::ApplicationUsageProxy DatabasePager_e0(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_DO_PRE_COMPILE <ON/OFF>","Switch on or off the pre compile of OpenGL object database pager.");
static osg::ApplicationUsageProxy DatabasePager_e3(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_DATABASE_PAGER_DRAWABLE <mode>","Set the drawable policy for setting of loaded drawable to specified type. mode can be one of DoNotModify, DisplayList, VBO or VertexArrays>."); static osg::ApplicationUsageProxy DatabasePager_e3(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_DATABASE_PAGER_DRAWABLE <mode>","Set the drawable policy for setting of loaded drawable to specified type. mode can be one of DoNotModify, DisplayList, VBO or VertexArrays>.");
static osg::ApplicationUsageProxy DatabasePager_e4(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_DATABASE_PAGER_PRIORITY <mode>", "Set the thread priority to DEFAULT, MIN, LOW, NOMINAL, HIGH or MAX."); static osg::ApplicationUsageProxy DatabasePager_e4(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_DATABASE_PAGER_PRIORITY <mode>", "Set the thread priority to DEFAULT, MIN, LOW, NOMINAL, HIGH or MAX.");
static osg::ApplicationUsageProxy DatabasePager_e7(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_EXPIRY_DELAY <float> ","Set the length of time a PagedLOD child is kept in memory, without being used, before its tagged as expired, and ear marked to deletion.");
static osg::ApplicationUsageProxy DatabasePager_e8(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_EXPIRY_FRAMES <int> ","Set number of frames a PagedLOD child is kept in memory, without being used, before its tagged as expired, and ear marked to deletion.");
static osg::ApplicationUsageProxy DatabasePager_e9(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_RELEASE_DELAY <float> ","Set the length of time a PagedLOD child's OpenGL objects are kept in memory, without being used, before be released (setting to OFF disables this feature.)");
static osg::ApplicationUsageProxy DatabasePager_e10(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_RELEASE_FRAMES <int> ","Set number of frames a PagedLOD child's OpenGL objects are kept in memory, without being used, before be released.");
static osg::ApplicationUsageProxy DatabasePager_e11(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_MAX_PAGEDLOD <num>","Set the target maximum number of PagedLOD to maintain."); static osg::ApplicationUsageProxy DatabasePager_e11(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_MAX_PAGEDLOD <num>","Set the target maximum number of PagedLOD to maintain.");
// Convert function objects that take pointer args into functions that a // Convert function objects that take pointer args into functions that a
@ -154,10 +150,12 @@ public:
traverse(plod); traverse(plod);
} }
bool removeExpiredChildrenAndCountPagedLODs(osg::PagedLOD* plod, double expiryTime, int expiryFrame, osg::NodeList& removedChildren) bool removeExpiredChildrenAndCountPagedLODs(osg::PagedLOD* plod, double expiryTime, unsigned int expiryFrame, osg::NodeList& removedChildren)
{ {
size_t sizeBefore = removedChildren.size(); size_t sizeBefore = removedChildren.size();
plod->removeExpiredChildren(expiryTime, expiryFrame, removedChildren); plod->removeExpiredChildren(expiryTime, expiryFrame, removedChildren);
for(size_t i = sizeBefore; i<removedChildren.size(); ++i) for(size_t i = sizeBefore; i<removedChildren.size(); ++i)
{ {
removedChildren[i]->accept(*this); removedChildren[i]->accept(*this);
@ -197,7 +195,7 @@ public:
virtual unsigned int size() { return _pagedLODs.size(); } virtual unsigned int size() { return _pagedLODs.size(); }
virtual void removeExpiredChildren( virtual void removeExpiredChildren(
int numberChildrenToRemove, double expiryTime, int expiryFrame, int numberChildrenToRemove, double expiryTime, unsigned int expiryFrame,
DatabasePager::ObjectList& childrenRemoved, bool visitActive) DatabasePager::ObjectList& childrenRemoved, bool visitActive)
{ {
int leftToRemove = numberChildrenToRemove; int leftToRemove = numberChildrenToRemove;
@ -208,34 +206,33 @@ public:
osg::ref_ptr<osg::PagedLOD> plod; osg::ref_ptr<osg::PagedLOD> plod;
if (itr->lock(plod)) if (itr->lock(plod))
{ {
int delta = expiryFrame - plod->getFrameNumberOfLastTraversal(); bool plodActive = expiryFrame < plod->getFrameNumberOfLastTraversal();
if ((visitActive && delta > 0) || (!visitActive && delta <= 0)) if (visitActive==plodActive) // true if (visitActive && plodActive) OR (!visitActive &&!plodActive)
{ {
++itr; DatabasePager::CountPagedLODsVisitor countPagedLODsVisitor;
continue; osg::NodeList expiredChildren; // expired PagedLODs
countPagedLODsVisitor.removeExpiredChildrenAndCountPagedLODs(
plod.get(), expiryTime, expiryFrame, expiredChildren);
// Clear any expired PagedLODs out of the set
for (DatabasePager::CountPagedLODsVisitor::PagedLODset::iterator
citr = countPagedLODsVisitor._pagedLODs.begin(),
end = countPagedLODsVisitor._pagedLODs.end();
citr != end;
++citr)
{
osg::observer_ptr<osg::PagedLOD> clod(*citr);
// This child PagedLOD cannot be equal to the
// PagedLOD pointed to by itr because it must be
// in itr's subgraph. Therefore erasing it doesn't
// invalidate itr.
if (_pagedLODs.erase(clod) > 0)
leftToRemove--;
}
childrenRemoved.insert(childrenRemoved.end(),
expiredChildren.begin(),
expiredChildren.end());
} }
DatabasePager::CountPagedLODsVisitor countPagedLODsVisitor;
osg::NodeList expiredChildren; // expired PagedLODs
countPagedLODsVisitor.removeExpiredChildrenAndCountPagedLODs(
plod.get(), expiryTime, expiryFrame, expiredChildren);
// Clear any expired PagedLODs out of the set
for (DatabasePager::CountPagedLODsVisitor::PagedLODset::iterator
citr = countPagedLODsVisitor._pagedLODs.begin(),
end = countPagedLODsVisitor._pagedLODs.end();
citr != end;
++citr)
{
osg::observer_ptr<osg::PagedLOD> clod(*citr);
// This child PagedLOD cannot be equal to the
// PagedLOD pointed to by itr because it must be
// in itr's subgraph. Therefore erasing it doesn't
// invalidate itr.
if (_pagedLODs.erase(clod) > 0)
leftToRemove--;
}
childrenRemoved.insert(childrenRemoved.end(),
expiredChildren.begin(),
expiredChildren.end());
// advance the iterator to the next element // advance the iterator to the next element
++itr; ++itr;
} }
@ -485,7 +482,7 @@ bool DatabasePager::RequestQueue::pruneOldRequestsAndCheckIfEmpty()
{ {
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_requestMutex); OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_requestMutex);
int frameNumber = _pager->_frameNumber; unsigned int frameNumber = _pager->_frameNumber;
if (_frameNumberLastPruned != frameNumber) if (_frameNumberLastPruned != frameNumber)
{ {
for(RequestQueue::RequestList::iterator citr = _requestList.begin(); for(RequestQueue::RequestList::iterator citr = _requestList.begin();
@ -686,8 +683,7 @@ int DatabasePager::DatabaseThread::cancel()
if( isRunning() ) if( isRunning() )
{ {
setDone(true);
_done = true;
switch(_mode) switch(_mode)
{ {
@ -710,9 +706,10 @@ int DatabasePager::DatabaseThread::cancel()
// OSG_INFO<<"Waiting for DatabasePager::DatabaseThread to cancel"<<std::endl; // OSG_INFO<<"Waiting for DatabasePager::DatabaseThread to cancel"<<std::endl;
OpenThreads::Thread::YieldCurrentThread(); OpenThreads::Thread::YieldCurrentThread();
} }
// _startThreadCalled = false; // _startThreadCalled = false;
} }
//OSG_NOTICE<<"DatabasePager::DatabaseThread stopped running"<<std::endl; //OSG_NOTICE<<"DatabasePager::DatabaseThread stopped running"<<std::endl;
return result; return result;
@ -1013,7 +1010,7 @@ DatabasePager::DatabasePager()
_databasePagerThreadPaused = false; _databasePagerThreadPaused = false;
_numFramesActive = 0; _numFramesActive = 0;
_frameNumber = 0; _frameNumber.exchange(0);
#if __APPLE__ #if __APPLE__
@ -1139,7 +1136,7 @@ DatabasePager::DatabasePager(const DatabasePager& rhs)
_databasePagerThreadPaused = false; _databasePagerThreadPaused = false;
_numFramesActive = 0; _numFramesActive = 0;
_frameNumber = 0; _frameNumber.exchange(0);
_drawablePolicy = rhs._drawablePolicy; _drawablePolicy = rhs._drawablePolicy;
@ -1387,7 +1384,7 @@ void DatabasePager::requestNodeFile(const std::string& fileName,osg::Group* grou
double timestamp = framestamp?framestamp->getReferenceTime():0.0; double timestamp = framestamp?framestamp->getReferenceTime():0.0;
int frameNumber = framestamp?framestamp->getFrameNumber():_frameNumber; unsigned int frameNumber = framestamp?framestamp->getFrameNumber():static_cast<unsigned int>(_frameNumber);
// #define WITH_REQUESTNODEFILE_TIMING // #define WITH_REQUESTNODEFILE_TIMING
#ifdef WITH_REQUESTNODEFILE_TIMING #ifdef WITH_REQUESTNODEFILE_TIMING
@ -1521,7 +1518,7 @@ void DatabasePager::signalBeginFrame(const osg::FrameStamp* framestamp)
_dataToCompileList->pruneOldRequestsAndCheckIfEmpty(); _dataToCompileList->pruneOldRequestsAndCheckIfEmpty();
//OSG_INFO << "signalBeginFrame "<<framestamp->getFrameNumber()<<">>>>>>>>>>>>>>>>"<<std::endl; //OSG_INFO << "signalBeginFrame "<<framestamp->getFrameNumber()<<">>>>>>>>>>>>>>>>"<<std::endl;
_frameNumber = framestamp->getFrameNumber(); _frameNumber.exchange(framestamp->getFrameNumber());
} //else OSG_INFO << "signalBeginFrame >>>>>>>>>>>>>>>>"<<std::endl; } //else OSG_INFO << "signalBeginFrame >>>>>>>>>>>>>>>>"<<std::endl;
} }
@ -1594,7 +1591,7 @@ void DatabasePager::updateSceneGraph(const osg::FrameStamp& frameStamp)
void DatabasePager::addLoadedDataToSceneGraph(const osg::FrameStamp &frameStamp) void DatabasePager::addLoadedDataToSceneGraph(const osg::FrameStamp &frameStamp)
{ {
double timeStamp = frameStamp.getReferenceTime(); double timeStamp = frameStamp.getReferenceTime();
int frameNumber = frameStamp.getFrameNumber(); unsigned int frameNumber = frameStamp.getFrameNumber();
osg::Timer_t before = osg::Timer::instance()->tick(), mid, last; osg::Timer_t before = osg::Timer::instance()->tick(), mid, last;
@ -1702,6 +1699,13 @@ void DatabasePager::removeExpiredSubgraphs(const osg::FrameStamp& frameStamp)
static double s_total_time_stage_c = 0.0; static double s_total_time_stage_c = 0.0;
static double s_total_max_stage_c = 0.0; static double s_total_max_stage_c = 0.0;
if (frameStamp.getFrameNumber()==0)
{
// No need to remove anything on first frame.
return;
}
osg::Timer_t startTick = osg::Timer::instance()->tick(); osg::Timer_t startTick = osg::Timer::instance()->tick();
// numPagedLODs >= actual number of PagedLODs. There can be // numPagedLODs >= actual number of PagedLODs. There can be
@ -1727,7 +1731,7 @@ void DatabasePager::removeExpiredSubgraphs(const osg::FrameStamp& frameStamp)
ObjectList childrenRemoved; ObjectList childrenRemoved;
double expiryTime = frameStamp.getReferenceTime() - 0.1; double expiryTime = frameStamp.getReferenceTime() - 0.1;
int expiryFrame = frameStamp.getFrameNumber() - 1; unsigned int expiryFrame = frameStamp.getFrameNumber() - 1;
// First traverse inactive PagedLODs, as their children will // First traverse inactive PagedLODs, as their children will
// certainly have expired. Then traverse active nodes if we still // certainly have expired. Then traverse active nodes if we still
@ -1783,7 +1787,7 @@ class DatabasePager::FindPagedLODsVisitor : public osg::NodeVisitor
{ {
public: public:
FindPagedLODsVisitor(DatabasePager::PagedLODList& pagedLODList, int frameNumber): FindPagedLODsVisitor(DatabasePager::PagedLODList& pagedLODList, unsigned int frameNumber):
osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN), osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN),
_activePagedLODList(pagedLODList), _activePagedLODList(pagedLODList),
_frameNumber(frameNumber) _frameNumber(frameNumber)
@ -1803,7 +1807,7 @@ public:
} }
DatabasePager::PagedLODList& _activePagedLODList; DatabasePager::PagedLODList& _activePagedLODList;
int _frameNumber; unsigned int _frameNumber;
protected: protected:
@ -1811,7 +1815,7 @@ protected:
}; };
void DatabasePager::registerPagedLODs(osg::Node* subgraph, int frameNumber) void DatabasePager::registerPagedLODs(osg::Node* subgraph, unsigned int frameNumber)
{ {
if (!subgraph) return; if (!subgraph) return;

View File

@ -101,7 +101,7 @@ void osgParticle::ParticleProcessor::traverse(osg::NodeVisitor& nv)
if (alive && if (alive &&
_enabled && _enabled &&
!_ps->isFrozen() && !_ps->isFrozen() &&
(_ps->getLastFrameNumber() >= (nv.getFrameStamp()->getFrameNumber() - 1) || !_ps->getFreezeOnCull())) ((_ps->getLastFrameNumber()+1) >= (nv.getFrameStamp()->getFrameNumber()) || !_ps->getFreezeOnCull()))
{ {
// initialize matrix flags // initialize matrix flags
_need_ltw_matrix = true; _need_ltw_matrix = true;

View File

@ -11,7 +11,7 @@ PendulumCallback::PendulumCallback(const osg::Vec3& axis,
_endAngle = endAngle; _endAngle = endAngle;
_frequency = frequency; _frequency = frequency;
_previousTraversalNumber = -1; _previousTraversalNumber = osg::UNINITIALIZED_FRAME_NUMBER;
_previousTime = -1.0; _previousTime = -1.0;
_angle = 0.0; _angle = 0.0;
} }

View File

@ -21,7 +21,7 @@ class PendulumCallback : public osg::NodeCallback
float _frequency; float _frequency;
osg::Vec3 _axis; osg::Vec3 _axis;
int _previousTraversalNumber; unsigned int _previousTraversalNumber;
double _previousTime; double _previousTime;
float _angle; float _angle;
}; };

View File

@ -10,7 +10,7 @@ ShuttleCallback::ShuttleCallback(const osg::Vec3& startPos,
_endPos = endPos; _endPos = endPos;
_frequency = frequency; _frequency = frequency;
_previousTraversalNumber = -1; _previousTraversalNumber = osg::UNINITIALIZED_FRAME_NUMBER;
_previousTime = -1.0; _previousTime = -1.0;
_angle = 0.0; _angle = 0.0;
} }

View File

@ -20,7 +20,7 @@ class ShuttleCallback : public osg::NodeCallback
osg::Vec3 _endPos; osg::Vec3 _endPos;
float _frequency; float _frequency;
int _previousTraversalNumber; unsigned int _previousTraversalNumber;
double _previousTime; double _previousTime;
float _angle; float _angle;
}; };

View File

@ -30,7 +30,7 @@ void TXPPagedLOD::traverse(osg::NodeVisitor& nv)
double timeStamp = nv.getFrameStamp()?nv.getFrameStamp()->getReferenceTime():0.0; double timeStamp = nv.getFrameStamp()?nv.getFrameStamp()->getReferenceTime():0.0;
bool updateTimeStamp = nv.getVisitorType()==osg::NodeVisitor::CULL_VISITOR; bool updateTimeStamp = nv.getVisitorType()==osg::NodeVisitor::CULL_VISITOR;
int frameNumber = nv.getFrameStamp()?nv.getFrameStamp()->getFrameNumber():0; unsigned int frameNumber = nv.getFrameStamp()?nv.getFrameStamp()->getFrameNumber():0;
// set the frame number of the traversal so that external nodes can find out how active this // set the frame number of the traversal so that external nodes can find out how active this
// node is. // node is.

View File

@ -19,6 +19,7 @@
#include <osg/Version> #include <osg/Version>
#include <osgGA/GUIEventAdapter> #include <osgGA/GUIEventAdapter>
#include <osg/NodeVisitor>
#include <osg/io_utils> #include <osg/io_utils>
#include <QtGui/QGraphicsItem> #include <QtGui/QGraphicsItem>
#include <QtGui/QGraphicsProxyWidget> #include <QtGui/QGraphicsProxyWidget>
@ -100,7 +101,7 @@ QGraphicsViewAdapter::QGraphicsViewAdapter(osg::Image* image, QWidget* widget):
_currentRead = 0; _currentRead = 0;
_currentWrite = 1; _currentWrite = 1;
_previousWrite = 2; _previousWrite = 2;
_previousFrameNumber = 0; _previousFrameNumber = osg::UNINITIALIZED_FRAME_NUMBER;
_newImageAvailable = false; _newImageAvailable = false;
connect(_graphicsScene, SIGNAL(changed(const QList<QRectF> &)), connect(_graphicsScene, SIGNAL(changed(const QList<QRectF> &)),

View File

@ -27,7 +27,7 @@ static const unsigned int SCALE_Z_LIMIT_BIT = 0x80000000u >> 8;
DOFTransform::DOFTransform(): DOFTransform::DOFTransform():
_previousTraversalNumber(-1), _previousTraversalNumber(osg::UNINITIALIZED_FRAME_NUMBER),
_previousTime(0.0), _previousTime(0.0),
_limitationFlags(0), _limitationFlags(0),
_animationOn(false), _animationOn(false),

View File

@ -39,6 +39,8 @@ ImpostorSprite::ImpostorSprite()
_previous = NULL; _previous = NULL;
_next = NULL; _next = NULL;
_lastFrameUsed = osg::UNINITIALIZED_FRAME_NUMBER;
_texture = NULL; _texture = NULL;
_s = 0; _s = 0;
_t = 0; _t = 0;
@ -238,7 +240,7 @@ void ImpostorSpriteManager::remove(ImpostorSprite* is)
if (_last==is) _last = is->_previous; if (_last==is) _last = is->_previous;
} }
ImpostorSprite* ImpostorSpriteManager::createOrReuseImpostorSprite(int s,int t,int frameNumber) ImpostorSprite* ImpostorSpriteManager::createOrReuseImpostorSprite(int s,int t,unsigned int frameNumber)
{ {
if (!empty()) if (!empty())
{ {

View File

@ -1212,7 +1212,7 @@ void Text::drawImplementation(osg::State& state, const osg::Vec4& colorMultiplie
#endif #endif
if (_characterSizeMode!=OBJECT_COORDS || _autoRotateToScreen) if (_characterSizeMode!=OBJECT_COORDS || _autoRotateToScreen)
{ {
int frameNumber = state.getFrameStamp()?state.getFrameStamp()->getFrameNumber():0; unsigned int frameNumber = state.getFrameStamp()?state.getFrameStamp()->getFrameNumber():0;
AutoTransformCache& atc = _autoTransformCache[contextID]; AutoTransformCache& atc = _autoTransformCache[contextID];
const osg::Matrix& modelview = state.getModelViewMatrix(); const osg::Matrix& modelview = state.getModelViewMatrix();
const osg::Matrix& projection = state.getProjectionMatrix(); const osg::Matrix& projection = state.getProjectionMatrix();

View File

@ -379,7 +379,7 @@ void SceneView::updateUniforms()
if ((_activeUniforms & FRAME_NUMBER_UNIFORM) && _frameStamp.valid()) if ((_activeUniforms & FRAME_NUMBER_UNIFORM) && _frameStamp.valid())
{ {
osg::Uniform* uniform = _localStateSet->getOrCreateUniform("osg_FrameNumber",osg::Uniform::INT); osg::Uniform* uniform = _localStateSet->getOrCreateUniform("osg_FrameNumber",osg::Uniform::UNSIGNED_INT);
uniform->set(_frameStamp->getFrameNumber()); uniform->set(_frameStamp->getFrameNumber());
} }

View File

@ -22,7 +22,7 @@ TransformCallback::TransformCallback(const osg::Vec3& pivot,const osg::Vec3& axi
_axis = axis; _axis = axis;
_angular_velocity = angularVelocity; _angular_velocity = angularVelocity;
_previousTraversalNumber = -1; _previousTraversalNumber = osg::UNINITIALIZED_FRAME_NUMBER;
_previousTime = -1.0; _previousTime = -1.0;
_pause = false; _pause = false;

View File

@ -619,7 +619,7 @@ void CompositeViewer::advance(double simulationTime)
if (_done) return; if (_done) return;
double prevousReferenceTime = _frameStamp->getReferenceTime(); double prevousReferenceTime = _frameStamp->getReferenceTime();
int previousFrameNumber = _frameStamp->getFrameNumber(); unsigned int previousFrameNumber = _frameStamp->getFrameNumber();
_frameStamp->setFrameNumber(_frameStamp->getFrameNumber()+1); _frameStamp->setFrameNumber(_frameStamp->getFrameNumber()+1);

View File

@ -45,12 +45,12 @@ class OSGVIEWER_EXPORT EXTQuerySupport : public OpenGLQuerySupport
public: public:
EXTQuerySupport(); EXTQuerySupport();
void checkQuery(osg::Stats* stats, osg::State* state, osg::Timer_t startTick); void checkQuery(osg::Stats* stats, osg::State* state, osg::Timer_t startTick);
virtual void beginQuery(int frameNumber, osg::State* state); virtual void beginQuery(unsigned int frameNumber, osg::State* state);
virtual void endQuery(osg::State* state); virtual void endQuery(osg::State* state);
virtual void initialize(osg::State* state, osg::Timer_t startTick); virtual void initialize(osg::State* state, osg::Timer_t startTick);
protected: protected:
GLuint createQueryObject(); GLuint createQueryObject();
typedef std::pair<GLuint, int> QueryFrameNumberPair; typedef std::pair<GLuint, unsigned int> QueryFrameNumberPair;
typedef std::list<QueryFrameNumberPair> QueryFrameNumberList; typedef std::list<QueryFrameNumberPair> QueryFrameNumberList;
typedef std::vector<GLuint> QueryList; typedef std::vector<GLuint> QueryList;
@ -118,7 +118,7 @@ GLuint EXTQuerySupport::createQueryObject()
} }
} }
void EXTQuerySupport::beginQuery(int frameNumber, osg::State* state) void EXTQuerySupport::beginQuery(unsigned int frameNumber, osg::State* state)
{ {
GLuint query = createQueryObject(); GLuint query = createQueryObject();
_extensions->glBeginQuery(GL_TIME_ELAPSED, query); _extensions->glBeginQuery(GL_TIME_ELAPSED, query);
@ -148,7 +148,7 @@ public:
virtual void checkQuery(osg::Stats* stats, osg::State* state, virtual void checkQuery(osg::Stats* stats, osg::State* state,
osg::Timer_t startTick); osg::Timer_t startTick);
virtual void beginQuery(int frameNumber, osg::State* state); virtual void beginQuery(unsigned int frameNumber, osg::State* state);
virtual void endQuery(osg::State* state); virtual void endQuery(osg::State* state);
virtual void initialize(osg::State* state, osg::Timer_t startTick); virtual void initialize(osg::State* state, osg::Timer_t startTick);
protected: protected:
@ -159,12 +159,12 @@ protected:
: queries(start_, end_), frameNumber(frameNumber_) : queries(start_, end_), frameNumber(frameNumber_)
{ {
} }
ActiveQuery(const QueryPair& queries_, int frameNumber_) ActiveQuery(const QueryPair& queries_, unsigned int frameNumber_)
: queries(queries_), frameNumber(frameNumber_) : queries(queries_), frameNumber(frameNumber_)
{ {
} }
QueryPair queries; QueryPair queries;
int frameNumber; unsigned int frameNumber;
}; };
typedef std::list<ActiveQuery> QueryFrameList; typedef std::list<ActiveQuery> QueryFrameList;
typedef std::vector<QueryPair> QueryList; typedef std::vector<QueryPair> QueryList;
@ -177,7 +177,7 @@ void ARBQuerySupport::initialize(osg::State* state, osg::Timer_t startTick)
OpenGLQuerySupport::initialize(state, startTick); OpenGLQuerySupport::initialize(state, startTick);
} }
void ARBQuerySupport::beginQuery(int frameNumber, osg::State* state) void ARBQuerySupport::beginQuery(unsigned int frameNumber, osg::State* state)
{ {
QueryPair query; QueryPair query;
if (_availableQueryObjects.empty()) if (_availableQueryObjects.empty())
@ -531,7 +531,7 @@ void Renderer::cull()
osg::Stats* stats = sceneView->getCamera()->getStats(); osg::Stats* stats = sceneView->getCamera()->getStats();
osg::State* state = sceneView->getState(); osg::State* state = sceneView->getState();
const osg::FrameStamp* fs = state->getFrameStamp(); const osg::FrameStamp* fs = state->getFrameStamp();
int frameNumber = fs ? fs->getFrameNumber() : 0; unsigned int frameNumber = fs ? fs->getFrameNumber() : 0;
// do cull traversal // do cull traversal
osg::Timer_t beforeCullTick = osg::Timer::instance()->tick(); osg::Timer_t beforeCullTick = osg::Timer::instance()->tick();
@ -643,7 +643,7 @@ void Renderer::draw()
osg::Stats* stats = sceneView->getCamera()->getStats(); osg::Stats* stats = sceneView->getCamera()->getStats();
osg::State* state = sceneView->getState(); osg::State* state = sceneView->getState();
int frameNumber = state->getFrameStamp()->getFrameNumber(); unsigned int frameNumber = state->getFrameStamp()->getFrameNumber();
if (!_initialized) if (!_initialized)
{ {
@ -747,7 +747,7 @@ void Renderer::cull_draw()
osg::Stats* stats = sceneView->getCamera()->getStats(); osg::Stats* stats = sceneView->getCamera()->getStats();
osg::State* state = sceneView->getState(); osg::State* state = sceneView->getState();
const osg::FrameStamp* fs = state->getFrameStamp(); const osg::FrameStamp* fs = state->getFrameStamp();
int frameNumber = fs ? fs->getFrameNumber() : 0; unsigned int frameNumber = fs ? fs->getFrameNumber() : 0;
if (!_initialized) if (!_initialized)
{ {

View File

@ -219,7 +219,7 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap
} }
} }
for(int i = viewer->getViewerStats()->getEarliestFrameNumber(); i<= viewer->getViewerStats()->getLatestFrameNumber()-1; ++i) for(unsigned int i = viewer->getViewerStats()->getEarliestFrameNumber(); i<= viewer->getViewerStats()->getLatestFrameNumber()-1; ++i)
{ {
for(StatsList::iterator itr = statsList.begin(); for(StatsList::iterator itr = statsList.begin();
itr != statsList.end(); itr != statsList.end();
@ -402,7 +402,7 @@ struct RawValueTextDrawCallback : public virtual osg::Drawable::DrawCallback
{ {
_tickLastUpdated = tick; _tickLastUpdated = tick;
int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber(); unsigned int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
double value; double value;
if (_stats->getAttribute(frameNumber, _attributeName, value)) if (_stats->getAttribute(frameNumber, _attributeName, value))
{ {
@ -469,7 +469,7 @@ struct CameraSceneStatsTextDrawCallback : public virtual osg::Drawable::DrawCall
viewStr << _camera->getName(); viewStr << _camera->getName();
viewStr << std::endl; viewStr << std::endl;
int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber(); unsigned int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
if (!(renderer->getGraphicsThreadDoesCull())) if (!(renderer->getGraphicsThreadDoesCull()))
{ {
--frameNumber; --frameNumber;
@ -556,7 +556,7 @@ struct ViewSceneStatsTextDrawCallback : public virtual osg::Drawable::DrawCallba
viewStr << ": " << _view->getName(); viewStr << ": " << _view->getName();
viewStr << std::endl; viewStr << std::endl;
int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber(); unsigned int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
// if (!(renderer->getGraphicsThreadDoesCull())) // if (!(renderer->getGraphicsThreadDoesCull()))
{ {
--frameNumber; --frameNumber;
@ -625,7 +625,6 @@ struct BlockDrawCallback : public virtual osg::Drawable::DrawCallback
osg::Vec3Array* vertices = (osg::Vec3Array*)geom->getVertexArray(); osg::Vec3Array* vertices = (osg::Vec3Array*)geom->getVertexArray();
int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber(); int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
int startFrame = frameNumber + _frameDelta - _numFrames + 1; int startFrame = frameNumber + _frameDelta - _numFrames + 1;
int endFrame = frameNumber + _frameDelta; int endFrame = frameNumber + _frameDelta;
double referenceTime; double referenceTime;
@ -755,7 +754,7 @@ protected:
osg::Vec3Array* vertices = dynamic_cast<osg::Vec3Array*>(geometry->getVertexArray()); osg::Vec3Array* vertices = dynamic_cast<osg::Vec3Array*>(geometry->getVertexArray());
if (!vertices) return; if (!vertices) return;
int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber(); unsigned int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
// Get stats // Get stats
double value; double value;
@ -837,11 +836,11 @@ protected:
const float _max; const float _max;
const std::string _nameBegin; const std::string _nameBegin;
const std::string _nameEnd; const std::string _nameEnd;
static int _frameNumber; static unsigned int _frameNumber;
}; };
}; };
int StatsGraph::GraphUpdateCallback::_frameNumber = 0; unsigned int StatsGraph::GraphUpdateCallback::_frameNumber = 0;
osg::Geometry* StatsHandler::createGeometry(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks) osg::Geometry* StatsHandler::createGeometry(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks)

View File

@ -569,7 +569,7 @@ void Viewer::advance(double simulationTime)
if (_done) return; if (_done) return;
double prevousReferenceTime = _frameStamp->getReferenceTime(); double prevousReferenceTime = _frameStamp->getReferenceTime();
int previousFrameNumber = _frameStamp->getFrameNumber(); unsigned int previousFrameNumber = _frameStamp->getFrameNumber();
_frameStamp->setFrameNumber(_frameStamp->getFrameNumber()+1); _frameStamp->setFrameNumber(_frameStamp->getFrameNumber()+1);

View File

@ -584,10 +584,10 @@ int ViewerBase::run()
realize(); realize();
} }
const char* str = getenv("OSG_RUN_FRAME_COUNT"); const char* run_frame_count_str = getenv("OSG_RUN_FRAME_COUNT");
int runTillFrameNumber = str==0 ? -1 : atoi(str); unsigned int runTillFrameNumber = run_frame_count_str==0 ? osg::UNINITIALIZED_FRAME_NUMBER : atoi(run_frame_count_str);
while(!done() && (runTillFrameNumber<0 || getViewerFrameStamp()->getFrameNumber()<runTillFrameNumber)) while(!done() && (run_frame_count_str==0 || getViewerFrameStamp()->getFrameNumber()<runTillFrameNumber))
{ {
double minFrameTime = _runMaxFrameRate>0.0 ? 1.0/_runMaxFrameRate : 0.0; double minFrameTime = _runMaxFrameRate>0.0 ? 1.0/_runMaxFrameRate : 0.0;
osg::Timer_t startFrameTick = osg::Timer::instance()->tick(); osg::Timer_t startFrameTick = osg::Timer::instance()->tick();
@ -676,7 +676,7 @@ void ViewerBase::renderingTraversals()
if (getViewerStats() && getViewerStats()->collectStats("scene")) if (getViewerStats() && getViewerStats()->collectStats("scene"))
{ {
int frameNumber = frameStamp ? frameStamp->getFrameNumber() : 0; unsigned int frameNumber = frameStamp ? frameStamp->getFrameNumber() : 0;
Views views; Views views;
getViews(views); getViews(views);

View File

@ -10,6 +10,6 @@ REGISTER_OBJECT_WRAPPER( OcclusionQueryNode,
{ {
ADD_BOOL_SERIALIZER( QueriesEnabled, true ); // _enabled ADD_BOOL_SERIALIZER( QueriesEnabled, true ); // _enabled
ADD_UINT_SERIALIZER( VisibilityThreshold, 0 ); // _visThreshold ADD_UINT_SERIALIZER( VisibilityThreshold, 0 ); // _visThreshold
ADD_INT_SERIALIZER( QueryFrameCount, 0 ); // _queryFrameCount ADD_UINT_SERIALIZER( QueryFrameCount, 0 ); // _queryFrameCount
ADD_BOOL_SERIALIZER( DebugDisplay, false ); // _debugBB ADD_BOOL_SERIALIZER( DebugDisplay, false ); // _debugBB
} }

View File

@ -139,9 +139,17 @@ REGISTER_OBJECT_WRAPPER( PagedLOD,
// Note: osg::Group is not in the list to prevent recording dynamic loaded children // Note: osg::Group is not in the list to prevent recording dynamic loaded children
ADD_USER_SERIALIZER( DatabasePath ); // _databasePath ADD_USER_SERIALIZER( DatabasePath ); // _databasePath
ADD_INT_SERIALIZER( FrameNumberOfLastTraversal, 0 ); // _frameNumberOfLastTraversal ADD_UINT_SERIALIZER( FrameNumberOfLastTraversal, 0 ); // _frameNumberOfLastTraversal, note, not required, removed from soversion 70 onwwards, see below
ADD_UINT_SERIALIZER( NumChildrenThatCannotBeExpired, 0 ); // _numChildrenThatCannotBeExpired ADD_UINT_SERIALIZER( NumChildrenThatCannotBeExpired, 0 ); // _numChildrenThatCannotBeExpired
ADD_BOOL_SERIALIZER( DisableExternalChildrenPaging, false ); // _disableExternalChildrenPaging ADD_BOOL_SERIALIZER( DisableExternalChildrenPaging, false ); // _disableExternalChildrenPaging
ADD_USER_SERIALIZER( RangeDataList ); // _perRangeDataList ADD_USER_SERIALIZER( RangeDataList ); // _perRangeDataList
ADD_USER_SERIALIZER( Children ); // _children (which are not loaded from external) ADD_USER_SERIALIZER( Children ); // _children (which are not loaded from external)
UPDATE_TO_VERSION( 70 )
{
REMOVE_SERIALIZER( FrameNumberOfLastTraversal );
}
} }