diff --git a/include/osgUtil/IncrementalCompileOperation b/include/osgUtil/IncrementalCompileOperation index 46688baa2..96f77319b 100644 --- a/include/osgUtil/IncrementalCompileOperation +++ b/include/osgUtil/IncrementalCompileOperation @@ -255,6 +255,8 @@ class OSGUTIL_EXPORT IncrementalCompileOperation : public osg::GraphicsOperation bool compile(CompileInfo& compileInfo); + bool compiled() const { return _numberCompileListsToCompile==0; } + OpenThreads::Atomic _numberCompileListsToCompile; osg::observer_ptr _attachmentPoint; @@ -293,6 +295,8 @@ class OSGUTIL_EXPORT IncrementalCompileOperation : public osg::GraphicsOperation virtual ~IncrementalCompileOperation(); + void compileSets(CompileSets& toCompile, CompileInfo compileInfo); + double _targetFrameRate; double _minimumTimeAvailableForGLCompileAndDeletePerFrame; unsigned int _maximumNumOfObjectsToCompilePerFrame; diff --git a/src/osgUtil/IncrementalCompileOperation.cpp b/src/osgUtil/IncrementalCompileOperation.cpp index b240d86ed..84c74bca3 100644 --- a/src/osgUtil/IncrementalCompileOperation.cpp +++ b/src/osgUtil/IncrementalCompileOperation.cpp @@ -669,8 +669,9 @@ void IncrementalCompileOperation::operator () (osg::GraphicsContext* context) double currentElapsedFrameTime = context->getTimeSinceLastClear(); - OSG_NOTIFY(level)<<"currentTime = "<get(); if (cs->compile(compileInfo)) @@ -723,7 +741,7 @@ void IncrementalCompileOperation::operator () (osg::GraphicsContext* context) CompileSets::iterator cs_itr = std::find(_toCompile.begin(), _toCompile.end(), *itr); if (cs_itr != _toCompile.end()) { - OSG_NOTIFY(level)<<"Erasing from list"< compilded_lock(_compiledMutex); _compiled.push_back(cs); } + + // remove entry from list. + itr = toCompile.erase(itr); + } + else + { + ++itr; } } - //glFush(); - //glFinish(); + } + void IncrementalCompileOperation::compileAllForNextFrame(unsigned int numFramesToDoCompileAll) { _compileAllTillFrameNumber = _currentFrameNumber+numFramesToDoCompileAll;