예제 #1
0
//
// D_DoomLoop
//
void D_DoomLoop (void)
{
	while (1)
	{
		try
		{
			SV_RunTics (); // will run at least one tic
		}
		catch (CRecoverableError &error)
		{
			Printf (PRINT_HIGH, "ERROR: %s\n", error.GetMessage().c_str());
			Printf (PRINT_HIGH, "sleeping for 10 seconds before map reload...");

			// denis - drop clients
			SV_SendDisconnectSignal();

			// denis - sleep to conserve server resources (in case of recurring problem)
			I_WaitForTic(I_GetTime() + 1000*10/TICRATE);

			// denis - reload with current settings
			G_ChangeMap ();

			// denis - todo - throw I_FatalError if this keeps happening
		}
	}
}
예제 #2
0
파일: d_main.cpp 프로젝트: WChrisK/OdaStats
//
// D_DoomLoop
//
void D_DoomLoop (void)
{
    while (1)
    {
        try
        {
            D_RunTics(SV_RunTics, SV_DisplayTics);
        }
        catch (CRecoverableError &error)
        {
            Printf (PRINT_HIGH, "ERROR: %s\n", error.GetMsg().c_str());
            Printf (PRINT_HIGH, "sleeping for 10 seconds before map reload...");

            // denis - drop clients
            SV_SendDisconnectSignal();

            // denis - sleep 10 seconds to conserve server resources (in case of recurring problem)
            I_Sleep(10 * 1000LL * 1000LL * 1000LL);

            // denis - reload with current settings
            G_ChangeMap ();

            // denis - todo - throw I_FatalError if this keeps happening
        }
    }
}
예제 #3
0
void STACK_ARGS I_Quit (void)
{
    has_exited = 1;             /* Prevent infinitely recursive exits -- killough */

    #ifdef WIN32
    timeEndPeriod (TimerPeriod);
    #endif

    G_ClearSnapshots ();
    SV_SendDisconnectSignal();
    
    CloseNetwork ();
}