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_mutex.h"
#include "SDL_power.h"
#include "SDL_render.h"
#include "SDL_rwops.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.

Macros

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_NOPARACHUTE   0x00100000u
 
#define SDL_INIT_EVERYTHING
 

Functions

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

◆ SDL_INIT_EVENTS

#define SDL_INIT_EVENTS   0x00004000u

◆ SDL_INIT_EVERYTHING

#define SDL_INIT_EVERYTHING
Value:
( \
SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER \
)
#define SDL_INIT_EVENTS
Definition: SDL.h:82
#define SDL_INIT_AUDIO
Definition: SDL.h:77
#define SDL_INIT_GAMECONTROLLER
Definition: SDL.h:81
#define SDL_INIT_HAPTIC
Definition: SDL.h:80
#define SDL_INIT_VIDEO
Definition: SDL.h:78

Definition at line 84 of file SDL.h.

Referenced by platform_testDefaultInit(), SDL_Quit(), and SDL_WasInit().

◆ SDL_INIT_GAMECONTROLLER

#define SDL_INIT_GAMECONTROLLER   0x00002000u

SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK

Definition at line 81 of file SDL.h.

Referenced by main(), main_testImpliedJoystickInit(), main_testImpliedJoystickQuit(), main_testInitQuitSubSystem(), SDL_InitSubSystem(), and SDL_QuitSubSystem().

◆ SDL_INIT_HAPTIC

#define SDL_INIT_HAPTIC   0x00001000u

◆ SDL_INIT_JOYSTICK

#define SDL_INIT_JOYSTICK   0x00000200u

SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS

Definition at line 79 of file SDL.h.

Referenced by main(), main_testImpliedJoystickQuit(), main_testInitQuitJoystickHaptic(), main_testInitQuitSubSystem(), SDL_InitSubSystem(), and SDL_QuitSubSystem().

◆ SDL_INIT_NOPARACHUTE

#define SDL_INIT_NOPARACHUTE   0x00100000u

compatibility; this flag is ignored.

Definition at line 83 of file SDL.h.

◆ SDL_INIT_TIMER

#define SDL_INIT_TIMER   0x00000001u

Definition at line 76 of file SDL.h.

Referenced by _timerSetUp(), main(), SDL_InitSubSystem(), SDL_QuitSubSystem(), and SDLTest_SetTestTimeout().

◆ SDL_INIT_VIDEO

#define SDL_INIT_VIDEO   0x00000020u

SDL_INIT_VIDEO implies SDL_INIT_EVENTS

Definition at line 78 of file SDL.h.

Referenced by main(), SDL_InitSubSystem(), SDL_QuitSubSystem(), SDL_WinRTInitXAMLApp(), SDLTest_CommonInit(), SDLTest_CommonQuit(), and SDLTest_CommonUsage().

Function Documentation

◆ SDL_Init()

int SDL_Init ( Uint32  flags)

This function initializes the subsystems specified by flags

Definition at line 239 of file SDL.c.

References SDL_InitSubSystem().

240 {
241  return SDL_InitSubSystem(flags);
242 }
GLbitfield flags
int SDL_InitSubSystem(Uint32 flags)
Definition: SDL.c:105

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

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

Referenced by SDL_Init().

