//----------------------------------------------------------------------------
void PropertyBasedMgr::shutdown()
{
+ _props->removeAllChildren();
_props->removeChangeListener(this);
}
return PropertyBasedElementPtr();
BOOST_FOREACH(PropertyBasedElementPtr el, _elements)
- if( el->getProps()->getStringValue("name") == name )
+ if( el && el->getProps()->getStringValue("name") == name )
return el;
return PropertyBasedElementPtr();
_elements.resize(index + 1);
}
else if( _elements[index] )
+ {
SG_LOG
(
SG_GENERAL,
_name_elements << "[" << index << "] already exists!"
);
+ // Give anything holding a reference to this element to release it
+ _elements[index]->onDestroy();
+ }
+
PropertyBasedElementPtr el = _element_factory(child);
- el->setSelf( el );
_elements[index] = el;
elementCreated( el );
}
"can't removed unknown " << _name_elements << "[" << index << "]!"
);
else
+ {
// remove the element...
+ _elements[index]->onDestroy();
_elements[index].reset();
+ }
}
} // namespace simgear