From Tim Moore,

Fixes to race in DatabasePager where a parent PagedLOD
of newly loaded subgraph has been expired.

Clean up of visitor naming to make it clearer what role it has.
This commit is contained in:
Robert Osfield
2011-03-30 15:15:07 +00:00
parent 5625c0cd8b
commit 70dfd11531
3 changed files with 43 additions and 38 deletions

View File

@@ -271,7 +271,7 @@ class OSGDB_EXPORT DatabasePager : public osg::NodeVisitor::DatabaseRequestHandl
typedef std::set< osg::ref_ptr<osg::StateSet> > StateSetList;
typedef std::vector< osg::ref_ptr<osg::Drawable> > DrawableList;
class CountPagedLODsVisitor;
class ExpirePagedLODsVisitor;
typedef std::list< osg::ref_ptr<osg::Object> > ObjectList;
@@ -307,7 +307,8 @@ class OSGDB_EXPORT DatabasePager : public osg::NodeVisitor::DatabaseRequestHandl
_frameNumberLastRequest(0),
_timestampLastRequest(0.0),
_priorityLastRequest(0.0f),
_numOfRequests(0)
_numOfRequests(0),
_groupExpired(false)
{}
void invalidate();
@@ -331,6 +332,7 @@ class OSGDB_EXPORT DatabasePager : public osg::NodeVisitor::DatabaseRequestHandl
osg::ref_ptr<Options> _loadOptions;
osg::observer_ptr<osgUtil::IncrementalCompileOperation::CompileSet> _compileSet;
bool _groupExpired; // flag used only in update thread
bool isRequestCurrent (int frameNumber) const
{