From 1b42084217410ceac534636f3b183acbfde43afc Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 8 Dec 2010 09:52:58 +0000 Subject: [PATCH] Fixes for benign threading memory contentions. --- src/osgDB/DatabasePager.cpp | 39 +++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/osgDB/DatabasePager.cpp b/src/osgDB/DatabasePager.cpp index 4adaa564d..33a69fb25 100644 --- a/src/osgDB/DatabasePager.cpp +++ b/src/osgDB/DatabasePager.cpp @@ -777,20 +777,7 @@ double DatabasePager::DatabaseThread::getTimeSinceStartOfIteration() const void DatabasePager::DatabaseThread::run() { OSG_INFO<<_name<<": DatabasePager::DatabaseThread::run"<size()= "<size()<<" to delete = "<_childrenToDeleteList.size()<_deleteRemovedSubgraphsInDatabaseThread && !(read_queue->_childrenToDeleteList.empty())) + if (_pager->_deleteRemovedSubgraphsInDatabaseThread/* && !(read_queue->_childrenToDeleteList.empty())*/) { ObjectList deleteList; { OpenThreads::ScopedLock lock(read_queue->_childrenToDeleteListMutex); - deleteList.swap(read_queue->_childrenToDeleteList); - read_queue->updateBlock(); + if (!read_queue->_childrenToDeleteList.empty()) + { + deleteList.swap(read_queue->_childrenToDeleteList); + read_queue->updateBlock(); + } } } @@ -1296,6 +1287,20 @@ DatabasePager::DatabasePager(const DatabasePager& rhs) _activePagedLODList = rhs._activePagedLODList->clone(); _inactivePagedLODList = rhs._inactivePagedLODList->clone(); +#if 1 + // need to set the texture object manager to be able to reuse textures + osg::Texture::setMinimumNumberOfTextureObjectsToRetainInCache(100); + + // need to set the display list manager to be able to reuse display lists + osg::Drawable::setMinimumNumberOfDisplayListsToRetainInCache(100); +#else + // need to set the texture object manager to be able to reuse textures + osg::Texture::setMinimumNumberOfTextureObjectsToRetainInCache(0); + + // need to set the display list manager to be able to reuse display lists + osg::Drawable::setMinimumNumberOfDisplayListsToRetainInCache(0); +#endif + // initialize the stats variables resetStats(); }