Ejemplo n.º 1
0
//--------------------------------------------------------------------------------------
// 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;
}
Ejemplo n.º 2
0
//-----------------------------------------------------------------------------
//	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 );
}