SDL  2.0
SDL.c File Reference
#include "./SDL_internal.h"
#include <unistd.h>
#include "SDL.h"
#include "SDL_bits.h"
#include "SDL_revision.h"
#include "SDL_assert_c.h"
#include "events/SDL_events_c.h"
#include "haptic/SDL_haptic_c.h"
#include "joystick/SDL_joystick_c.h"
#include "sensor/SDL_sensor_c.h"
#include "timer/SDL_timer_c.h"
+ Include dependency graph for SDL.c:

Go to the source code of this file.

Functions

SDL_NORETURN void SDL_ExitProcess (int exitcode)
 
static void SDL_PrivateSubsystemRefCountIncr (Uint32 subsystem)
 
static void SDL_PrivateSubsystemRefCountDecr (Uint32 subsystem)
 
static SDL_bool SDL_PrivateShouldInitSubsystem (Uint32 subsystem)
 
static SDL_bool SDL_PrivateShouldQuitSubsystem (Uint32 subsystem)
 
void SDL_SetMainReady (void)
 
int SDL_InitSubSystem (Uint32 flags)
 
int SDL_Init (Uint32 flags)
 
void SDL_QuitSubSystem (Uint32 flags)
 
Uint32 SDL_WasInit (Uint32 flags)
 
void SDL_Quit (void)
 
void SDL_GetVersion (SDL_version *ver)
 Get the version of SDL that is linked against your program. More...
 
const char * SDL_GetRevision (void)
 Get the code revision of SDL that is linked against your program. More...
 
int SDL_GetRevisionNumber (void)
 Get the revision number of SDL that is linked against your program. More...
 
const char * SDL_GetPlatform ()
 Gets the name of the platform. More...
 
SDL_bool SDL_IsTablet ()
 Return true if the current device is a tablet. More...
 

Variables

static SDL_bool SDL_MainIsReady = SDL_TRUE
 
static SDL_bool SDL_bInMainQuit = SDL_FALSE
 
static Uint8 SDL_SubsystemRefCount [32]
 

Function Documentation

◆ SDL_ExitProcess()

SDL_NORETURN void SDL_ExitProcess ( int  exitcode)

Definition at line 66 of file SDL.c.

67 {
68 #ifdef __WIN32__
69  /* "if you do not know the state of all threads in your process, it is
70  better to call TerminateProcess than ExitProcess"
71  https://msdn.microsoft.com/en-us/library/windows/desktop/ms682658(v=vs.85).aspx */
72  TerminateProcess(GetCurrentProcess(), exitcode);
73  /* MingW doesn't have TerminateProcess marked as noreturn, so add an
74  ExitProcess here that will never be reached but make MingW happy. */
75  ExitProcess(exitcode);
76 #elif defined(__EMSCRIPTEN__)
77  emscripten_cancel_main_loop(); /* this should "kill" the app. */
78  emscripten_force_exit(exitcode); /* this should "kill" the app. */
79  exit(exitcode);
80 #elif defined(__HAIKU__) /* Haiku has _Exit, but it's not marked noreturn. */
81  _exit(exitcode);
82 #elif defined(HAVE__EXIT) /* Upper case _Exit() */
83  _Exit(exitcode);
84 #else
85  _exit(exitcode);
86 #endif
87 }

Referenced by SDL_AbortAssertion(), SDL_InitDynamicAPILocked(), and SDL_ReportAssertion().

◆ SDL_GetPlatform()

const char* SDL_GetPlatform ( void  )

Gets the name of the platform.

Definition at line 476 of file SDL.c.

