SDL  2.0
SDL.h File Reference
#include "SDL_main.h"
#include "SDL_stdinc.h"
#include "SDL_assert.h"
#include "SDL_atomic.h"
#include "SDL_audio.h"
#include "SDL_clipboard.h"
#include "SDL_cpuinfo.h"
#include "SDL_endian.h"
#include "SDL_error.h"
#include "SDL_events.h"
#include "SDL_filesystem.h"
#include "SDL_gamecontroller.h"
#include "SDL_haptic.h"
#include "SDL_hints.h"
#include "SDL_joystick.h"
#include "SDL_loadso.h"
#include "SDL_log.h"
#include "SDL_messagebox.h"
#include "SDL_metal.h"
#include "SDL_mutex.h"
#include "SDL_power.h"
#include "SDL_render.h"
#include "SDL_rwops.h"
#include "SDL_sensor.h"
#include "SDL_shape.h"
#include "SDL_system.h"
#include "SDL_thread.h"
#include "SDL_timer.h"
#include "SDL_version.h"
#include "SDL_video.h"
#include "begin_code.h"
#include "close_code.h"
+ Include dependency graph for SDL.h:

Go to the source code of this file.

SDL_INIT_*

These are the flags which may be passed to SDL_Init(). You should specify the subsystems which you will be using in your application.

#define SDL_INIT_TIMER   0x00000001u
 
#define SDL_INIT_AUDIO   0x00000010u
 
#define SDL_INIT_VIDEO   0x00000020u
 
#define SDL_INIT_JOYSTICK   0x00000200u
 
#define SDL_INIT_HAPTIC   0x00001000u
 
#define SDL_INIT_GAMECONTROLLER   0x00002000u
 
#define SDL_INIT_EVENTS   0x00004000u
 
#define SDL_INIT_SENSOR   0x00008000u
 
#define SDL_INIT_NOPARACHUTE   0x00100000u
 
#define SDL_INIT_EVERYTHING
 
int SDL_Init (Uint32 flags)
 
int SDL_InitSubSystem (Uint32 flags)
 
void SDL_QuitSubSystem (Uint32 flags)
 
Uint32 SDL_WasInit (Uint32 flags)
 
void SDL_Quit (void)
 

Detailed Description

Main include header for the SDL library

Definition in file SDL.h.

Macro Definition Documentation

◆ SDL_INIT_AUDIO

#define SDL_INIT_AUDIO   0x00000010u

Definition at line 80 of file SDL.h.

◆ SDL_INIT_EVENTS

#define SDL_INIT_EVENTS   0x00004000u

Definition at line 85 of file SDL.h.

◆ SDL_INIT_EVERYTHING

#define SDL_INIT_EVERYTHING
Value:
( \
)

Definition at line 88 of file SDL.h.

◆ SDL_INIT_GAMECONTROLLER

#define SDL_INIT_GAMECONTROLLER   0x00002000u

SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK

Definition at line 84 of file SDL.h.

◆ SDL_INIT_HAPTIC

#define SDL_INIT_HAPTIC   0x00001000u

Definition at line 83 of file SDL.h.

◆ SDL_INIT_JOYSTICK

#define SDL_INIT_JOYSTICK   0x00000200u

SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS

Definition at line 82 of file SDL.h.

◆ SDL_INIT_NOPARACHUTE

#define SDL_INIT_NOPARACHUTE   0x00100000u

compatibility; this flag is ignored.

Definition at line 87 of file SDL.h.

◆ SDL_INIT_SENSOR

#define SDL_INIT_SENSOR   0x00008000u

Definition at line 86 of file SDL.h.

◆ SDL_INIT_TIMER

#define SDL_INIT_TIMER   0x00000001u

Definition at line 79 of file SDL.h.

◆ SDL_INIT_VIDEO

#define SDL_INIT_VIDEO   0x00000020u

SDL_INIT_VIDEO implies SDL_INIT_EVENTS

Definition at line 81 of file SDL.h.

Function Documentation

◆ SDL_Init()

int SDL_Init ( Uint32  flags)

This function initializes the subsystems specified by flags

Definition at line 289 of file SDL.c.

290 {
291  return SDL_InitSubSystem(flags);
292 }

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 142 of file SDL.c.

