//----------------------------------------------------------------------- void OverlayProfileSessionListener::finializeSession() { OverlayContainer* container = dynamic_cast<OverlayContainer*>(mProfileGui); if (container) { OverlayContainer::ChildIterator children = container->getChildIterator(); while (children.hasMoreElements()) { OverlayElement* element = children.getNext(); OverlayContainer* parent = element->getParent(); if (parent) parent->removeChild(element->getName()); OverlayManager::getSingleton().destroyOverlayElement(element); } } if(mProfileGui) OverlayManager::getSingleton().destroyOverlayElement(mProfileGui); if(mOverlay) OverlayManager::getSingleton().destroy(mOverlay); mProfileBars.clear(); }
void OverlayHelper::SafeDestroyOverlayElement(OverlayElement *item) { if (item->isContainer()) { OverlayContainer *container = (OverlayContainer*) item; // Arrggghh the variable is protected // ((OverlayContainer*)item)->mOverlay->remove2D((OverlayContainer*)item); OverlayManager::OverlayMapIterator iter1 = OverlayManager::getSingleton().getOverlayIterator(); while (iter1.hasMoreElements()) { iter1.getNext()->remove2D(container); } OverlayContainer::ChildIterator iter2 = container->getChildIterator(); while (iter2.hasMoreElements()) { iter2.getNext()->_setParent(0); } OverlayContainer::ChildContainerIterator iter3 = container->getChildContainerIterator(); while (iter3.hasMoreElements()) { iter3.getNext()->_setParent(0); } } if (item->getParent()) item->getParent()->removeChild(item->getName()); OverlayManager::getSingleton().destroyOverlayElement(item); unsigned i; i=0; while (i < timedOverlays.Size()) { if (timedOverlays[i].overlayElement==item) timedOverlays.RemoveAtIndex(i); else i++; } }
//----------------------------------------------------------------------- void Profiler::setEnabled(bool enabled) { if (!mInitialized && enabled) { // the user wants to enable the Profiler for the first time // so we initialize the GUI stuff initialize(); mInitialized = true; } else { OverlayContainer* container = dynamic_cast<OverlayContainer*>(mProfileGui); if (container) { OverlayContainer::ChildIterator children = container->getChildIterator(); while (children.hasMoreElements()) { OverlayElement* element = children.getNext(); OverlayContainer* parent = element->getParent(); if (parent) parent->removeChild(element->getName()); OverlayManager::getSingleton().destroyOverlayElement(element); } } if(mProfileGui) OverlayManager::getSingleton().destroyOverlayElement(mProfileGui); if(mOverlay) OverlayManager::getSingleton().destroy(mOverlay); mProfileBars.clear(); mInitialized = false; mEnabled = false; } // We store this enable/disable request until the frame ends // (don't want to screw up any open profiles!) mNewEnableState = enabled; }