diff --git a/stepmania/src/archutils/Unix/EmergencyShutdown.cpp b/stepmania/src/archutils/Unix/EmergencyShutdown.cpp new file mode 100644 index 0000000000..6d8689a9f5 --- /dev/null +++ b/stepmania/src/archutils/Unix/EmergencyShutdown.cpp @@ -0,0 +1,20 @@ +#include "global.h" +#include "EmergencyShutdown.h" +#include "RageUtil.h" + +typedef void (*Callback)(); +static Callback g_pEmergencyFunc[5]; +static unsigned g_iNumEmergencyFuncs = 0; + +void RegisterEmergencyShutdownCallback( void (*pFunc)() ) +{ + ASSERT( g_iNumEmergencyFuncs+1 < ARRAYSIZE(g_pEmergencyFunc) ); + g_pEmergencyFunc[ g_iNumEmergencyFuncs++ ] = pFunc; +} + +void DoEmergencyShutdown() +{ + for( unsigned i = 0; i < g_iNumEmergencyFuncs; ++i ) + g_pEmergencyFunc[i](); +} + diff --git a/stepmania/src/archutils/Unix/EmergencyShutdown.h b/stepmania/src/archutils/Unix/EmergencyShutdown.h new file mode 100644 index 0000000000..f29aad208d --- /dev/null +++ b/stepmania/src/archutils/Unix/EmergencyShutdown.h @@ -0,0 +1,8 @@ +#ifndef EMERGENCY_SHUTDOWN_H +#define EMERGENCY_SHUTDOWN_H + +void RegisterEmergencyShutdownCallback( void (*pFunc)() ); +void DoEmergencyShutdown(); + +#endif +