143 {
144  if (!SDL_MainIsReady) {
145  SDL_SetError("Application didn't initialize properly, did you include SDL_main.h in the file containing your main() function?");
146  return -1;
147  }
148 
149  /* Clear the error message */
150  SDL_ClearError();
151 
152  if ((flags & SDL_INIT_GAMECONTROLLER)) {
153  /* game controller implies joystick */
155  }
156 
158  /* video or joystick implies events */
160  }
161 
162 #if SDL_VIDEO_DRIVER_WINDOWS
164  if (SDL_HelperWindowCreate() < 0) {
165  return -1;
166  }
167  }
168 #endif
169 
170 #if !SDL_TIMERS_DISABLED
171  SDL_TicksInit();
172 #endif
173 
174  /* Initialize the event subsystem */
175  if ((flags & SDL_INIT_EVENTS)) {
176 #if !SDL_EVENTS_DISABLED
178  if (SDL_EventsInit() < 0) {
179  return (-1);
180  }
181  }
183 #else
184  return SDL_SetError("SDL not built with events support");
185 #endif
186  }
187 
188  /* Initialize the timer subsystem */
189  if ((flags & SDL_INIT_TIMER)){
190 #if !SDL_TIMERS_DISABLED
192  if (SDL_TimerInit() < 0) {
193  return (-1);
194  }
195  }
197 #else
198  return SDL_SetError("SDL not built with timer support");
199 #endif
200  }
201 
202  /* Initialize the video subsystem */
203  if ((flags & SDL_INIT_VIDEO)){
204 #if !SDL_VIDEO_DISABLED
206  if (SDL_VideoInit(NULL) < 0) {
207  return (-1);
208  }
209  }
211 #else
212  return SDL_SetError("SDL not built with video support");
213 #endif
214  }
215 
216  /* Initialize the audio subsystem */
217  if ((flags & SDL_INIT_AUDIO)){
218 #if !SDL_AUDIO_DISABLED
220  if (SDL_AudioInit(NULL) < 0) {
221  return (-1);
222  }
223  }
225 #else
226  return SDL_SetError("SDL not built with audio support");
227 #endif
228  }
229 
230  /* Initialize the joystick subsystem */
231  if ((flags & SDL_INIT_JOYSTICK)){
232 #if !SDL_JOYSTICK_DISABLED
234  if (SDL_JoystickInit() < 0) {
235  return (-1);
236  }
237  }
239 #else
240  return SDL_SetError("SDL not built with joystick support");
241 #endif
242  }
243 
245 #if !SDL_JOYSTICK_DISABLED
247  if (SDL_GameControllerInit() < 0) {
248  return (-1);
249  }
250  }
252 #else
253  return SDL_SetError("SDL not built with joystick support");
254 #endif
255  }
256 
257  /* Initialize the haptic subsystem */
258  if ((flags & SDL_INIT_HAPTIC)){
259 #if !SDL_HAPTIC_DISABLED
261  if (SDL_HapticInit() < 0) {
262  return (-1);
263  }
264  }
266 #else
267  return SDL_SetError("SDL not built with haptic (force feedback) support");
268 #endif
269  }
270 
271  /* Initialize the sensor subsystem */
272  if ((flags & SDL_INIT_SENSOR)){
273 #if !SDL_SENSOR_DISABLED
275  if (SDL_SensorInit() < 0) {
276  return (-1);
277  }
278  }
280 #else
281  return SDL_SetError("SDL not built with sensor support");
282 #endif
283  }
284 
285  return (0);
286 }

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_Quit()

void SDL_Quit ( void  )

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

Definition at line 89 of file SDL_dynapi_procs.h.

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 295 of file SDL.c.

296 {
297  /* Shut down requested initialized subsystems */
298 #if !SDL_SENSOR_DISABLED
299  if ((flags & SDL_INIT_SENSOR)) {
301  SDL_SensorQuit();
302  }
304  }
305 #endif
306 
307 #if !SDL_JOYSTICK_DISABLED
308  if ((flags & SDL_INIT_GAMECONTROLLER)) {
309  /* game controller implies joystick */
311 
314  }
316  }
317 
318  if ((flags & SDL_INIT_JOYSTICK)) {
319  /* joystick implies events */
321 
324  }
326  }
327 #endif
328 
329 #if !SDL_HAPTIC_DISABLED
330  if ((flags & SDL_INIT_HAPTIC)) {
332  SDL_HapticQuit();
333  }
335  }
336 #endif
337 
338 #if !SDL_AUDIO_DISABLED
339  if ((flags & SDL_INIT_AUDIO)) {
341  SDL_AudioQuit();
342  }
344  }
345 #endif
346 
347 #if !SDL_VIDEO_DISABLED
348  if ((flags & SDL_INIT_VIDEO)) {
349  /* video implies events */
351 
353  SDL_VideoQuit();
354  }
356  }
357 #endif
358 
359 #if !SDL_TIMERS_DISABLED
360  if ((flags & SDL_INIT_TIMER)) {
362  SDL_TimerQuit();
363  }
365  }
366 #endif
367 
368 #if !SDL_EVENTS_DISABLED
369  if ((flags & SDL_INIT_EVENTS)) {
371  SDL_EventsQuit();
372  }
374  }
375 #endif
376 }

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_PrivateShouldQuitSubsystem(), SDL_PrivateSubsystemRefCountDecr(), SDL_SensorQuit(), SDL_TimerQuit(), and SDL_VideoQuit.

Referenced by SDL_Quit().

◆ 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 379 of file SDL.c.

380 {
381  int i;
382  int num_subsystems = SDL_arraysize(SDL_SubsystemRefCount);
383  Uint32 initialized = 0;
384 
385  /* Fast path for checking one flag */
387  int subsystem_index = SDL_MostSignificantBitIndex32(flags);
388  return SDL_SubsystemRefCount[subsystem_index] ? flags : 0;
389  }
390 
391  if (!flags) {
393  }
394 
395  num_subsystems = SDL_min(num_subsystems, SDL_MostSignificantBitIndex32(flags) + 1);
396 
397  /* Iterate over each bit in flags, and check the matching subsystem. */
398  for (i = 0; i < num_subsystems; ++i) {
399  if ((flags & 1) && SDL_SubsystemRefCount[i] > 0) {
400  initialized |= (1 << i);
401  }
402 
403  flags >>= 1;
404  }
405 
406  return initialized;
407 }

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

