bool TopMenu::OnIdentityRemoval(IdentityToken_t *owner) { /* First sweep the categories owned by us */ CVector<unsigned int> obj_list; for (size_t i = 0; i < m_Categories.size(); i++) { if (m_Categories[i]->obj->owner == owner) { obj_list.push_back(m_Categories[i]->obj->object_id); } } for (size_t i = 0; i < obj_list.size(); i++) { RemoveFromMenu(obj_list[i]); } /* Now we can look for actual items */ for (size_t i = 0; i < m_Objects.size(); i++) { if (m_Objects[i]->is_free) { continue; } if (m_Objects[i]->owner == owner) { assert(m_Objects[i]->type != TopMenuObject_Category); RemoveFromMenu(m_Objects[i]->object_id); } } return true; }
TopMenu::~TopMenu() { /* Delete all categories */ while (m_Categories.size()) { RemoveFromMenu(m_Categories[0]->obj->object_id); } /* Remove all objects */ for (size_t i = 0; i < m_Objects.size(); i++) { assert(m_Objects[i]->is_free == true); delete m_Objects[i]; } m_pTitle->OnTopMenuObjectRemoved(this, 0); /* Delete all cached config entries */ for (size_t i = 0; i < m_Config.cats.size(); i++) { delete m_Config.cats[i]; } if (m_clients != NULL) { /* Sweep players */ for (size_t i = 0; i <= (size_t)m_max_clients; i++) { TearDownClient(&m_clients[i]); } free(m_clients); } }
SettingsMenuImpl::~SettingsMenuImpl() { RemoveFromMenu(); fSettings->ReleaseReference(); }