table of contents
other versions
- experimental 3.1.6+ds-1
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 |