477 {
478 #if __AIX__
479  return "AIX";
480 #elif __ANDROID__
481  return "Android";
482 #elif __BSDI__
483  return "BSDI";
484 #elif __DREAMCAST__
485  return "Dreamcast";
486 #elif __EMSCRIPTEN__
487  return "Emscripten";
488 #elif __FREEBSD__
489  return "FreeBSD";
490 #elif __HAIKU__
491  return "Haiku";
492 #elif __HPUX__
493  return "HP-UX";
494 #elif __IRIX__
495  return "Irix";
496 #elif __LINUX__
497  return "Linux";
498 #elif __MINT__
499  return "Atari MiNT";
500 #elif __MACOS__
501  return "MacOS Classic";
502 #elif __MACOSX__
503  return "Mac OS X";
504 #elif __NACL__
505  return "NaCl";
506 #elif __NETBSD__
507  return "NetBSD";
508 #elif __OPENBSD__
509  return "OpenBSD";
510 #elif __OS2__
511  return "OS/2";
512 #elif __OSF__
513  return "OSF/1";
514 #elif __QNXNTO__
515  return "QNX Neutrino";
516 #elif __RISCOS__
517  return "RISC OS";
518 #elif __SOLARIS__
519  return "Solaris";
520 #elif __WIN32__
521  return "Windows";
522 #elif __WINRT__
523  return "WinRT";
524 #elif __TVOS__
525  return "tvOS";
526 #elif __IPHONEOS__
527  return "iOS";
528 #elif __PSP__
529  return "PlayStation Portable";
530 #else
531  return "Unknown (see SDL_platform.h)";
532 #endif
533 }

◆ SDL_GetRevision()

const char* SDL_GetRevision ( void  )

Get the code revision of SDL that is linked against your program.

Returns an arbitrary string (a hash value) uniquely identifying the exact revision of the SDL library in use, and is only useful in comparing against other revisions. It is NOT an incrementing number.

Definition at line 462 of file SDL.c.

463 {
464  return SDL_REVISION;
465 }
#define SDL_REVISION
Definition: SDL_revision.h:1

References SDL_REVISION.

◆ SDL_GetRevisionNumber()

int SDL_GetRevisionNumber ( void  )

Get the revision number of SDL that is linked against your program.

Returns a number uniquely identifying the exact revision of the SDL library in use. It is an incrementing number based on commits to hg.libsdl.org.

Definition at line 469 of file SDL.c.

470 {
471  return SDL_REVISION_NUMBER;
472 }
#define SDL_REVISION_NUMBER
Definition: SDL_revision.h:2

References SDL_REVISION_NUMBER.

◆ SDL_GetVersion()

void SDL_GetVersion ( SDL_version ver)

Get the version of SDL that is linked against your program.

If you are linking to SDL dynamically, then it is possible that the current version will be different than the version you compiled against. This function returns the current version, while SDL_VERSION() is a macro that tells you what version you compiled with.

SDL_version compiled;
SDL_version linked;
SDL_VERSION(&compiled);
SDL_GetVersion(&linked);
printf("We compiled against SDL version %d.%d.%d ...\n",
compiled.major, compiled.minor, compiled.patch);
printf("But we linked against SDL version %d.%d.%d.\n",
linked.major, linked.minor, linked.patch);
#define SDL_GetVersion
#define SDL_VERSION(x)
Macro to determine SDL version program was compiled against.
Definition: SDL_version.h:79
Information the version of SDL in use.
Definition: SDL_version.h:52
Uint8 minor
Definition: SDL_version.h:54
Uint8 patch
Definition: SDL_version.h:55
Uint8 major
Definition: SDL_version.h:53

This function may be called safely at any time, even before SDL_Init().

See also
SDL_VERSION

Definition at line 455 of file SDL.c.

456 {
457  SDL_VERSION(ver);
458 }

References SDL_VERSION.

◆ SDL_Init()

int SDL_Init ( Uint32  flags)

This function initializes the subsystems specified by flags

Definition at line 299 of file SDL.c.

300 {
301  return SDL_InitSubSystem(flags);
302 }
int SDL_InitSubSystem(Uint32 flags)
Definition: SDL.c:148
GLbitfield flags

References SDL_InitSubSystem().

◆ SDL_InitSubSystem()

int SDL_InitSubSystem ( Uint32  flags)

This function initializes specific SDL subsystems

Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem() for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or call SDL_Quit() to force shutdown). If a subsystem is already loaded then this call will increase the ref-count and return.

Definition at line 148 of file SDL.c.

