Show
Ignore:
Timestamp:
01/26/09 16:16:24 (4 years ago)
Author:
robert
Message:

Fixed effective leak in Program::PerContextProgram? caused by previously osg::State keeping a set of std::ref_ptr<Program::PerContextProgram?> without ever pruning this list.
The fix was to convert the osg::State to use C pointers for the set of applied PerContexProgram? objects, and use the osg::Oberver mechanism to avoid dangling pointers for being maintained in osg::State.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/include/osg/Referenced

    r9343 r9549  
    9090 
    9191        /** Add a Observer that is observing this object, notify the Observer when this object gets deleted.*/ 
    92         void addObserver(Observer* observer); 
     92        void addObserver(Observer* observer) const; 
    9393 
    9494        /** Add a Observer that is observing this object, notify the Observer when this object gets deleted.*/ 
    95         void removeObserver(Observer* observer); 
     95        void removeObserver(Observer* observer) const; 
    9696 
    9797    public: 
     
    122122        struct ObserverSetData; 
    123123 
    124         OpenThreads::AtomicPtr _observerSetDataPtr; 
     124        mutable OpenThreads::AtomicPtr _observerSetDataPtr; 
    125125 
    126126        mutable OpenThreads::Atomic     _refCount; 
     
    131131        mutable int                     _refCount; 
    132132         
    133         void*                           _observers; 
     133        mutable void*                   _observers; 
    134134#endif 
    135135};