//-------------------------------------------------------------------------------------- // Name: EndSession() // Desc: End the current session (and implicitly write stats) //-------------------------------------------------------------------------------------- GS_BOOL SessionSrv::EndSession() { // Master::G()->GetStatsSrv()->Finalize(); #if defined(_XBOX) || defined(_XENON) // Don't end the session if it was never created if( m_hSession == INVALID_HANDLE_VALUE ) { return FALSE; } // End the session CTaskID id = 0; GS_DWORD ret = XSessionEnd( m_hSession, Master::G()->GetTaskMgr()->AddTask(EGSTaskType_SessionEnd,this,&id) ); Master::G()->GetTaskMgr()->StartTask(id,ret); if( ret != ERROR_IO_PENDING ) { Master::G()->Log( "XSessionEnd failed with error %d", ret ); return FALSE; } #endif return TRUE; }
//----------------------------------------------------------------------------- // Purpose: Finished a multiplayer game //----------------------------------------------------------------------------- uint CXboxSystem::SessionEnd( XboxHandle_t hSession, bool bAsync, AsyncHandle_t *pAsyncHandle ) { XOVERLAPPED *pOverlapped = NULL; if ( bAsync ) { AsyncResult_t *pResult = InitializeAsyncResult( &pAsyncHandle ); pOverlapped = &pResult->overlapped; } return XSessionEnd( hSession, pOverlapped ); }