149 {
150  if (!SDL_MainIsReady) {
151  SDL_SetError("Application didn't initialize properly, did you include SDL_main.h in the file containing your main() function?");
152  return -1;
153  }
154 
155  /* Clear the error message */
156  SDL_ClearError();
157 
158  if ((flags & SDL_INIT_GAMECONTROLLER)) {
159  /* game controller implies joystick */
161  }
162 
164  /* video or joystick implies events */
166  }
167 
168 #if SDL_THREAD_OS2
169  SDL_OS2TLSAlloc(); /* thread/os2/SDL_systls.c */
170 #endif
171 
172 #if SDL_VIDEO_DRIVER_WINDOWS
174  if (SDL_HelperWindowCreate() < 0) {
175  return -1;
176  }
177  }
178 #endif
179 
180 #if !SDL_TIMERS_DISABLED
181  SDL_TicksInit();
182 #endif
183 
184  /* Initialize the event subsystem */
185  if ((flags & SDL_INIT_EVENTS)) {
186 #if !SDL_EVENTS_DISABLED
188  if (SDL_EventsInit() < 0) {
189  return (-1);
190  }
191  }
193 #else
194  return SDL_SetError("SDL not built with events support");
195 #endif
196  }
197 
198  /* Initialize the timer subsystem */
199  if ((flags & SDL_INIT_TIMER)){
200 #if !SDL_TIMERS_DISABLED
202  if (SDL_TimerInit() < 0) {
203  return (-1);
204  }
205  }
207 #else
208  return SDL_SetError("SDL not built with timer support");
209 #endif
210  }
211 
212  /* Initialize the video subsystem */
213  if ((flags & SDL_INIT_VIDEO)){
214 #if !SDL_VIDEO_DISABLED
216  if (SDL_VideoInit(NULL) < 0) {
217  return (-1);
218  }
219  }
221 #else
222  return SDL_SetError("SDL not built with video support");
223 #endif
224  }
225 
226  /* Initialize the audio subsystem */
227  if ((flags & SDL_INIT_AUDIO)){
228 #if !SDL_AUDIO_DISABLED
230  if (SDL_AudioInit(NULL) < 0) {
231  return (-1);
232  }
233  }
235 #else
236  return SDL_SetError("SDL not built with audio support");
237 #endif
238  }
239 
240  /* Initialize the joystick subsystem */
241  if ((flags & SDL_INIT_JOYSTICK)){
242 #if !SDL_JOYSTICK_DISABLED
244  if (SDL_JoystickInit() < 0) {
245  return (-1);
246  }
247  }
249 #else
250  return SDL_SetError("SDL not built with joystick support");
251 #endif
252  }
253 
255 #if !SDL_JOYSTICK_DISABLED
257  if (SDL_GameControllerInit() < 0) {
258  return (-1);
259  }
260  }
262 #else
263  return SDL_SetError("SDL not built with joystick support");
264 #endif
265  }
266 
267  /* Initialize the haptic subsystem */
268  if ((flags & SDL_INIT_HAPTIC)){
269 #if !SDL_HAPTIC_DISABLED
271  if (SDL_HapticInit() < 0) {
272  return (-1);
273  }
274  }
276 #else
277  return SDL_SetError("SDL not built with haptic (force feedback) support");
278 #endif
279  }
280 
281  /* Initialize the sensor subsystem */
282  if ((flags & SDL_INIT_SENSOR)){
283 #if !SDL_SENSOR_DISABLED
285  if (SDL_SensorInit() < 0) {
286  return (-1);
287  }
288  }
290 #else
291  return SDL_SetError("SDL not built with sensor support");
292 #endif
293  }
294 
295  return (0);
296 }
static void SDL_PrivateSubsystemRefCountIncr(Uint32 subsystem)
Definition: SDL.c:101
static SDL_bool SDL_MainIsReady
Definition: SDL.c:94
static SDL_bool SDL_PrivateShouldInitSubsystem(Uint32 subsystem)
Definition: SDL.c:120
#define SDL_INIT_SENSOR
Definition: SDL.h:87
#define SDL_INIT_TIMER
Definition: SDL.h:80
#define SDL_INIT_AUDIO
Definition: SDL.h:81
#define SDL_INIT_GAMECONTROLLER
Definition: SDL.h:85
#define SDL_INIT_JOYSTICK
Definition: SDL.h:83
#define SDL_INIT_EVENTS
Definition: SDL.h:86
#define SDL_INIT_HAPTIC
Definition: SDL.h:84
#define SDL_INIT_VIDEO
Definition: SDL.h:82
#define SDL_SetError
#define SDL_AudioInit
#define SDL_VideoInit
#define SDL_ClearError
int SDL_EventsInit(void)
Definition: SDL_events.c:1078
int SDL_GameControllerInit(void)
int SDL_HapticInit(void)
Definition: SDL_haptic.c:38
int SDL_JoystickInit(void)
Definition: SDL_joystick.c:213
int SDL_SensorInit(void)
Definition: SDL_sensor.c:71
int SDL_TimerInit(void)
Definition: SDL_timer.c:207
void SDL_TicksInit(void)
#define NULL
Definition: begin_code.h:163

