Changeset 7146
- Timestamp:
- 07/22/07 22:33:20
- Files:
-
- OpenSceneGraph/trunk/src/osgViewer/CompositeViewer.cpp (modified) (3 diffs)
- OpenSceneGraph/trunk/src/osgViewer/Viewer.cpp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
OpenSceneGraph/trunk/src/osgViewer/CompositeViewer.cpp
r7097 r7146 565 565 { 566 566 _sceneView->getCullVisitor()->setDatabaseRequestHandler(_databasePager.get()); 567 568 _flushOperation = new osg::FlushDeletedGLObjectsOperation(0.1); 567 569 } 568 570 … … 578 580 if (view) _sceneView->setFusionDistance(view->getFusionDistanceMode(), view->getFusionDistanceValue()); 579 581 582 osg::GraphicsContext* compileContext = osg::GraphicsContext::getCompileContext(_sceneView->getState()->getContextID()); 583 osg::GraphicsThread* compileThread = compileContext ? compileContext->getGraphicsThread() : 0; 584 580 585 _sceneView->inheritCullSettings(*(_sceneView->getCamera())); 581 586 _sceneView->cull(); … … 589 594 } 590 595 591 _sceneView->flushDeletedGLObjects(availableTime); 592 } 593 594 osg::observer_ptr<osgUtil::SceneView> _sceneView; 595 osg::observer_ptr<osgDB::DatabasePager> _databasePager; 596 if (compileThread) 597 { 598 compileThread->add(_flushOperation.get()); 599 } 600 else 601 { 602 _sceneView->flushDeletedGLObjects(availableTime); 603 } 604 } 605 606 osg::observer_ptr<osgUtil::SceneView> _sceneView; 607 osg::observer_ptr<osgDB::DatabasePager> _databasePager; 608 osg::ref_ptr<osg::FlushDeletedGLObjectsOperation> _flushOperation; 596 609 }; 597 610 OpenSceneGraph/trunk/src/osgViewer/Viewer.cpp
r7120 r7146 138 138 { 139 139 _sceneView->getCullVisitor()->setDatabaseRequestHandler(_databasePager.get()); 140 141 _flushOperation = new osg::FlushDeletedGLObjectsOperation(0.1); 140 142 } 141 143 … … 203 205 _databasePager->compileGLObjects(*(_sceneView->getState()), availableTime); 204 206 } 205 _sceneView->flushDeletedGLObjects(availableTime); 207 208 osg::GraphicsContext* compileContext = osg::GraphicsContext::getCompileContext(_sceneView->getState()->getContextID()); 209 osg::GraphicsThread* compileThread = compileContext ? compileContext->getGraphicsThread() : 0; 210 211 if (compileThread) 212 { 213 compileThread->add(_flushOperation.get()); 214 } 215 else 216 { 217 _sceneView->flushDeletedGLObjects(availableTime); 218 } 206 219 207 220 if (aquireGPUStats) … … 226 239 } 227 240 228 osg::observer_ptr<osgUtil::SceneView> _sceneView; 229 osg::observer_ptr<osgDB::DatabasePager> _databasePager; 241 osg::observer_ptr<osgUtil::SceneView> _sceneView; 242 osg::observer_ptr<osgDB::DatabasePager> _databasePager; 243 osg::ref_ptr<osg::FlushDeletedGLObjectsOperation> _flushOperation; 230 244 231 245 }; … … 262 276 } 263 277 278 279 _flushOperation = new osg::FlushDeletedGLObjectsOperation(0.1); 280 264 281 // osg::notify(osg::NOTICE)<<"constructed"<<std::endl; 265 282 } … … 367 384 osgUtil::SceneView* sceneView = _sceneView[_currentDraw].get(); 368 385 386 osg::GraphicsContext* compileContext = osg::GraphicsContext::getCompileContext(sceneView->getState()->getContextID()); 387 osg::GraphicsThread* compileThread = compileContext ? compileContext->getGraphicsThread() : 0; 388 369 389 if (sceneView || _done) 370 390 { … … 428 448 } 429 449 430 sceneView->flushDeletedGLObjects(availableTime); 450 if (compileThread) 451 { 452 compileThread->add(_flushOperation.get()); 453 } 454 else 455 { 456 sceneView->flushDeletedGLObjects(availableTime); 457 } 431 458 432 459 if (aquireGPUStats) … … 457 484 osgUtil::SceneView* sceneView = _sceneView[_currentDraw].get(); 458 485 if (!sceneView || _done) return; 486 487 osg::GraphicsContext* compileContext = osg::GraphicsContext::getCompileContext(sceneView->getState()->getContextID()); 488 osg::GraphicsThread* compileThread = compileContext ? compileContext->getGraphicsThread() : 0; 459 489 460 490 OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex[_currentDraw]); … … 516 546 _databasePager->compileGLObjects(*(sceneView->getState()), availableTime); 517 547 } 518 sceneView->flushDeletedGLObjects(availableTime); 548 549 if (compileThread) 550 { 551 compileThread->add(_flushOperation.get()); 552 } 553 else 554 { 555 sceneView->flushDeletedGLObjects(availableTime); 556 } 519 557 520 558 if (aquireGPUStats) … … 590 628 osg::observer_ptr<osgDB::DatabasePager> _databasePager; 591 629 630 osg::ref_ptr<osg::FlushDeletedGLObjectsOperation> _flushOperation; 592 631 593 632 };
