From 9b08c373739ab5a4c2aef6208a68d4f8a7c14685 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 22 Jan 2013 10:33:19 +0000 Subject: [PATCH] Added extra check against whether node needs to be traversed in update and event traversals to prevent osgPresentation::Timeout being classified as a node that can be removed. --- src/osgUtil/Optimizer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/osgUtil/Optimizer.cpp b/src/osgUtil/Optimizer.cpp index 7dc6527bf..924a5b8ab 100644 --- a/src/osgUtil/Optimizer.cpp +++ b/src/osgUtil/Optimizer.cpp @@ -1355,7 +1355,8 @@ void Optimizer::RemoveEmptyNodesVisitor::apply(osg::Group& group) { // only remove empty groups, but not empty occluders. if (group.getNumChildren()==0 && isOperationPermissibleForObject(&group) && - (typeid(group)==typeid(osg::Group) || (dynamic_cast(&group) && !dynamic_cast(&group)))) + (typeid(group)==typeid(osg::Group) || (dynamic_cast(&group) && !dynamic_cast(&group))) && + (group.getNumChildrenRequiringUpdateTraversal()==0 && group.getNumChildrenRequiringEventTraversal()==0) ) { _redundantNodeList.insert(&group); }