Converted FrameStamp::g/setFrameNumber from int to uint
This commit is contained in:
@@ -37,7 +37,7 @@ void DeleteHandler::flush()
|
||||
// list, but delete the objects outside this scoped lock so that if any objects deleted
|
||||
// unref their children then no deadlock happens.
|
||||
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex);
|
||||
int frameNumberToClearTo = _currentFrameNumber - _numFramesToRetainObjects;
|
||||
unsigned int frameNumberToClearTo = _currentFrameNumber - _numFramesToRetainObjects;
|
||||
|
||||
ObjectsToDeleteList::iterator itr;
|
||||
for(itr = _objectsToDelete.begin();
|
||||
@@ -65,7 +65,7 @@ void DeleteHandler::flush()
|
||||
|
||||
void DeleteHandler::flushAll()
|
||||
{
|
||||
int temp_numFramesToRetainObjects = _numFramesToRetainObjects;
|
||||
unsigned int temp_numFramesToRetainObjects = _numFramesToRetainObjects;
|
||||
_numFramesToRetainObjects = 0;
|
||||
|
||||
typedef std::list<const osg::Referenced*> DeletionList;
|
||||
|
||||
@@ -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)
|
||||
// In these cases, assume we're visible to avoid blinking.
|
||||
OpenThreads::ScopedLock<OpenThreads::Mutex> lock( _frameCountMutex );
|
||||
const int& lastQueryFrame( _frameCountMap[ camera ] );
|
||||
const unsigned int& lastQueryFrame( _frameCountMap[ camera ] );
|
||||
if( ( lastQueryFrame == 0 ) ||
|
||||
( (nv.getTraversalNumber() - lastQueryFrame) > (_queryFrameCount + 1) ) )
|
||||
return true;
|
||||
@@ -559,7 +559,7 @@ OcclusionQueryNode::traverseQuery( const osg::Camera* camera, osg::NodeVisitor&
|
||||
const int curFrame = nv.getTraversalNumber();
|
||||
|
||||
OpenThreads::ScopedLock<OpenThreads::Mutex> lock( _frameCountMutex );
|
||||
int& lastQueryFrame = _frameCountMap[ camera ];
|
||||
unsigned int& lastQueryFrame = _frameCountMap[ camera ];
|
||||
issueQuery = (curFrame - lastQueryFrame >= _queryFrameCount);
|
||||
if (issueQuery)
|
||||
lastQueryFrame = curFrame;
|
||||
|
||||
@@ -127,7 +127,7 @@ void PagedLOD::traverse(NodeVisitor& nv)
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
switch(nv.getTraversalMode())
|
||||
@@ -284,7 +284,7 @@ bool PagedLOD::removeChildren( unsigned int pos,unsigned int 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)
|
||||
{
|
||||
@@ -299,23 +299,3 @@ bool PagedLOD::removeExpiredChildren(double expiryTime, int expiryFrame, NodeLis
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -51,13 +51,13 @@ bool Stats::setAttribute(int frameNumber, const std::string& attributeName, doub
|
||||
// need to advance
|
||||
|
||||
// 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();
|
||||
}
|
||||
|
||||
if ( (frameNumber-_baseFrameNumber) >= static_cast<int>(_attributeMapList.size()))
|
||||
if ( (frameNumber-_baseFrameNumber) >= static_cast<unsigned int>(_attributeMapList.size()))
|
||||
{
|
||||
_baseFrameNumber = (frameNumber/_attributeMapList.size())*_attributeMapList.size();
|
||||
}
|
||||
@@ -79,7 +79,7 @@ bool Stats::setAttribute(int frameNumber, const std::string& attributeName, doub
|
||||
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);
|
||||
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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
@@ -108,7 +108,7 @@ bool Stats::getAveragedAttribute(int startFrameNumber, int endFrameNumber, const
|
||||
|
||||
double total = 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;
|
||||
if (getAttributeNoMutex(i,attributeName,v))
|
||||
@@ -127,7 +127,7 @@ bool Stats::getAveragedAttribute(int startFrameNumber, int endFrameNumber, const
|
||||
else return false;
|
||||
}
|
||||
|
||||
Stats::AttributeMap& Stats::getAttributeMapNoMutex(int frameNumber)
|
||||
Stats::AttributeMap& Stats::getAttributeMapNoMutex(unsigned int frameNumber)
|
||||
{
|
||||
int index = getIndex(frameNumber);
|
||||
if (index<0) return _invalidAttributeMap;
|
||||
@@ -135,7 +135,7 @@ Stats::AttributeMap& Stats::getAttributeMapNoMutex(int frameNumber)
|
||||
return _attributeMapList[index];
|
||||
}
|
||||
|
||||
const Stats::AttributeMap& Stats::getAttributeMapNoMutex(int frameNumber) const
|
||||
const Stats::AttributeMap& Stats::getAttributeMapNoMutex(unsigned int frameNumber) const
|
||||
{
|
||||
int index = getIndex(frameNumber);
|
||||
if (index<0) return _invalidAttributeMap;
|
||||
@@ -149,7 +149,7 @@ void Stats::report(std::ostream& out, const char* indent) const
|
||||
|
||||
if (indent) out<<indent;
|
||||
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;
|
||||
const osg::Stats::AttributeMap& attributes = getAttributeMapNoMutex(i);
|
||||
|
||||
@@ -150,7 +150,7 @@ struct StatsGraph : public osg::MatrixTransform
|
||||
const float _max;
|
||||
const std::string _nameBegin;
|
||||
const std::string _nameEnd;
|
||||
mutable int _frameNumber;
|
||||
mutable unsigned int _frameNumber;
|
||||
|
||||
GraphUpdateCallback(float width, float height, osg::Stats* viewerStats, osg::Stats* stats,
|
||||
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());
|
||||
if (!vertices) return;
|
||||
|
||||
int frameNumber = nv->getFrameStamp()->getFrameNumber();
|
||||
unsigned int frameNumber = nv->getFrameStamp()->getFrameNumber();
|
||||
if (frameNumber == _frameNumber)
|
||||
return;
|
||||
|
||||
@@ -253,7 +253,7 @@ struct ValueTextDrawCallback : public virtual osg::Drawable::DrawCallback
|
||||
{
|
||||
osgText::Text* text = (osgText::Text*)drawable;
|
||||
|
||||
int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
|
||||
unsigned int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
|
||||
if (frameNumber == _frameNumber) {
|
||||
text->drawImplementation(renderInfo);
|
||||
return;
|
||||
@@ -276,7 +276,7 @@ struct ValueTextDrawCallback : public virtual osg::Drawable::DrawCallback
|
||||
osg::ref_ptr<osg::Stats> _stats;
|
||||
std::string _attributeName;
|
||||
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;
|
||||
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());
|
||||
|
||||
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();
|
||||
itr != statsList.end();
|
||||
|
||||
@@ -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_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_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.");
|
||||
|
||||
// Convert function objects that take pointer args into functions that a
|
||||
@@ -154,10 +150,12 @@ public:
|
||||
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();
|
||||
|
||||
plod->removeExpiredChildren(expiryTime, expiryFrame, removedChildren);
|
||||
|
||||
for(size_t i = sizeBefore; i<removedChildren.size(); ++i)
|
||||
{
|
||||
removedChildren[i]->accept(*this);
|
||||
@@ -197,7 +195,7 @@ public:
|
||||
virtual unsigned int size() { return _pagedLODs.size(); }
|
||||
|
||||
virtual void removeExpiredChildren(
|
||||
int numberChildrenToRemove, double expiryTime, int expiryFrame,
|
||||
int numberChildrenToRemove, double expiryTime, unsigned int expiryFrame,
|
||||
DatabasePager::ObjectList& childrenRemoved, bool visitActive)
|
||||
{
|
||||
int leftToRemove = numberChildrenToRemove;
|
||||
@@ -208,34 +206,33 @@ public:
|
||||
osg::ref_ptr<osg::PagedLOD> plod;
|
||||
if (itr->lock(plod))
|
||||
{
|
||||
int delta = expiryFrame - plod->getFrameNumberOfLastTraversal();
|
||||
if ((visitActive && delta > 0) || (!visitActive && delta <= 0))
|
||||
bool plodActive = expiryFrame < plod->getFrameNumberOfLastTraversal();
|
||||
if (visitActive==plodActive) // true if (visitActive && plodActive) OR (!visitActive &&!plodActive)
|
||||
{
|
||||
++itr;
|
||||
continue;
|
||||
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());
|
||||
}
|
||||
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
|
||||
++itr;
|
||||
}
|
||||
@@ -485,7 +482,7 @@ bool DatabasePager::RequestQueue::pruneOldRequestsAndCheckIfEmpty()
|
||||
{
|
||||
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_requestMutex);
|
||||
|
||||
int frameNumber = _pager->_frameNumber;
|
||||
unsigned int frameNumber = _pager->_frameNumber;
|
||||
if (_frameNumberLastPruned != frameNumber)
|
||||
{
|
||||
for(RequestQueue::RequestList::iterator citr = _requestList.begin();
|
||||
@@ -686,8 +683,7 @@ int DatabasePager::DatabaseThread::cancel()
|
||||
|
||||
if( isRunning() )
|
||||
{
|
||||
|
||||
_done = true;
|
||||
setDone(true);
|
||||
|
||||
switch(_mode)
|
||||
{
|
||||
@@ -710,9 +706,10 @@ int DatabasePager::DatabaseThread::cancel()
|
||||
// OSG_INFO<<"Waiting for DatabasePager::DatabaseThread to cancel"<<std::endl;
|
||||
OpenThreads::Thread::YieldCurrentThread();
|
||||
}
|
||||
|
||||
|
||||
// _startThreadCalled = false;
|
||||
}
|
||||
|
||||
//OSG_NOTICE<<"DatabasePager::DatabaseThread stopped running"<<std::endl;
|
||||
return result;
|
||||
|
||||
@@ -1013,7 +1010,7 @@ DatabasePager::DatabasePager()
|
||||
_databasePagerThreadPaused = false;
|
||||
|
||||
_numFramesActive = 0;
|
||||
_frameNumber = 0;
|
||||
_frameNumber.exchange(0);
|
||||
|
||||
|
||||
#if __APPLE__
|
||||
@@ -1139,7 +1136,7 @@ DatabasePager::DatabasePager(const DatabasePager& rhs)
|
||||
_databasePagerThreadPaused = false;
|
||||
|
||||
_numFramesActive = 0;
|
||||
_frameNumber = 0;
|
||||
_frameNumber.exchange(0);
|
||||
|
||||
_drawablePolicy = rhs._drawablePolicy;
|
||||
|
||||
@@ -1387,7 +1384,7 @@ void DatabasePager::requestNodeFile(const std::string& fileName,osg::Group* grou
|
||||
|
||||
|
||||
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
|
||||
#ifdef WITH_REQUESTNODEFILE_TIMING
|
||||
@@ -1521,7 +1518,7 @@ void DatabasePager::signalBeginFrame(const osg::FrameStamp* framestamp)
|
||||
_dataToCompileList->pruneOldRequestsAndCheckIfEmpty();
|
||||
|
||||
//OSG_INFO << "signalBeginFrame "<<framestamp->getFrameNumber()<<">>>>>>>>>>>>>>>>"<<std::endl;
|
||||
_frameNumber = framestamp->getFrameNumber();
|
||||
_frameNumber.exchange(framestamp->getFrameNumber());
|
||||
|
||||
} //else OSG_INFO << "signalBeginFrame >>>>>>>>>>>>>>>>"<<std::endl;
|
||||
}
|
||||
@@ -1594,7 +1591,7 @@ void DatabasePager::updateSceneGraph(const osg::FrameStamp& frameStamp)
|
||||
void DatabasePager::addLoadedDataToSceneGraph(const osg::FrameStamp &frameStamp)
|
||||
{
|
||||
double timeStamp = frameStamp.getReferenceTime();
|
||||
int frameNumber = frameStamp.getFrameNumber();
|
||||
unsigned int frameNumber = frameStamp.getFrameNumber();
|
||||
|
||||
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_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();
|
||||
|
||||
// numPagedLODs >= actual number of PagedLODs. There can be
|
||||
@@ -1727,7 +1731,7 @@ void DatabasePager::removeExpiredSubgraphs(const osg::FrameStamp& frameStamp)
|
||||
ObjectList childrenRemoved;
|
||||
|
||||
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
|
||||
// certainly have expired. Then traverse active nodes if we still
|
||||
@@ -1783,7 +1787,7 @@ class DatabasePager::FindPagedLODsVisitor : public osg::NodeVisitor
|
||||
{
|
||||
public:
|
||||
|
||||
FindPagedLODsVisitor(DatabasePager::PagedLODList& pagedLODList, int frameNumber):
|
||||
FindPagedLODsVisitor(DatabasePager::PagedLODList& pagedLODList, unsigned int frameNumber):
|
||||
osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN),
|
||||
_activePagedLODList(pagedLODList),
|
||||
_frameNumber(frameNumber)
|
||||
@@ -1803,7 +1807,7 @@ public:
|
||||
}
|
||||
|
||||
DatabasePager::PagedLODList& _activePagedLODList;
|
||||
int _frameNumber;
|
||||
unsigned int _frameNumber;
|
||||
|
||||
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;
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ void osgParticle::ParticleProcessor::traverse(osg::NodeVisitor& nv)
|
||||
if (alive &&
|
||||
_enabled &&
|
||||
!_ps->isFrozen() &&
|
||||
(_ps->getLastFrameNumber() >= (nv.getFrameStamp()->getFrameNumber() - 1) || !_ps->getFreezeOnCull()))
|
||||
((_ps->getLastFrameNumber()+1) >= (nv.getFrameStamp()->getFrameNumber()) || !_ps->getFreezeOnCull()))
|
||||
{
|
||||
// initialize matrix flags
|
||||
_need_ltw_matrix = true;
|
||||
|
||||
@@ -11,7 +11,7 @@ PendulumCallback::PendulumCallback(const osg::Vec3& axis,
|
||||
_endAngle = endAngle;
|
||||
_frequency = frequency;
|
||||
|
||||
_previousTraversalNumber = -1;
|
||||
_previousTraversalNumber = osg::UNINITIALIZED_FRAME_NUMBER;
|
||||
_previousTime = -1.0;
|
||||
_angle = 0.0;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ class PendulumCallback : public osg::NodeCallback
|
||||
float _frequency;
|
||||
osg::Vec3 _axis;
|
||||
|
||||
int _previousTraversalNumber;
|
||||
unsigned int _previousTraversalNumber;
|
||||
double _previousTime;
|
||||
float _angle;
|
||||
};
|
||||
|
||||
@@ -10,7 +10,7 @@ ShuttleCallback::ShuttleCallback(const osg::Vec3& startPos,
|
||||
_endPos = endPos;
|
||||
_frequency = frequency;
|
||||
|
||||
_previousTraversalNumber = -1;
|
||||
_previousTraversalNumber = osg::UNINITIALIZED_FRAME_NUMBER;
|
||||
_previousTime = -1.0;
|
||||
_angle = 0.0;
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ class ShuttleCallback : public osg::NodeCallback
|
||||
osg::Vec3 _endPos;
|
||||
float _frequency;
|
||||
|
||||
int _previousTraversalNumber;
|
||||
unsigned int _previousTraversalNumber;
|
||||
double _previousTime;
|
||||
float _angle;
|
||||
};
|
||||
|
||||
@@ -30,7 +30,7 @@ void TXPPagedLOD::traverse(osg::NodeVisitor& nv)
|
||||
|
||||
double timeStamp = nv.getFrameStamp()?nv.getFrameStamp()->getReferenceTime():0.0;
|
||||
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
|
||||
// node is.
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <osg/Version>
|
||||
#include <osgGA/GUIEventAdapter>
|
||||
|
||||
#include <osg/NodeVisitor>
|
||||
#include <osg/io_utils>
|
||||
#include <QtGui/QGraphicsItem>
|
||||
#include <QtGui/QGraphicsProxyWidget>
|
||||
@@ -100,7 +101,7 @@ QGraphicsViewAdapter::QGraphicsViewAdapter(osg::Image* image, QWidget* widget):
|
||||
_currentRead = 0;
|
||||
_currentWrite = 1;
|
||||
_previousWrite = 2;
|
||||
_previousFrameNumber = 0;
|
||||
_previousFrameNumber = osg::UNINITIALIZED_FRAME_NUMBER;
|
||||
_newImageAvailable = false;
|
||||
|
||||
connect(_graphicsScene, SIGNAL(changed(const QList<QRectF> &)),
|
||||
|
||||
@@ -27,7 +27,7 @@ static const unsigned int SCALE_Z_LIMIT_BIT = 0x80000000u >> 8;
|
||||
|
||||
|
||||
DOFTransform::DOFTransform():
|
||||
_previousTraversalNumber(-1),
|
||||
_previousTraversalNumber(osg::UNINITIALIZED_FRAME_NUMBER),
|
||||
_previousTime(0.0),
|
||||
_limitationFlags(0),
|
||||
_animationOn(false),
|
||||
|
||||
@@ -39,6 +39,8 @@ ImpostorSprite::ImpostorSprite()
|
||||
_previous = NULL;
|
||||
_next = NULL;
|
||||
|
||||
_lastFrameUsed = osg::UNINITIALIZED_FRAME_NUMBER;
|
||||
|
||||
_texture = NULL;
|
||||
_s = 0;
|
||||
_t = 0;
|
||||
@@ -238,7 +240,7 @@ void ImpostorSpriteManager::remove(ImpostorSprite* is)
|
||||
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())
|
||||
{
|
||||
|
||||
@@ -1212,7 +1212,7 @@ void Text::drawImplementation(osg::State& state, const osg::Vec4& colorMultiplie
|
||||
#endif
|
||||
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];
|
||||
const osg::Matrix& modelview = state.getModelViewMatrix();
|
||||
const osg::Matrix& projection = state.getProjectionMatrix();
|
||||
|
||||
@@ -379,7 +379,7 @@ void SceneView::updateUniforms()
|
||||
|
||||
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());
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ TransformCallback::TransformCallback(const osg::Vec3& pivot,const osg::Vec3& axi
|
||||
_axis = axis;
|
||||
_angular_velocity = angularVelocity;
|
||||
|
||||
_previousTraversalNumber = -1;
|
||||
_previousTraversalNumber = osg::UNINITIALIZED_FRAME_NUMBER;
|
||||
_previousTime = -1.0;
|
||||
|
||||
_pause = false;
|
||||
|
||||
@@ -619,7 +619,7 @@ void CompositeViewer::advance(double simulationTime)
|
||||
if (_done) return;
|
||||
|
||||
double prevousReferenceTime = _frameStamp->getReferenceTime();
|
||||
int previousFrameNumber = _frameStamp->getFrameNumber();
|
||||
unsigned int previousFrameNumber = _frameStamp->getFrameNumber();
|
||||
|
||||
|
||||
_frameStamp->setFrameNumber(_frameStamp->getFrameNumber()+1);
|
||||
|
||||
@@ -45,12 +45,12 @@ class OSGVIEWER_EXPORT EXTQuerySupport : public OpenGLQuerySupport
|
||||
public:
|
||||
EXTQuerySupport();
|
||||
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 initialize(osg::State* state, osg::Timer_t startTick);
|
||||
protected:
|
||||
GLuint createQueryObject();
|
||||
typedef std::pair<GLuint, int> QueryFrameNumberPair;
|
||||
typedef std::pair<GLuint, unsigned int> QueryFrameNumberPair;
|
||||
typedef std::list<QueryFrameNumberPair> QueryFrameNumberList;
|
||||
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();
|
||||
_extensions->glBeginQuery(GL_TIME_ELAPSED, query);
|
||||
@@ -148,7 +148,7 @@ public:
|
||||
virtual 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 initialize(osg::State* state, osg::Timer_t startTick);
|
||||
protected:
|
||||
@@ -159,12 +159,12 @@ protected:
|
||||
: queries(start_, end_), frameNumber(frameNumber_)
|
||||
{
|
||||
}
|
||||
ActiveQuery(const QueryPair& queries_, int frameNumber_)
|
||||
ActiveQuery(const QueryPair& queries_, unsigned int frameNumber_)
|
||||
: queries(queries_), frameNumber(frameNumber_)
|
||||
{
|
||||
}
|
||||
QueryPair queries;
|
||||
int frameNumber;
|
||||
unsigned int frameNumber;
|
||||
};
|
||||
typedef std::list<ActiveQuery> QueryFrameList;
|
||||
typedef std::vector<QueryPair> QueryList;
|
||||
@@ -177,7 +177,7 @@ void ARBQuerySupport::initialize(osg::State* state, osg::Timer_t startTick)
|
||||
OpenGLQuerySupport::initialize(state, startTick);
|
||||
}
|
||||
|
||||
void ARBQuerySupport::beginQuery(int frameNumber, osg::State* state)
|
||||
void ARBQuerySupport::beginQuery(unsigned int frameNumber, osg::State* state)
|
||||
{
|
||||
QueryPair query;
|
||||
if (_availableQueryObjects.empty())
|
||||
@@ -531,7 +531,7 @@ void Renderer::cull()
|
||||
osg::Stats* stats = sceneView->getCamera()->getStats();
|
||||
osg::State* state = sceneView->getState();
|
||||
const osg::FrameStamp* fs = state->getFrameStamp();
|
||||
int frameNumber = fs ? fs->getFrameNumber() : 0;
|
||||
unsigned int frameNumber = fs ? fs->getFrameNumber() : 0;
|
||||
|
||||
// do cull traversal
|
||||
osg::Timer_t beforeCullTick = osg::Timer::instance()->tick();
|
||||
@@ -643,7 +643,7 @@ void Renderer::draw()
|
||||
|
||||
osg::Stats* stats = sceneView->getCamera()->getStats();
|
||||
osg::State* state = sceneView->getState();
|
||||
int frameNumber = state->getFrameStamp()->getFrameNumber();
|
||||
unsigned int frameNumber = state->getFrameStamp()->getFrameNumber();
|
||||
|
||||
if (!_initialized)
|
||||
{
|
||||
@@ -747,7 +747,7 @@ void Renderer::cull_draw()
|
||||
osg::Stats* stats = sceneView->getCamera()->getStats();
|
||||
osg::State* state = sceneView->getState();
|
||||
const osg::FrameStamp* fs = state->getFrameStamp();
|
||||
int frameNumber = fs ? fs->getFrameNumber() : 0;
|
||||
unsigned int frameNumber = fs ? fs->getFrameNumber() : 0;
|
||||
|
||||
if (!_initialized)
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
itr != statsList.end();
|
||||
@@ -402,7 +402,7 @@ struct RawValueTextDrawCallback : public virtual osg::Drawable::DrawCallback
|
||||
{
|
||||
_tickLastUpdated = tick;
|
||||
|
||||
int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
|
||||
unsigned int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
|
||||
double value;
|
||||
if (_stats->getAttribute(frameNumber, _attributeName, value))
|
||||
{
|
||||
@@ -469,7 +469,7 @@ struct CameraSceneStatsTextDrawCallback : public virtual osg::Drawable::DrawCall
|
||||
viewStr << _camera->getName();
|
||||
viewStr << std::endl;
|
||||
|
||||
int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
|
||||
unsigned int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
|
||||
if (!(renderer->getGraphicsThreadDoesCull()))
|
||||
{
|
||||
--frameNumber;
|
||||
@@ -556,7 +556,7 @@ struct ViewSceneStatsTextDrawCallback : public virtual osg::Drawable::DrawCallba
|
||||
viewStr << ": " << _view->getName();
|
||||
viewStr << std::endl;
|
||||
|
||||
int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
|
||||
unsigned int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
|
||||
// if (!(renderer->getGraphicsThreadDoesCull()))
|
||||
{
|
||||
--frameNumber;
|
||||
@@ -625,7 +625,6 @@ struct BlockDrawCallback : public virtual osg::Drawable::DrawCallback
|
||||
osg::Vec3Array* vertices = (osg::Vec3Array*)geom->getVertexArray();
|
||||
|
||||
int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
|
||||
|
||||
int startFrame = frameNumber + _frameDelta - _numFrames + 1;
|
||||
int endFrame = frameNumber + _frameDelta;
|
||||
double referenceTime;
|
||||
@@ -755,7 +754,7 @@ protected:
|
||||
osg::Vec3Array* vertices = dynamic_cast<osg::Vec3Array*>(geometry->getVertexArray());
|
||||
if (!vertices) return;
|
||||
|
||||
int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
|
||||
unsigned int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
|
||||
|
||||
// Get stats
|
||||
double value;
|
||||
@@ -837,11 +836,11 @@ protected:
|
||||
const float _max;
|
||||
const std::string _nameBegin;
|
||||
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)
|
||||
|
||||
@@ -569,7 +569,7 @@ void Viewer::advance(double simulationTime)
|
||||
if (_done) return;
|
||||
|
||||
double prevousReferenceTime = _frameStamp->getReferenceTime();
|
||||
int previousFrameNumber = _frameStamp->getFrameNumber();
|
||||
unsigned int previousFrameNumber = _frameStamp->getFrameNumber();
|
||||
|
||||
_frameStamp->setFrameNumber(_frameStamp->getFrameNumber()+1);
|
||||
|
||||
|
||||
@@ -584,10 +584,10 @@ int ViewerBase::run()
|
||||
realize();
|
||||
}
|
||||
|
||||
const char* str = getenv("OSG_RUN_FRAME_COUNT");
|
||||
int runTillFrameNumber = str==0 ? -1 : atoi(str);
|
||||
const char* run_frame_count_str = getenv("OSG_RUN_FRAME_COUNT");
|
||||
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;
|
||||
osg::Timer_t startFrameTick = osg::Timer::instance()->tick();
|
||||
@@ -676,7 +676,7 @@ void ViewerBase::renderingTraversals()
|
||||
|
||||
if (getViewerStats() && getViewerStats()->collectStats("scene"))
|
||||
{
|
||||
int frameNumber = frameStamp ? frameStamp->getFrameNumber() : 0;
|
||||
unsigned int frameNumber = frameStamp ? frameStamp->getFrameNumber() : 0;
|
||||
|
||||
Views views;
|
||||
getViews(views);
|
||||
|
||||
@@ -10,6 +10,6 @@ REGISTER_OBJECT_WRAPPER( OcclusionQueryNode,
|
||||
{
|
||||
ADD_BOOL_SERIALIZER( QueriesEnabled, true ); // _enabled
|
||||
ADD_UINT_SERIALIZER( VisibilityThreshold, 0 ); // _visThreshold
|
||||
ADD_INT_SERIALIZER( QueryFrameCount, 0 ); // _queryFrameCount
|
||||
ADD_UINT_SERIALIZER( QueryFrameCount, 0 ); // _queryFrameCount
|
||||
ADD_BOOL_SERIALIZER( DebugDisplay, false ); // _debugBB
|
||||
}
|
||||
|
||||
@@ -139,9 +139,17 @@ REGISTER_OBJECT_WRAPPER( PagedLOD,
|
||||
// Note: osg::Group is not in the list to prevent recording dynamic loaded children
|
||||
|
||||
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_BOOL_SERIALIZER( DisableExternalChildrenPaging, false ); // _disableExternalChildrenPaging
|
||||
ADD_USER_SERIALIZER( RangeDataList ); // _perRangeDataList
|
||||
ADD_USER_SERIALIZER( Children ); // _children (which are not loaded from external)
|
||||
|
||||
UPDATE_TO_VERSION( 70 )
|
||||
{
|
||||
REMOVE_SERIALIZER( FrameNumberOfLastTraversal );
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user