Provided by: libsdl3-doc_3.2.8+ds-1_all bug

NAME

       SDL_InitState - A structure used for thread-safe initialization and shutdown.

HEADER FILE

       Defined in SDL3/SDL_mutex.h

SYNOPSIS

       #include "SDL3/SDL.h"

       typedef struct SDL_InitState
       {
           SDL_AtomicInt status;
           SDL_ThreadID thread;
           void *reserved;
       } SDL_InitState;

DESCRIPTION

       Here is an example of using this:

                 static SDL_AtomicInitState init;

                 bool InitSystem(void)
                 {
                     if (!SDL_ShouldInit(&init)) {
                         // The system is initialized
                         return true;
                     }

                     // At this point, you should not leave this function without calling SDL_SetInitialized()

                     bool initialized = DoInitTasks();
                     SDL_SetInitialized(&init, initialized);
                     return initialized;
                 }

                 bool UseSubsystem(void)
                 {
                     if (SDL_ShouldInit(&init)) {
                         // Error, the subsystem isn't initialized
                         SDL_SetInitialized(&init, false);
                         return false;
                     }

                     // Do work using the initialized subsystem

                     return true;
                 }

                 void QuitSystem(void)
                 {
                     if (!SDL_ShouldQuit(&init)) {
                         // The system is not initialized
                         return;
                     }

                     // At this point, you should not leave this function without calling SDL_SetInitialized()

                     DoQuitTasks();
                     SDL_SetInitialized(&init, false);
                 }

       Note  that  this doesn't protect any resources created during initialization, or guarantee that nobody is
       using those resources during cleanup. You should use other mechanisms  to  protect  those,  if  that's  a
       concern for your code.

AVAILABILITY

       This struct is available since SDL 3.2.0.

Simple Directmedia Layer                            SDL 3.2.8                               SDL_InitState(3type)