From 49d560f4d9d0641c98df67264b7ace4733c6b9a9 Mon Sep 17 00:00:00 2001 From: Robert OSFIELD <robert.osfield@gmail.com> Date: Fri, 8 Aug 2014 15:45:48 +0000 Subject: [PATCH] Applied fix to Node::remove*Callback(NodeCallback*) inspired by fix from Glen Waldron that was applied to svn/trunk. git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/branches/OpenSceneGraph-3.2@14400 16af8721-9629-0410-8352-f15c8da7e697 --- include/osg/Node | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/include/osg/Node b/include/osg/Node index b5eb8d9..9e2d727 100644 --- a/include/osg/Node +++ b/include/osg/Node @@ -203,8 +203,9 @@ class OSG_EXPORT Node : public Object if (nc != NULL && _updateCallback.valid()) { if (_updateCallback == nc) { - setUpdateCallback(nc->getNestedCallback()); // replace the callback by the nested one + ref_ptr<NodeCallback> new_nested_callback = nc->getNestedCallback(); nc->setNestedCallback(0); + setUpdateCallback(new_nested_callback.get()); } else _updateCallback->removeNestedCallback(nc); } @@ -237,8 +238,9 @@ class OSG_EXPORT Node : public Object if (nc != NULL && _eventCallback.valid()) { if (_eventCallback == nc) { - setEventCallback(nc->getNestedCallback()); // replace the callback by the nested one + ref_ptr<NodeCallback> new_nested_callback = nc->getNestedCallback(); nc->setNestedCallback(0); + setEventCallback(new_nested_callback.get()); // replace the callback by the nested one } else _eventCallback->removeNestedCallback(nc); } @@ -271,8 +273,9 @@ class OSG_EXPORT Node : public Object if (nc != NULL && _cullCallback.valid()) { if (_cullCallback == nc) { - setCullCallback(nc->getNestedCallback()); // replace the callback by the nested one + ref_ptr<NodeCallback> new_nested_callback = nc->getNestedCallback(); nc->setNestedCallback(0); + setCullCallback(new_nested_callback.get()); // replace the callback by the nested one } else _cullCallback->removeNestedCallback(nc); }