Scroll to navigation

SDL_InitState(3type) SDL3 DATATYPES SDL_InitState(3type)

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 true;
}
// 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.1.3.

SDL 3.1.6 Simple Directmedia Layer