StGLRootWidget::~StGLRootWidget() { // force children destruction here to ensure shared resources no more in use destroyChildren(); // release array of shared resources (handles should be released already!) for(size_t aResId = 0; aResId < myShareSize; ++aResId) { delete myShareArray[aResId]; } delete[] myShareArray; if(!myGlCtx.isNull()) { myMenuProgram->release(*myGlCtx); myMenuProgram.nullify(); myTextProgram->release(*myGlCtx); myTextProgram.nullify(); myTextBorderProgram->release(*myGlCtx); myTextBorderProgram.nullify(); if(!myCheckboxIcon.isNull()) { for(size_t aTexIter = 0; aTexIter < myCheckboxIcon->size(); ++aTexIter) { myCheckboxIcon->changeValue(aTexIter).release(*myGlCtx); } myCheckboxIcon.nullify(); } if(!myRadioIcon.isNull()) { for(size_t aTexIter = 0; aTexIter < myRadioIcon->size(); ++aTexIter) { myRadioIcon->changeValue(aTexIter).release(*myGlCtx); } myRadioIcon.nullify(); } myGlFontMgr->release(*myGlCtx); myGlFontMgr.nullify(); } }
void QuadTreeNode::merge() { if(hasChildren) { // Place all occupants at lower levels into this node getOccupants(occupants); destroyChildren(); } }
StGLWidget::~StGLWidget() { if(myRoot != NULL && myRoot->getFocus() == this) { myRoot->setFocus(NULL); } if(myParent != NULL) { // remove self from parent myParent->getChildren()->remove(this); } // remove own children destroyChildren(); }
Widget::~Widget() { invalidate(); destroyChildren(); m_destroyed(*this); m_layer.removeWidget(*this); std::vector<Widget*>* siblings; if (m_parent) siblings = &(m_parent->m_children); else siblings = &(m_layer.m_roots); siblings->erase(std::find(siblings->begin(), siblings->end(), this)); }
//------------------------------------------------------------------------------ Entity::~Entity() { if (r_parent) r_parent->removeChild(this); destroyChildren(); removeAllTags(); // Unregister update callback if (getFlag(SN_EF_UPDATABLE)) setUpdatable(false); if (getFlag(SN_EF_SYSTEM_EVENT_LISTENER)) listenToSystemEvents(false); //SN_LOG("Entity " << getName() << " destroyed"); }
QuadTreeNode::~QuadTreeNode() { if(m_hasChildren) destroyChildren(); }
void stmt::doDestroy(pParseContext &C) { destroyChildren(C); this->~stmt(); C.deallocate((void *)this); }
//------------------------------------------------------------------------------ void Scene::destroyChildrenButServices() { destroyChildren([](const Entity & e){ return !e.getFlag(SN_EF_STICKY); }); }
Node::~Node() { destroyChildren(); removeFromParent(); }
XmlTag::~XmlTag() { destroyAttributes(); destroyChildren(); }