Index: /OpenSceneGraph/trunk/src/osgViewer/StatsHandler.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgViewer/StatsHandler.cpp (revision 9563)
+++ /OpenSceneGraph/trunk/src/osgViewer/StatsHandler.cpp (revision 9565)
@@ -367,13 +367,16 @@
                 viewStr.setf(std::ios::left, std::ios::adjustfield);
                 viewStr.width(14);
-
-                viewStr << std::setw(1) << _cameraNumber  << ": ";
+                // Used fixed formatting, as scientific will switch to "...e+.." notation for
+                // large numbers of vertices/drawables/etc.
+                viewStr.setf(std::ios::fixed);
+                viewStr.precision(0);
+
+                viewStr << std::setw(1) << "#" << _cameraNumber << std::endl;
 
                 // Camera name
-                if (_camera->getName().empty())
-                    viewStr << std::endl;
-                else
-                    viewStr << _camera->getName() << std::endl;
-                    
+                if (!_camera->getName().empty())
+                    viewStr << _camera->getName();
+                viewStr << std::endl;
+
                 int frameNumber = renderInfo.getState()->getFrameStamp()->getFrameNumber();
                 if (!(renderer->getGraphicsThreadDoesCull()))
@@ -381,10 +384,10 @@
                     --frameNumber;
                 }
-                
+
                 #define STATS_ATTRIBUTE(str) \
                     if (stats->getAttribute(frameNumber, str, value)) \
-                        viewStr << std::setw(7) << value << std::endl; \
+                        viewStr << std::setw(8) << value << std::endl; \
                     else \
-                        viewStr << std::setw(7) << "." << std::endl; \
+                        viewStr << std::setw(8) << "." << std::endl; \
 
                 double value = 0.0;
@@ -448,14 +451,14 @@
                 std::ostringstream viewStr;
                 viewStr.clear();
-                viewStr.setf(std::ios::left,std::ios::adjustfield);
+                viewStr.setf(std::ios::left, std::ios::adjustfield);
                 viewStr.width(20);
-                
-                viewStr << std::setw(1) << _viewNumber  << ": ";
+                viewStr.setf(std::ios::fixed);
+                viewStr.precision(0);
+
+                viewStr << std::setw(1) << "#" << _viewNumber;
+
                 // View name
-                if (_view->getName().empty())
-                    viewStr << std::endl;
-                else
-                    viewStr << _view->getName() << std::endl;
-
+                if (!_view->getName().empty())
+                    viewStr << ": " << _view->getName();
                 viewStr << std::endl;
 
@@ -477,4 +480,7 @@
 
                 double value = 0.0;
+
+                // header
+                viewStr << std::setw(10) << "Unique" << std::setw(10) << "Instanced" << std::endl;
 
                 STATS_ATTRIBUTE_PAIR("Number of unique StateSet","Number of instanced Stateset")
@@ -1088,6 +1094,6 @@
         float topOfViewerStats = pos.y() + characterSize;
 
-        geode->addDrawable(createBackgroundRectangle(    pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0), 
-                                                        _camera->getViewport()->width() - 2 * backgroundMargin, 
+        geode->addDrawable(createBackgroundRectangle(    pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0),
+                                                        _camera->getViewport()->width() - 2 * backgroundMargin,
                                                         (3 + 4.5 * cameras.size()) * characterSize + 2 * backgroundMargin,
                                                       backgroundColor) );
@@ -1235,6 +1241,6 @@
                 pos.y() -= (characterSize + backgroundSpacing);
 
-                geode->addDrawable(createBackgroundRectangle(    pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0), 
-                                                                _camera->getViewport()->width() - 2 * backgroundMargin, 
+                geode->addDrawable(createBackgroundRectangle(    pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0),
+                                                                _camera->getViewport()->width() - 2 * backgroundMargin,
                                                                 characterSize + 2 * backgroundMargin,
                                                                 backgroundColor));
@@ -1369,12 +1375,12 @@
         geode->setCullingActive(false);
         group->addChild(geode);
-        geode->addDrawable(createBackgroundRectangle(    pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0), 
-                                                        7 * characterSize + 2 * backgroundMargin, 
-                                                        18 * characterSize + 2 * backgroundMargin,
+        geode->addDrawable(createBackgroundRectangle(pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0),
+                                                        7 * characterSize + 2 * backgroundMargin,
+                                                        19 * characterSize + 2 * backgroundMargin,
                                                         backgroundColor));
 
         // Camera scene & primitive stats static text
         osg::ref_ptr<osgText::Text> camStaticText = new osgText::Text;
-        geode->addDrawable( camStaticText.get() );  
+        geode->addDrawable( camStaticText.get() );
         camStaticText->setColor(staticTextColor);
         camStaticText->setFont(font);
@@ -1384,7 +1390,8 @@
         std::ostringstream viewStr;
         viewStr.clear();
-        viewStr.setf(std::ios::left,std::ios::adjustfield);
+        viewStr.setf(std::ios::left, std::ios::adjustfield);
         viewStr.width(14);
         viewStr << "Camera" << std::endl;
+        viewStr << "" << std::endl; // placeholder for Camera name
         viewStr << "Vertices" << std::endl;
         viewStr << "Drawables" << std::endl;
@@ -1408,13 +1415,13 @@
 
         // Move camera block to the right