106 {
107  if (!SDL_MainIsReady) {
108  SDL_SetError("Application didn't initialize properly, did you include SDL_main.h in the file containing your main() function?");
109  return -1;
110  }
111 
112  /* Clear the error message */
113  SDL_ClearError();
114 
115  if ((flags & SDL_INIT_GAMECONTROLLER)) {
116  /* game controller implies joystick */
118  }
119 
121  /* video or joystick implies events */
123  }
124 
125 #if SDL_VIDEO_DRIVER_WINDOWS
127  if (SDL_HelperWindowCreate() < 0) {
128  return -1;
129  }
130  }
131 #endif
132 
133 #if !SDL_TIMERS_DISABLED
134  SDL_TicksInit();
135 #endif
136 
137  /* Initialize the event subsystem */
138  if ((flags & SDL_INIT_EVENTS)) {
139 #if !SDL_EVENTS_DISABLED
140  if (SDL_PrivateShouldInitSubsystem(SDL_INIT_EVENTS)) {
141  if (SDL_StartEventLoop() < 0) {
142  return (-1);
143  }
144  SDL_QuitInit();
145  }
146  SDL_PrivateSubsystemRefCountIncr(SDL_INIT_EVENTS);
147 #else
148  return SDL_SetError("SDL not built with events support");
149 #endif
150  }
151 
152  /* Initialize the timer subsystem */
153  if ((flags & SDL_INIT_TIMER)){
154 #if !SDL_TIMERS_DISABLED
155  if (SDL_PrivateShouldInitSubsystem(SDL_INIT_TIMER)) {
156  if (SDL_TimerInit() < 0) {
157  return (-1);
158  }
159  }
160  SDL_PrivateSubsystemRefCountIncr(SDL_INIT_TIMER);
161 #else
162  return SDL_SetError("SDL not built with timer support");
163 #endif
164  }
165 
166  /* Initialize the video subsystem */
167  if ((flags & SDL_INIT_VIDEO)){
168 #if !SDL_VIDEO_DISABLED
169  if (SDL_PrivateShouldInitSubsystem(SDL_INIT_VIDEO)) {
170  if (SDL_VideoInit(NULL) < 0) {
171  return (-1);
172  }
173  }
174  SDL_PrivateSubsystemRefCountIncr(SDL_INIT_VIDEO);
175 #else
176  return SDL_SetError("SDL not built with video support");
177 #endif
178  }
179 
180  /* Initialize the audio subsystem */
181  if ((flags & SDL_INIT_AUDIO)){
182 #if !SDL_AUDIO_DISABLED
183  if (SDL_PrivateShouldInitSubsystem(SDL_INIT_AUDIO)) {
184  if (SDL_AudioInit(NULL) < 0) {
185  return (-1);
186  }
187  }
188  SDL_PrivateSubsystemRefCountIncr(SDL_INIT_AUDIO);
189 #else
190  return SDL_SetError("SDL not built with audio support");
191 #endif
192  }
193 
194  /* Initialize the joystick subsystem */
195  if ((flags & SDL_INIT_JOYSTICK)){
196 #if !SDL_JOYSTICK_DISABLED
197  if (SDL_PrivateShouldInitSubsystem(SDL_INIT_JOYSTICK)) {
198  if (SDL_JoystickInit() < 0) {
199  return (-1);
200  }
201  }
202  SDL_PrivateSubsystemRefCountIncr(SDL_INIT_JOYSTICK);
203 #else
204  return SDL_SetError("SDL not built with joystick support");
205 #endif
206  }
207 
208  if ((flags & SDL_INIT_GAMECONTROLLER)){
209 #if !SDL_JOYSTICK_DISABLED
210  if (SDL_PrivateShouldInitSubsystem(SDL_INIT_GAMECONTROLLER)) {
211  if (SDL_GameControllerInit() < 0) {
212  return (-1);
213  }
214  }
215  SDL_PrivateSubsystemRefCountIncr(SDL_INIT_GAMECONTROLLER);
216 #else
217  return SDL_SetError("SDL not built with joystick support");
218 #endif
219  }
220 
221  /* Initialize the haptic subsystem */
222  if ((flags & SDL_INIT_HAPTIC)){
223 #if !SDL_HAPTIC_DISABLED
224  if (SDL_PrivateShouldInitSubsystem(SDL_INIT_HAPTIC)) {
225  if (SDL_HapticInit() < 0) {
226  return (-1);
227  }
228  }
229  SDL_PrivateSubsystemRefCountIncr(SDL_INIT_HAPTIC);
230 #else
231  return SDL_SetError("SDL not built with haptic (force feedback) support");
232 #endif
233  }
234 
235  return (0);
236 }
#define SDL_ClearError
#define SDL_INIT_EVENTS
Definition: SDL.h:82
static SDL_bool SDL_MainIsReady
Definition: SDL.c:51
#define SDL_INIT_JOYSTICK
Definition: SDL.h:79
#define SDL_AudioInit
int SDL_JoystickInit(void)
Definition: SDL_joystick.c:70
int SDL_StartEventLoop(void)
Definition: SDL_events.c:391
int SDL_TimerInit(void)
Definition: SDL_timer.c:207
int SDL_QuitInit(void)
Definition: SDL_quit.c:92
static void SDL_PrivateSubsystemRefCountIncr(Uint32 subsystem)
Definition: SDL.c:58
#define SDL_VideoInit
#define NULL
Definition: begin_code.h:164
static SDL_bool SDL_PrivateShouldInitSubsystem(Uint32 subsystem)
Definition: SDL.c:77
#define SDL_SetError
GLbitfield flags
#define SDL_INIT_TIMER
Definition: SDL.h:76
#define SDL_INIT_AUDIO
Definition: SDL.h:77
void SDL_TicksInit(void)
#define SDL_INIT_GAMECONTROLLER
Definition: SDL.h:81
#define SDL_INIT_HAPTIC
Definition: SDL.h:80
int SDL_GameControllerInit(void)
int SDL_HapticInit(void)
Definition: SDL_haptic.c:35
#define SDL_INIT_VIDEO
Definition: SDL.h:78

