| SDL_AtomicInt | status | |
| SDL_ThreadID | thread | |
| void * | reserved |
使い方の例:
static SDL_InitState init;
bool InitSystem(void)
{
if (!SDL_ShouldInit(&init)) {
// システムは初期化されている
return true;
}
// SDL_SetInitialized()を呼ばずにこの関数から戻ってはならない
bool initialized = DoInitTasks();
SDL_SetInitialized(&init, initialized);
return initialized;
}
bool UseSubsystem(void)
{
if (SDL_ShouldInit(&init)) {
// エラー サブシステムが初期化されていない
SDL_SetInitialized(&init, false);
return false;
}
// 初期化済みのサブシステムの何かを実行する
return true;
}
void QuitSystem(void)
{
if (!SDL_ShouldQuit(&init)) {
// システムが初期化されていない
return;
}
// SDL_SetInitialized()を呼ばずにこの関数から戻ってはならない
DoQuitTasks();
SDL_SetInitialized(&init, false);
}
これは初期化中の資源の生成を保護しない, 終了処理中の資源を他が使用していないことを保証しないことに注意すること. 必要ならばこれらは別の方法で保護すべきである.