SDL_AudioInit
#define SDL_AudioInit
Definition: SDL_dynapi_overrides.h:75
SDL_PrivateShouldInitSubsystem
static SDL_bool SDL_PrivateShouldInitSubsystem(Uint32 subsystem)
Definition: SDL.c:114
SDL_TimerQuit
void SDL_TimerQuit(void)
Definition: SDL_timer.c:239
SDL_ClearError
#define SDL_ClearError
Definition: SDL_dynapi_overrides.h:114
SDL_HapticQuit
void SDL_HapticQuit(void)
Definition: SDL_haptic.c:394
SDL_PrivateSubsystemRefCountIncr
static void SDL_PrivateSubsystemRefCountIncr(Uint32 subsystem)
Definition: SDL.c:95
NULL
#define NULL
Definition: begin_code.h:167
SDL_JoystickInit
int SDL_JoystickInit(void)
Definition: SDL_joystick.c:201
SDL_SubsystemRefCount
static Uint8 SDL_SubsystemRefCount[32]
Definition: SDL.c:91
SDL_INIT_JOYSTICK
#define SDL_INIT_JOYSTICK
Definition: SDL.h:81
SDL_INIT_EVENTS
#define SDL_INIT_EVENTS
Definition: SDL.h:84
SDL_TimerInit
int SDL_TimerInit(void)
Definition: SDL_timer.c:207
SDL_TicksInit
void SDL_TicksInit(void)
SDL_SensorInit
int SDL_SensorInit(void)
Definition: SDL_sensor.c:69
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:203
SDL_AudioQuit
#define SDL_AudioQuit
Definition: SDL_dynapi_overrides.h:76
SDL_GameControllerInit
int SDL_GameControllerInit(void)
Definition: SDL_gamecontroller.c:1399
SDL_SensorQuit
void SDL_SensorQuit(void)
Definition: SDL_sensor.c:440
SDL_INIT_SENSOR
#define SDL_INIT_SENSOR
Definition: SDL.h:85
SDL_PrivateSubsystemRefCountDecr
static void SDL_PrivateSubsystemRefCountDecr(Uint32 subsystem)
Definition: SDL.c:104
SDL_HapticInit
int SDL_HapticInit(void)
Definition: SDL_haptic.c:39
SDL_HasExactlyOneBitSet32
SDL_FORCE_INLINE SDL_bool SDL_HasExactlyOneBitSet32(Uint32 x)
Definition: SDL_bits.h:105
SDL_JoystickQuit
void SDL_JoystickQuit(void)
Definition: SDL_joystick.c:858
SDL_VideoInit
#define SDL_VideoInit
Definition: SDL_dynapi_overrides.h:498
SDL_min
#define SDL_min(x, y)
Definition: SDL_stdinc.h:406
SDL_PrivateShouldQuitSubsystem
static SDL_bool SDL_PrivateShouldQuitSubsystem(Uint32 subsystem)
Definition: SDL.c:123
SDL_INIT_HAPTIC
#define SDL_INIT_HAPTIC
Definition: SDL.h:82
SDL_arraysize
#define SDL_arraysize(array)
Definition: SDL_stdinc.h:115
SDL_INIT_VIDEO
#define SDL_INIT_VIDEO
Definition: SDL.h:80
SDL_INIT_TIMER
#define SDL_INIT_TIMER
Definition: SDL.h:78
SDL_SetError
#define SDL_SetError
Definition: SDL_dynapi_overrides.h:30
SDL_InitSubSystem
int SDL_InitSubSystem(Uint32 flags)
Definition: SDL.c:142
SDL_GameControllerQuit
void SDL_GameControllerQuit(void)
Definition: SDL_gamecontroller.c:1994
SDL_VideoQuit
#define SDL_VideoQuit
Definition: SDL_dynapi_overrides.h:499
SDL_MostSignificantBitIndex32
SDL_FORCE_INLINE int SDL_MostSignificantBitIndex32(Uint32 x)
Definition: SDL_bits.h:61
SDL_INIT_GAMECONTROLLER
#define SDL_INIT_GAMECONTROLLER
Definition: SDL.h:83
SDL_EventsInit
int SDL_EventsInit(void)
Definition: SDL_events.c:1009
SDL_EventsQuit
void SDL_EventsQuit(void)
Definition: SDL_events.c:1023
flags
GLbitfield flags
Definition: SDL_opengl_glext.h:1483
SDL_INIT_EVERYTHING
#define SDL_INIT_EVERYTHING
Definition: SDL.h:87
SDL_MainIsReady
static SDL_bool SDL_MainIsReady
Definition: SDL.c:88
i
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
SDL_INIT_AUDIO
#define SDL_INIT_AUDIO
Definition: SDL.h:79