◆ SDL_Quit()

void SDL_Quit ( void  )

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

Definition at line 346 of file SDL.c.

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.

347 {
349 
350  /* Quit all subsystems */
351 #if SDL_VIDEO_DRIVER_WINDOWS
352  SDL_HelperWindowDestroy();
353 #endif
355 
356 #if !SDL_TIMERS_DISABLED
357  SDL_TicksQuit();
358 #endif
359 
360  SDL_ClearHints();
363 
364  /* Now that every subsystem has been quit, we reset the subsystem refcount
365  * and the list of initialized subsystems.
366  */
368 
370 }
#define SDL_LogResetPriorities
static Uint8 SDL_SubsystemRefCount[32]
Definition: SDL.c:54
void SDL_QuitSubSystem(Uint32 flags)
Definition: SDL.c:245
#define SDL_ClearHints
static SDL_bool SDL_bInMainQuit
Definition: SDL.c:53
void SDL_AssertionsQuit(void)
Definition: SDL_assert.c:387
#define SDL_INIT_EVERYTHING
Definition: SDL.h:84
GLuint GLfloat x0
void SDL_TicksQuit(void)
#define SDL_memset

◆ SDL_QuitSubSystem()

void SDL_QuitSubSystem ( Uint32  flags)

This function cleans up specific SDL subsystems

Definition at line 245 of file SDL.c.

References SDL_AudioQuit, SDL_GameControllerQuit(), SDL_HapticQuit(), SDL_INIT_AUDIO, SDL_INIT_EVENTS, SDL_INIT_GAMECONTROLLER, SDL_INIT_HAPTIC, SDL_INIT_JOYSTICK, SDL_INIT_TIMER, SDL_INIT_VIDEO, SDL_JoystickQuit(), SDL_PrivateShouldQuitSubsystem(), SDL_PrivateSubsystemRefCountDecr(), SDL_QuitQuit(), SDL_StopEventLoop(), SDL_TimerQuit(), and SDL_VideoQuit.

Referenced by SDL_Quit().