-        pos.x() += 7 * characterSize + 2 * backgroundMargin + backgroundSpacing; 
-
-        // add camera scene stats
+        pos.x() += 7 * characterSize + 2 * backgroundMargin + backgroundSpacing;
+
+        // Add camera scene stats, one block per camera
         int cameraCounter = 0;
         for(ViewerBase::Cameras::iterator citr = cameras.begin(); citr != cameras.end(); ++citr)
         {
-            geode->addDrawable(createBackgroundRectangle(    pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0), 
-                                                            5 * characterSize + 2 * backgroundMargin, 
-                                                            18 * characterSize + 2 * backgroundMargin,
+            geode->addDrawable(createBackgroundRectangle(pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0),
+                                                            5 * characterSize + 2 * backgroundMargin,
+                                                            19 * characterSize + 2 * backgroundMargin,
                                                             backgroundColor));
 
@@ -1431,5 +1438,5 @@
 
             // Move camera block to the right
-            pos.x() +=  5 * characterSize + 2 * backgroundMargin + backgroundSpacing; 
+            pos.x() +=  5 * characterSize + 2 * backgroundMargin + backgroundSpacing;
             cameraCounter++;
         }
@@ -1446,6 +1453,6 @@
         group->addChild(geode);
 
-        geode->addDrawable(createBackgroundRectangle(    pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0), 
-                                                        5 * characterSize + 2 * backgroundMargin, 
+        geode->addDrawable(createBackgroundRectangle(pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0),
+                                                        6 * characterSize + 2 * backgroundMargin,
                                                         12 * characterSize + 2 * backgroundMargin,
                                                         backgroundColor));
@@ -1461,8 +1468,8 @@
         std::ostringstream viewStr;
         viewStr.clear();
-        viewStr.setf(std::ios::left,std::ios::adjustfield);
+        viewStr.setf(std::ios::left, std::ios::adjustfield);
         viewStr.width(14);
         viewStr << "View" << std::endl;
-        viewStr << std::endl;
+        viewStr << " " << std::endl;
         viewStr << "Stateset" << std::endl;
         viewStr << "Group" << std::endl;
@@ -1475,9 +1482,9 @@
         viewStr << "Vertices" << std::endl;
         viewStr << "Primitives" << std::endl;
-        viewStr.setf(std::ios::right,std::ios::adjustfield);
+        viewStr.setf(std::ios::right, std::ios::adjustfield);
         camStaticText->setText(viewStr.str());
 
-        // Move camera block to the right
-        pos.x() += 5 * characterSize + 2 * backgroundMargin + backgroundSpacing; 
+        // Move viewer block to the right
+        pos.x() += 6 * characterSize + 2 * backgroundMargin + backgroundSpacing;
 
         std::vector<osgViewer::View*> views;
@@ -1488,6 +1495,6 @@
         for (it = views.begin(); it != views.end(); ++it)
         {
-            geode->addDrawable(createBackgroundRectangle(    pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0), 
-                                                            6 * characterSize + 2 * backgroundMargin, 
+            geode->addDrawable(createBackgroundRectangle(pos + osg::Vec3(-backgroundMargin, characterSize + backgroundMargin, 0),
+                                                            11 * characterSize + 2 * backgroundMargin,
                                                             12 * characterSize + 2 * backgroundMargin,
                                                             backgroundColor));
@@ -1503,5 +1510,5 @@
             text->setDrawCallback(new ViewSceneStatsTextDrawCallback(*it, viewCounter));
 
-            pos.x() += 6 * characterSize + 2 * backgroundMargin + backgroundSpacing; 
+            pos.x() += 11 * characterSize + 2 * backgroundMargin + backgroundSpacing;
             viewCounter++;
         }
Index: /OpenSceneGraph/trunk/examples/osgcompositeviewer/osgcompositeviewer.cpp
===================================================================
--- /OpenSceneGraph/trunk/examples/osgcompositeviewer/osgcompositeviewer.cpp (revision 9564)
+++ /OpenSceneGraph/trunk/examples/osgcompositeviewer/osgcompositeviewer.cpp (revision 9565)
@@ -164,4 +164,5 @@
         {
             osgViewer::View* view = new osgViewer::View;
+            view->setName("View one");
             viewer.addView(view);
 
@@ -180,4 +181,5 @@
         {
             osgViewer::View* view = new osgViewer::View;
+            view->setName("View two");
             viewer.addView(view);
 
@@ -235,7 +237,9 @@
         {
             osgViewer::View* view = new osgViewer::View;
+            view->setName("View one");
             viewer.addView(view);
 
             view->setSceneData(scene.get());
+            view->getCamera()->setName("Cam one");
             view->getCamera()->setViewport(new osg::Viewport(0,0, traits->width/2, traits->height/2));
             view->getCamera()->setGraphicsContext(gc.get());
@@ -258,7 +262,9 @@
         {
             osgViewer::View* view = new osgViewer::View;
+            view->setName("View two");
             viewer.addView(view);
 
             view->setSceneData(scene.get());
+            view->getCamera()->setName("Cam two");
             view->getCamera()->setViewport(new osg::Viewport(traits->width/2,0, traits->width/2, traits->height/2));
             view->getCamera()->setGraphicsContext(gc.get());
@@ -273,8 +279,10 @@
         {
             osgViewer::View* view = new osgViewer::View;
+            view->setName("View three");
             viewer.addView(view);
 
             view->setSceneData(osgDB::readNodeFile("cessnafire.osg"));
 
+            view->getCamera()->setName("Cam three");
             view->getCamera()->setProjectionMatrixAsPerspective(30.0, double(traits->width) / double(traits->height/2), 1.0, 1000.0);
             view->getCamera()->setViewport(new osg::Viewport(0, traits->height/2, traits->width, traits->height/2));
