Skip to content

Commit

Permalink
Changed the RenderStageCache::RenderStageMap to use map<Referenced*, …
Browse files Browse the repository at this point in the history
…ref_ptr<RenderStage>> in place of map<CullVisitor*, ref_ptr<RenderStage>> to

avoid problems of dynamic_cast<> on an object that is being deleted.
  • Loading branch information
robertosfield committed May 27, 2016
1 parent 110cf56 commit 31592d2
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions src/osgUtil/CullVisitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1368,7 +1368,7 @@ class RenderStageCache : public osg::Object, public osg::Observer
{
public:

typedef std::map<CullVisitor*, osg::ref_ptr<RenderStage> > RenderStageMap;
typedef std::map<osg::Referenced*, osg::ref_ptr<RenderStage> > RenderStageMap;

RenderStageCache() {}
RenderStageCache(const RenderStageCache&, const osg::CopyOp&) {}
Expand All @@ -1387,18 +1387,17 @@ class RenderStageCache : public osg::Object, public osg::Observer
virtual void objectDeleted(void* object)
{
osg::Referenced* ref = reinterpret_cast<osg::Referenced*>(object);
osgUtil::CullVisitor* cv = dynamic_cast<osgUtil::CullVisitor*>(ref);

OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex);

RenderStageMap::iterator itr = _renderStageMap.find(cv);
RenderStageMap::iterator itr = _renderStageMap.find(ref);
if (itr!=_renderStageMap.end())
{
_renderStageMap.erase(itr);
}
}

void setRenderStage(CullVisitor* cv, RenderStage* rs)
void setRenderStage(osg::Referenced* cv, RenderStage* rs)
{
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex);
RenderStageMap::iterator itr = _renderStageMap.find(cv);
Expand All @@ -1414,7 +1413,7 @@ class RenderStageCache : public osg::Object, public osg::Observer

}

RenderStage* getRenderStage(osgUtil::CullVisitor* cv)
RenderStage* getRenderStage(osg::Referenced* cv)
{
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex);
RenderStageMap::iterator itr = _renderStageMap.find(cv);
Expand Down

0 comments on commit 31592d2

Please sign in to comment.