Index: /OpenSceneGraph/trunk/src/osgPlugins/logo/ReaderWriterLOGO.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/logo/ReaderWriterLOGO.cpp (revision 9527)
+++ /OpenSceneGraph/trunk/src/osgPlugins/logo/ReaderWriterLOGO.cpp (revision 9550)
@@ -73,5 +73,5 @@
 #endif
             setStateSet( sset );
-            viewport = new osg::Viewport;
+            _viewport = new osg::Viewport;
             setCullCallback( new logosCullCallback );
             _contextID = 0;
@@ -95,10 +95,10 @@
             float vw = 1.0;
             float vh = 1.0;
-            if (viewport)
-            {
-                vx = viewport->x();
-                vy = viewport->y();
-                vw = viewport->width();
-                vh = viewport->height();
+            if (_viewport.valid())
+            {
+                vx = _viewport->x();
+                vy = _viewport->y();
+                vw = _viewport->width();
+                vh = _viewport->height();
             }
 
@@ -114,8 +114,10 @@
             glColor4f( 1, 1, 1, 1 );
 
-            std::vector <osg::Image *>::const_iterator p;
+            Images::const_iterator p;
             float th = 0.0;
-            for( p = logos[Center].begin(); p != logos[Center].end(); p++ )
+            for( p = _logos[Center].begin(); p != _logos[Center].end(); p++ )
+            {
                 th += (*p)->t();
+            }
 
             float place[][4] = {
@@ -131,5 +133,5 @@
             for( int i = Center; i < last_position; i++ )
             {
-                if( logos[i].size() != 0 )
+                if( _logos[i].size() != 0 )
                 {
                     float x = place[i][0];
@@ -137,5 +139,5 @@
                     float xi = place[i][2];
                     float yi = place[i][3];
-                    for( p = logos[i].begin(); p != logos[i].end(); p++ )
+                    for( p = _logos[i].begin(); p != _logos[i].end(); p++ )
                     {
                         osg::Image *img = *p;
@@ -161,10 +163,10 @@
             osg::ref_ptr<osg::Image> image = osgDB::readRefImageFile( name.c_str() );
             if( image.valid())
-                logos[pos].push_back( image.get() ); 
+                _logos[pos].push_back( image ); 
             else
                 osg::notify(osg::WARN)<< "Logos::addLogo image file not found : " << name << ".\n";
         }
 
-        osg::Viewport *getViewport() { return viewport; }
+        osg::Viewport *getViewport() { return _viewport.get(); }
         void setContextID( unsigned int id ) { _contextID = id; }
 
@@ -173,5 +175,5 @@
             int n = 0;
             for( int i = Center; i < last_position; i++ )
-                n += logos[i].size();
+                n += _logos[i].size();
             return (n != 0);
         }
@@ -187,6 +189,8 @@
         virtual ~Logos() {}
     private :
-        std::vector <osg::Image *> logos[last_position];
-        osg::Viewport *viewport;
+        typedef std::vector < osg::ref_ptr<osg::Image> >  Images;
+
+        Images _logos[last_position];
+        osg::ref_ptr<osg::Viewport> _viewport;
         unsigned int _contextID;
 };
