From c7744b15a3a5d8549ba6c56f39dd179d42db5c8d Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 27 Jan 2009 14:11:37 +0000 Subject: [PATCH] Converted viewer camera references to use observer_ptr<> rather than ref_ptr<> or C pointers to avoid issues with circular references/dangling pointers. --- include/osgShadow/DebugShadowMap | 2 +- include/osgShadow/MinimalDrawBoundsShadowMap | 2 +- src/osgShadow/DebugShadowMap.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/osgShadow/DebugShadowMap b/include/osgShadow/DebugShadowMap index dbaf68d6e..6ad7949f9 100644 --- a/include/osgShadow/DebugShadowMap +++ b/include/osgShadow/DebugShadowMap @@ -103,7 +103,7 @@ class OSGSHADOW_EXPORT DebugShadowMap : public ViewDependentShadowTechnique osg::ref_ptr< osg::Camera > _camera; osg::Matrixd _viewProjection; - osg::Camera * _viewCamera; + osg::observer_ptr _viewCamera; // Debug hud variables diff --git a/include/osgShadow/MinimalDrawBoundsShadowMap b/include/osgShadow/MinimalDrawBoundsShadowMap index 105d9e820..483201e20 100644 --- a/include/osgShadow/MinimalDrawBoundsShadowMap +++ b/include/osgShadow/MinimalDrawBoundsShadowMap @@ -53,7 +53,7 @@ class OSGSHADOW_EXPORT MinimalDrawBoundsShadowMap osg::ref_ptr< osg::Image > _boundAnalysisImage; osg::ref_ptr< osg::Texture2D > _boundAnalysisTexture; osg::ref_ptr< osg::Camera > _boundAnalysisCamera; - osg::ref_ptr< osg::Camera > _mainCamera; + osg::observer_ptr< osg::Camera > _mainCamera; void setShadowCameraProjectionMatrixPtr( osg::RefMatrix * projection ) { _projection = projection; } diff --git a/src/osgShadow/DebugShadowMap.cpp b/src/osgShadow/DebugShadowMap.cpp index 7720a3feb..89529a33b 100644 --- a/src/osgShadow/DebugShadowMap.cpp +++ b/src/osgShadow/DebugShadowMap.cpp @@ -278,7 +278,7 @@ void DebugShadowMap::ViewData::updateDebugGeometry transform[ num ] = { viewCam->getViewMatrix() * // use near far clamped projection ( precomputed in cullDebugGeometry ) - ( viewCam == _viewCamera ? _viewProjection : viewCam->getProjectionMatrix() ), + ( _viewCamera==viewCam ? _viewProjection : viewCam->getProjectionMatrix() ), shadowCam->getViewMatrix() * shadowCam->getProjectionMatrix() }, inverse[ num ] = { osg::Matrix::inverse( transform[0] ), @@ -362,7 +362,7 @@ void DebugShadowMap::ViewData::cullDebugGeometry( ) } } - updateDebugGeometry( _viewCamera, _camera.get() ); + updateDebugGeometry( _viewCamera.get(), _camera.get() ); #if 1 // Add geometries of polytopes to main cam Render Stage _transform[0]->accept( *_cv );