From b04271f93e2fb244fc7a351af81e56eb43546b7a Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 23 Nov 2016 18:19:59 +0000 Subject: [PATCH] Fixed crash in handling of an osg::Callback attached to a Drawable as update callback. Added handling of osg::Callback when attavhed to a Drawable as a cull callback. --- include/osgUtil/UpdateVisitor | 3 +-- src/osgUtil/CullVisitor.cpp | 4 ++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/include/osgUtil/UpdateVisitor b/include/osgUtil/UpdateVisitor index bc809ad6f..011d0022e 100644 --- a/include/osgUtil/UpdateVisitor +++ b/include/osgUtil/UpdateVisitor @@ -63,12 +63,11 @@ class OSGUTIL_EXPORT UpdateVisitor : public osg::NodeVisitor { osg::DrawableUpdateCallback* drawable_callback = callback->asDrawableUpdateCallback(); osg::NodeCallback* node_callback = callback->asNodeCallback(); - osg::CallbackObject* callback_object = callback->asCallbackObject(); if (drawable_callback) drawable_callback->update(this,&drawable); if (node_callback) (*node_callback)(&drawable, this); - if ((!drawable_callback && !node_callback) || callback_object) callback_object->run(&drawable, this); + if (!drawable_callback && !node_callback) callback->run(&drawable, this); } handle_callbacks(drawable.getStateSet()); diff --git a/src/osgUtil/CullVisitor.cpp b/src/osgUtil/CullVisitor.cpp index e7fd9c90d..9f8c36b0c 100644 --- a/src/osgUtil/CullVisitor.cpp +++ b/src/osgUtil/CullVisitor.cpp @@ -992,6 +992,10 @@ void CullVisitor::apply(osg::Drawable& drawable) { if( dcb->cull( this, &drawable, &_renderInfo ) == true ) return; } + else + { + drawable.getCullCallback()->run(&drawable,this); + } } if (drawable.isCullingActive() && isCulled(bb)) return;