From e23a30652dd8758d5c97954efb8d090d9bd8aa3c Mon Sep 17 00:00:00 2001 From: Philippe Renon Date: Sun, 3 Jul 2016 17:31:07 +0200 Subject: [PATCH] streamline DatabasePager::requiresUpdateSceneGraph() would trigger unnecessary redraws when there were pending file requests or active database threads tested ok with and without IncrementalCompileOperation --- src/osgDB/DatabasePager.cpp | 11 ++++++----- src/osgViewer/Scene.cpp | 2 +- src/osgViewer/View.cpp | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/osgDB/DatabasePager.cpp b/src/osgDB/DatabasePager.cpp index d443970af..73e24e803 100644 --- a/src/osgDB/DatabasePager.cpp +++ b/src/osgDB/DatabasePager.cpp @@ -1371,10 +1371,7 @@ bool DatabasePager::getRequestsInProgress() const { if (getFileRequestListSize()>0) return true; - if (getDataToCompileListSize()>0) - { - return true; - } + if (getDataToCompileListSize()>0) return true; if (getDataToMergeListSize()>0) return true; @@ -1595,7 +1592,11 @@ void DatabasePager::setDatabasePagerThreadPause(bool pause) bool DatabasePager::requiresUpdateSceneGraph() const { - return !(_dataToMergeList->empty()); + if (getDataToCompileListSize()>0) return true; + + if (getDataToMergeListSize()>0) return true; + + return false; } void DatabasePager::updateSceneGraph(const osg::FrameStamp& frameStamp) diff --git a/src/osgViewer/Scene.cpp b/src/osgViewer/Scene.cpp index d17ca124d..a83b71999 100644 --- a/src/osgViewer/Scene.cpp +++ b/src/osgViewer/Scene.cpp @@ -116,7 +116,7 @@ void Scene::setImagePager(osgDB::ImagePager* ip) bool Scene::requiresUpdateSceneGraph() const { // check if the database pager needs to update the scene - if (getDatabasePager()->requiresUpdateSceneGraph() || getDatabasePager()->getRequestsInProgress()) return true; + if (getDatabasePager()->requiresUpdateSceneGraph()) return true; // check if the image pager needs to update the scene if (getImagePager()->requiresUpdateSceneGraph()) return true; diff --git a/src/osgViewer/View.cpp b/src/osgViewer/View.cpp index ecb1ab987..a467422f4 100644 --- a/src/osgViewer/View.cpp +++ b/src/osgViewer/View.cpp @@ -1135,7 +1135,7 @@ bool View::requiresUpdateSceneGraph() const // check if there are camera update callbacks if (_camera->getUpdateCallback()) return true; - // check if there scene requires an update traversal + // check if the scene requires an update traversal if (_scene.valid() && _scene->requiresUpdateSceneGraph()) return true; return false;