Index: OpenSceneGraph/trunk/src/osgViewer/Viewer.cpp
===================================================================
--- OpenSceneGraph/trunk/src/osgViewer/Viewer.cpp (revision 10365)
+++ OpenSceneGraph/trunk/src/osgViewer/Viewer.cpp (revision 10520)
@@ -925,21 +925,14 @@
     _updateVisitor->setTraversalNumber(getFrameStamp()->getFrameNumber());
 
-    if (getSceneData())
-    {
-        _updateVisitor->setImageRequestHandler(_scene->getImagePager());
-        getSceneData()->accept(*_updateVisitor);
-    }
-    
-    if (_scene->getDatabasePager())
-    {    
-        // synchronize changes required by the DatabasePager thread to the scene graph
-        _scene->getDatabasePager()->updateSceneGraph(*_frameStamp);
-    }
-
-    if (_scene->getImagePager())
-    {    
-        // synchronize changes required by the DatabasePager thread to the scene graph
-        _scene->getImagePager()->updateSceneGraph(*_frameStamp);
-    }
+    _scene->updateSceneGraph(*_updateVisitor);
+
+    // if we have a shared state manager prune any unused entries
+    if (osgDB::Registry::instance()->getSharedStateManager())
+        osgDB::Registry::instance()->getSharedStateManager()->prune();
+
+    // update the Registry object cache.
+    osgDB::Registry::instance()->updateTimeStampOfObjectsInCacheWithExternalReferences(*getFrameStamp());
+    osgDB::Registry::instance()->removeExpiredObjectsInCache(*getFrameStamp());
+
 
     if (_updateOperations.valid())
@@ -947,5 +940,5 @@
         _updateOperations->runOperations(this);
     }
-    
+
     if (_incrementalCompileOperation.valid())
     {