References NULL, SDL_AudioInit, SDL_ClearError, SDL_EventsInit(), SDL_GameControllerInit(), SDL_HapticInit(), SDL_INIT_AUDIO, SDL_INIT_EVENTS, SDL_INIT_GAMECONTROLLER, SDL_INIT_HAPTIC, SDL_INIT_JOYSTICK, SDL_INIT_SENSOR, SDL_INIT_TIMER, SDL_INIT_VIDEO, SDL_JoystickInit(), SDL_MainIsReady, SDL_PrivateShouldInitSubsystem(), SDL_PrivateSubsystemRefCountIncr(), SDL_SensorInit(), SDL_SetError, SDL_TicksInit(), SDL_TimerInit(), and SDL_VideoInit.

Referenced by SDL_Init().

◆ SDL_IsTablet()

SDL_bool SDL_IsTablet ( void  )

Return true if the current device is a tablet.

Definition at line 536 of file SDL.c.

537 {
538 #if __ANDROID__
539  extern SDL_bool SDL_IsAndroidTablet(void);
540  return SDL_IsAndroidTablet();
541 #elif __IPHONEOS__
542  extern SDL_bool SDL_IsIPad(void);
543  return SDL_IsIPad();
544 #else
545  return SDL_FALSE;
546 #endif
547 }
SDL_bool SDL_IsAndroidTablet(void)
SDL_bool
Definition: SDL_stdinc.h:168
@ SDL_FALSE
Definition: SDL_stdinc.h:169

References SDL_FALSE, and SDL_IsAndroidTablet().

◆ SDL_PrivateShouldInitSubsystem()

static SDL_bool SDL_PrivateShouldInitSubsystem ( Uint32  subsystem)
static

Definition at line 120 of file SDL.c.

121 {
122  int subsystem_index = SDL_MostSignificantBitIndex32(subsystem);
123  SDL_assert(SDL_SubsystemRefCount[subsystem_index] < 255);
124  return (SDL_SubsystemRefCount[subsystem_index] == 0) ? SDL_TRUE : SDL_FALSE;
125 }
static Uint8 SDL_SubsystemRefCount[32]
Definition: SDL.c:97
#define SDL_assert(condition)
Definition: SDL_assert.h:171
SDL_FORCE_INLINE int SDL_MostSignificantBitIndex32(Uint32 x)
Definition: SDL_bits.h:61
@ SDL_TRUE
Definition: SDL_stdinc.h:170

References SDL_assert, SDL_FALSE, SDL_MostSignificantBitIndex32(), SDL_SubsystemRefCount, and SDL_TRUE.

Referenced by SDL_InitSubSystem().

◆ SDL_PrivateShouldQuitSubsystem()

static SDL_bool SDL_PrivateShouldQuitSubsystem ( Uint32  subsystem)
static

Definition at line 129 of file SDL.c.

129  {
130  int subsystem_index = SDL_MostSignificantBitIndex32(subsystem);
131  if (SDL_SubsystemRefCount[subsystem_index] == 0) {
132  return SDL_FALSE;
133  }
134 
135  /* If we're in SDL_Quit, we shut down every subsystem, even if refcount
136  * isn't zero.
137  */
138  return (SDL_SubsystemRefCount[subsystem_index] == 1 || SDL_bInMainQuit) ? SDL_TRUE : SDL_FALSE;
139 }
static SDL_bool SDL_bInMainQuit
Definition: SDL.c:96

References SDL_bInMainQuit, SDL_FALSE, SDL_MostSignificantBitIndex32(), SDL_SubsystemRefCount, and SDL_TRUE.

Referenced by SDL_QuitSubSystem().

◆ SDL_PrivateSubsystemRefCountDecr()

static void SDL_PrivateSubsystemRefCountDecr ( Uint32  subsystem)
static

