//----------------------------------------------------------------------------- // Purpose: Destroy a matchmaking session //----------------------------------------------------------------------------- uint CXboxSystem::DeleteSession( XboxHandle_t hSession, bool bAsync, AsyncHandle_t *pAsyncHandle ) { XOVERLAPPED *pOverlapped = NULL; if ( bAsync ) { AsyncResult_t *pResult = InitializeAsyncResult( &pAsyncHandle ); pOverlapped = &pResult->overlapped; } // Delete the session uint ret = XSessionDelete( hSession, pOverlapped ); CloseHandle( hSession ); return ret; }
//-------------------------------------------------------------------------------------- // Name: DeleteSession() // Desc: Remove the session //-------------------------------------------------------------------------------------- GS_BOOL SessionSrv::DeleteSession() { #if defined(_XBOX) || defined(_XENON) // Don't delete the session if it was never created if( m_hSession == INVALID_HANDLE_VALUE ) { return FALSE; } // End the session CTaskID id = 0; GS_DWORD ret = XSessionDelete( m_hSession, Master::G()->GetTaskMgr()->AddTask(EGSTaskType_SessionDelete,this,&id) ); Master::G()->GetTaskMgr()->StartTask(id,ret); if( ret != ERROR_IO_PENDING ) { Master::G()->Log( "XSessionDelete failed with error %d", ret ); return FALSE; } #endif return TRUE; }