logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

Availability

       This struct is available since SDL 3.2.0.

Simple Directmedia Layer                           SDL 3.2.10                               SDL_InitState(3type)

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.

Header File

       Defined in SDL3/SDL_mutex.h

Name

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

Synopsis

#include"SDL3/SDL.h"typedefstructSDL_InitState{SDL_AtomicIntstatus;SDL_ThreadIDthread;void*reserved;}SDL_InitState;

See Also