Definition at line 110 of file SDL.c.

111 {
112  int subsystem_index = SDL_MostSignificantBitIndex32(subsystem);
113  if (SDL_SubsystemRefCount[subsystem_index] > 0) {
114  --SDL_SubsystemRefCount[subsystem_index];
115  }
116 }

References SDL_MostSignificantBitIndex32(), and SDL_SubsystemRefCount.

Referenced by SDL_QuitSubSystem().

◆ SDL_PrivateSubsystemRefCountIncr()

static void SDL_PrivateSubsystemRefCountIncr ( Uint32  subsystem)
static

Definition at line 101 of file SDL.c.

102 {
103  int subsystem_index = SDL_MostSignificantBitIndex32(subsystem);
104  SDL_assert(SDL_SubsystemRefCount[subsystem_index] < 255);
105  ++SDL_SubsystemRefCount[subsystem_index];
106 }

References SDL_assert, SDL_MostSignificantBitIndex32(), and SDL_SubsystemRefCount.

Referenced by SDL_InitSubSystem().

◆ SDL_Quit()

void SDL_Quit ( void  )

This function cleans up all initialized subsystems. You should call it upon all exit conditions.

Definition at line 427 of file SDL.c.

428 {
430 
431  /* Quit all subsystems */
432 #if SDL_VIDEO_DRIVER_WINDOWS
433  SDL_HelperWindowDestroy();
434 #endif
436 
437 #if !SDL_TIMERS_DISABLED
438  SDL_TicksQuit();
439 #endif
440 
441  SDL_ClearHints();
444 
445  /* Now that every subsystem has been quit, we reset the subsystem refcount
446  * and the list of initialized subsystems.
447  */
449 
451 }
void SDL_QuitSubSystem(Uint32 flags)
Definition: SDL.c:305
#define SDL_INIT_EVERYTHING
Definition: SDL.h:89
void SDL_AssertionsQuit(void)
Definition: SDL_assert.c:385
#define SDL_memset
#define SDL_LogResetPriorities
#define SDL_ClearHints
void SDL_TicksQuit(void)

References SDL_AssertionsQuit(), SDL_bInMainQuit, SDL_ClearHints, SDL_FALSE, SDL_INIT_EVERYTHING, SDL_LogResetPriorities, SDL_memset, SDL_QuitSubSystem(), SDL_SubsystemRefCount, SDL_TicksQuit(), and SDL_TRUE.

◆ SDL_QuitSubSystem()

void SDL_QuitSubSystem ( Uint32  flags)

This function cleans up specific SDL subsystems

Definition at line 305 of file SDL.c.

306 {
307 #if SDL_THREAD_OS2
308  SDL_OS2TLSFree(); /* thread/os2/SDL_systls.c */
309 #endif
310 #if defined(__OS2__)
311  SDL_OS2Quit();
312 #endif
313 
314  /* Shut down requested initialized subsystems */
315 #if !SDL_SENSOR_DISABLED
316  if ((flags & SDL_INIT_SENSOR)) {
318  SDL_SensorQuit();
319  }
321  }
322 #endif
323 
324 #if !SDL_JOYSTICK_DISABLED
325  if ((flags & SDL_INIT_GAMECONTROLLER)) {
326  /* game controller implies joystick */
328 
331  }
333  }
334 
335  if ((flags & SDL_INIT_JOYSTICK)) {
336  /* joystick implies events */
338 
341  }
343  }
344 #endif
345 
346 #if !SDL_HAPTIC_DISABLED
347  if ((flags & SDL_INIT_HAPTIC)) {
349  SDL_HapticQuit();
350  }
352  }
353 #endif
354 
355 #if !SDL_AUDIO_DISABLED
356  if ((flags & SDL_INIT_AUDIO)) {
358  SDL_AudioQuit();
359  }
361  }
362 #endif
363 
364 #if !SDL_VIDEO_DISABLED
365  if ((flags & SDL_INIT_VIDEO)) {
366  /* video implies events */
368 
370  SDL_VideoQuit();
371  }
373  }
374 #endif
375 
376 #if !SDL_TIMERS_DISABLED
377  if ((flags & SDL_INIT_TIMER)) {
379  SDL_TimerQuit();
380  }
382  }
383 #endif
384 
385 #if !SDL_EVENTS_DISABLED
386  if ((flags & SDL_INIT_EVENTS)) {
388  SDL_EventsQuit();
389  }
391  }
392 #endif
393 }
static SDL_bool SDL_PrivateShouldQuitSubsystem(Uint32 subsystem)
Definition: SDL.c:129
static void SDL_PrivateSubsystemRefCountDecr(Uint32 subsystem)
Definition: SDL.c:110
#define SDL_AudioQuit
#define SDL_VideoQuit
void SDL_EventsQuit(void)
Definition: SDL_events.c:1098
void SDL_GameControllerQuit(void)
void SDL_HapticQuit(void)
Definition: SDL_haptic.c:393
void SDL_JoystickQuit(void)
void SDL_OS2Quit(void)
void SDL_SensorQuit(void)
Definition: SDL_sensor.c:442
void SDL_TimerQuit(void)
Definition: SDL_timer.c:239

