目次 - SDL 3.0 API(機能別) - 同期プリミティブ - SDL_InitState

SDL_InitState

スレッドセーフな初期化と終了で使用する構造体

ヘッダ

SDL3/SDL_mutex.h

フィールド

SDL_AtomicIntstatus
SDL_ThreadIDthread
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);
   }

これは初期化中の資源の生成を保護しない, 終了処理中の資源を他が使用していないことを保証しないことに注意すること. 必要ならばこれらは別の方法で保護すべきである.

バージョン

SDL 3.2.0以降

関連項目

SDL Wikiへのリンク

SDL_InitState - SDL Wiki