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

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)