Function SDL_Init

pub unsafe extern "C" fn SDL_Init(flags: u32) -> bool
Available on crate feature dep_sdl3 only.
Expand description

Initialize the SDL library.

SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the two may be used interchangeably. Though for readability of your code SDL_InitSubSystem() might be preferred.

The file I/O (for example: [SDL_IOFromFile]) and threading ([SDL_CreateThread]) subsystems are initialized by default. Message boxes ([SDL_ShowSimpleMessageBox]) also attempt to work without initializing the video subsystem, in hopes of being useful in showing an error dialog when SDL_Init fails. You must specifically initialize other subsystems if you use them in your application.

Logging (such as [SDL_Log]) works without initialization, too.

flags may be any of the following OR’d together:

  • SDL_INIT_AUDIO: audio subsystem; automatically initializes the events subsystem
  • SDL_INIT_VIDEO: video subsystem; automatically initializes the events subsystem, should be initialized on the main thread.
  • SDL_INIT_JOYSTICK: joystick subsystem; automatically initializes the events subsystem
  • SDL_INIT_HAPTIC: haptic (force feedback) subsystem
  • SDL_INIT_GAMEPAD: gamepad subsystem; automatically initializes the joystick subsystem
  • SDL_INIT_EVENTS: events subsystem
  • SDL_INIT_SENSOR: sensor subsystem; automatically initializes the events subsystem
  • SDL_INIT_CAMERA: camera subsystem; automatically initializes the events subsystem

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.

Consider reporting some basic metadata about your application before calling SDL_Init, using either SDL_SetAppMetadata() or SDL_SetAppMetadataProperty().

§Parameters

  • flags: subsystem initialization flags.

§Return value

Returns true on success or false on failure; call SDL_GetError() for more information.

§Availability

This function is available since SDL 3.2.0.

§See also