References SDL_AudioQuit, SDL_EventsQuit(), SDL_GameControllerQuit(), SDL_HapticQuit(), SDL_INIT_AUDIO, SDL_INIT_EVENTS, SDL_INIT_GAMECONTROLLER, SDL_INIT_HAPTIC, SDL_INIT_JOYSTICK, SDL_INIT_SENSOR, SDL_INIT_TIMER, SDL_INIT_VIDEO, SDL_JoystickQuit(), SDL_OS2Quit(), SDL_PrivateShouldQuitSubsystem(), SDL_PrivateSubsystemRefCountDecr(), SDL_SensorQuit(), SDL_TimerQuit(), and SDL_VideoQuit.

Referenced by SDL_Quit().

◆ SDL_SetMainReady()

void SDL_SetMainReady ( void  )

This is called by the real SDL main function to let the rest of the library know that initialization was done properly.

Calling this yourself without knowing what you're doing can cause crashes and hard to diagnose problems with your application.

Definition at line 142 of file SDL.c.

143 {
145 }

References SDL_MainIsReady, and SDL_TRUE.

◆ SDL_WasInit()

Uint32 SDL_WasInit ( Uint32  flags)

This function returns a mask of the specified subsystems which have previously been initialized.

If flags is 0, it returns a mask of all initialized subsystems.

Definition at line 396 of file SDL.c.

397 {
398  int i;
399  int num_subsystems = SDL_arraysize(SDL_SubsystemRefCount);
400  Uint32 initialized = 0;
401 
402  /* Fast path for checking one flag */
404  int subsystem_index = SDL_MostSignificantBitIndex32(flags);
405  return SDL_SubsystemRefCount[subsystem_index] ? flags : 0;
406  }
407 
408  if (!flags) {
410  }
411 
412  num_subsystems = SDL_min(num_subsystems, SDL_MostSignificantBitIndex32(flags) + 1);
413 
414  /* Iterate over each bit in flags, and check the matching subsystem. */
415  for (i = 0; i < num_subsystems; ++i) {
416  if ((flags & 1) && SDL_SubsystemRefCount[i] > 0) {
417  initialized |= (1 << i);
418  }
419 
420  flags >>= 1;
421  }
422 
423  return initialized;
424 }
SDL_FORCE_INLINE SDL_bool SDL_HasExactlyOneBitSet32(Uint32 x)
Definition: SDL_bits.h:105
#define SDL_arraysize(array)
Definition: SDL_stdinc.h:121
#define SDL_min(x, y)
Definition: SDL_stdinc.h:412
uint32_t Uint32
Definition: SDL_stdinc.h:209
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50

References i, SDL_arraysize, SDL_HasExactlyOneBitSet32(), SDL_INIT_EVERYTHING, SDL_min, SDL_MostSignificantBitIndex32(), and SDL_SubsystemRefCount.

Variable Documentation

◆ SDL_bInMainQuit

SDL_bool SDL_bInMainQuit = SDL_FALSE
static

Definition at line 96 of file SDL.c.

Referenced by SDL_PrivateShouldQuitSubsystem(), and SDL_Quit().

◆ SDL_MainIsReady

SDL_bool SDL_MainIsReady = SDL_TRUE
static

Definition at line 94 of file SDL.c.

Referenced by SDL_InitSubSystem(), and SDL_SetMainReady().

◆ SDL_SubsystemRefCount