示例#1
0
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;
}
示例#2
0
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;
}