246 {
247  /* Shut down requested initialized subsystems */
248 #if !SDL_JOYSTICK_DISABLED
249  if ((flags & SDL_INIT_GAMECONTROLLER)) {
250  /* game controller implies joystick */
252 
253  if (SDL_PrivateShouldQuitSubsystem(SDL_INIT_GAMECONTROLLER)) {
255  }
256  SDL_PrivateSubsystemRefCountDecr(SDL_INIT_GAMECONTROLLER);
257  }
258 
259  if ((flags & SDL_INIT_JOYSTICK)) {
260  /* joystick implies events */
262 
263  if (SDL_PrivateShouldQuitSubsystem(SDL_INIT_JOYSTICK)) {
265  }
266  SDL_PrivateSubsystemRefCountDecr(SDL_INIT_JOYSTICK);
267  }
268 #endif
269 
270 #if !SDL_HAPTIC_DISABLED
271  if ((flags & SDL_INIT_HAPTIC)) {
272  if (SDL_PrivateShouldQuitSubsystem(SDL_INIT_HAPTIC)) {
273  SDL_HapticQuit();
274  }
275  SDL_PrivateSubsystemRefCountDecr(SDL_INIT_HAPTIC);
276  }
277 #endif
278 
279 #if !SDL_AUDIO_DISABLED
280  if ((flags & SDL_INIT_AUDIO)) {
281  if (SDL_PrivateShouldQuitSubsystem(SDL_INIT_AUDIO)) {
282  SDL_AudioQuit();
283  }
284  SDL_PrivateSubsystemRefCountDecr(SDL_INIT_AUDIO);
285  }
286 #endif
287 
288 #if !SDL_VIDEO_DISABLED
289  if ((flags & SDL_INIT_VIDEO)) {
290  /* video implies events */
292 
293  if (SDL_PrivateShouldQuitSubsystem(SDL_INIT_VIDEO)) {
294  SDL_VideoQuit();
295  }
296  SDL_PrivateSubsystemRefCountDecr(SDL_INIT_VIDEO);
297  }
298 #endif
299 
300 #if !SDL_TIMERS_DISABLED
301  if ((flags & SDL_INIT_TIMER)) {
302  if (SDL_PrivateShouldQuitSubsystem(SDL_INIT_TIMER)) {
303  SDL_TimerQuit();
304  }
305  SDL_PrivateSubsystemRefCountDecr(SDL_INIT_TIMER);
306  }
307 #endif
308 
309 #if !SDL_EVENTS_DISABLED
310  if ((flags & SDL_INIT_EVENTS)) {
311  if (SDL_PrivateShouldQuitSubsystem(SDL_INIT_EVENTS)) {
312  SDL_QuitQuit();
314  }
315  SDL_PrivateSubsystemRefCountDecr(SDL_INIT_EVENTS);
316  }
317 #endif
318 }
#define SDL_INIT_EVENTS
Definition: SDL.h:82
void SDL_TimerQuit(void)
Definition: SDL_timer.c:239
void SDL_HapticQuit(void)
Definition: SDL_haptic.c:390
#define SDL_INIT_JOYSTICK
Definition: SDL.h:79
#define SDL_AudioQuit
void SDL_GameControllerQuit(void)
GLbitfield flags
#define SDL_INIT_TIMER
Definition: SDL.h:76
#define SDL_INIT_AUDIO
Definition: SDL.h:77
static void SDL_PrivateSubsystemRefCountDecr(Uint32 subsystem)
Definition: SDL.c:67
#define SDL_VideoQuit
static SDL_bool SDL_PrivateShouldQuitSubsystem(Uint32 subsystem)
Definition: SDL.c:86
#define SDL_INIT_GAMECONTROLLER
Definition: SDL.h:81
void SDL_JoystickQuit(void)
Definition: SDL_joystick.c:545
#define SDL_INIT_HAPTIC
Definition: SDL.h:80
#define SDL_INIT_VIDEO
Definition: SDL.h:78
void SDL_QuitQuit(void)
Definition: SDL_quit.c:128
void SDL_StopEventLoop(void)
Definition: SDL_events.c:317

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

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

322 {
323  int i;
324  int num_subsystems = SDL_arraysize(SDL_SubsystemRefCount);
325  Uint32 initialized = 0;
326 
327  if (!flags) {
329  }
330 
331  num_subsystems = SDL_min(num_subsystems, SDL_MostSignificantBitIndex32(flags) + 1);
332 
333  /* Iterate over each bit in flags, and check the matching subsystem. */
334  for (i = 0; i < num_subsystems; ++i) {
335  if ((flags & 1) && SDL_SubsystemRefCount[i] > 0) {
336  initialized |= (1 << i);
337  }
338 
339  flags >>= 1;
340  }
341 
342  return initialized;
343 }
#define SDL_min(x, y)
Definition: SDL_stdinc.h:406
static Uint8 SDL_SubsystemRefCount[32]
Definition: SDL.c:54
SDL_FORCE_INLINE int SDL_MostSignificantBitIndex32(Uint32 x)
Definition: SDL_bits.h:61
uint32_t Uint32
Definition: SDL_stdinc.h:181
#define SDL_INIT_EVERYTHING
Definition: SDL.h:84
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
GLbitfield flags
#define SDL_arraysize(array)
Definition: SDL_stdinc.h:93