nsresult WindowHook::RemoveMonitor(UINT nMsg, Callback callback, void *context) { CallbackData cbdata(callback, context); MessageData *data = Lookup(nMsg); if (!data) return NS_ERROR_UNEXPECTED; CallbackDataArray::index_type idx = data->monitors.IndexOf(cbdata); if (idx == CallbackDataArray::NoIndex) return NS_ERROR_UNEXPECTED; data->monitors.RemoveElementAt(idx); DeleteIfEmpty(data); return NS_OK; }
nsresult WindowHook::RemoveHook(UINT nMsg, Callback callback, void *context) { CallbackData cbdata(callback, context); MessageData *data = Lookup(nMsg); if (!data) return NS_ERROR_UNEXPECTED; if (data->hook != cbdata) return NS_ERROR_UNEXPECTED; data->hook = CallbackData(); DeleteIfEmpty(data); return NS_OK; }
void COctreeSceneNode::DeleteChild( DWORD iChildUniqueID ) { int iChild = -1; for (int i=0; i < 8; i++) { if (m_Children[i]) { if (m_Children[i]->GetUniqueID() == iChildUniqueID) { iChild = i; break; } } } // assert child was correctly linked assert( iChild >= 0 ); SAFE_DELETE( m_Children[iChild] ); DeleteIfEmpty(); }
bool COctreeSceneNode::RemoveObject( ISceneObject* object ) { // remove object from list of objects in node DWORD sortID = object->GetSceneSortID(); IDSCENEOBJECTMAP* objects = GetObjSet( sortID ); if( objects != NULL ) { DWORD objNameID = object->GetName()->GetUniqueID(); size_t iObjectsErased = objects->erase( objNameID ); // make sure object was attached to the correct node assert( iObjectsErased > 0 ); object->SetSceneNode( NULL, false ); m_iObjectCount--; DeleteIfEmpty(); return true; } return false; }