Thanks to all the people who contributed code and feedback, SDL 2.0.16 is now available as a PRERELEASE build!

In addition to lots of bug fixes, here are the major changes in this release:


  • The SDL wiki documentation and development headers are automatically kept in sync
  • Each function has information about in which version of SDL it was introduced
  • Added the hint SDL_HINT_APP_NAME to let SDL know the name of your application for various places it might show up in system information
  • Added SDL_RenderGeometry() and SDL_RenderGeometryRaw() to allow rendering of arbitrary shapes using the SDL 2D render API
  • Added SDL_SetTextureUserData() and SDL_GetTextureUserData() to associate application data with an SDL texture
  • Added SDL_RenderWindowToLogical() and SDL_RenderLogicalToWindow() to convert between window coordinates and logical render coordinates
  • Added SDL_RenderSetVSync() to change whether a renderer present is synchronized with vblank at runtime
  • Added SDL_PremultiplyAlpha() to premultiply alpha on a block of SDL_PIXELFORMAT_ARGB8888 pixels
  • Added a window event SDL_WINDOWEVENT_DISPLAY_CHANGED which is sent when a window changes what display it’s centered on
  • Added SDL_GetWindowICCProfile() to query a window’s ICC profile, and a window event SDL_WINDOWEVENT_ICCPROF_CHANGED that is sent when it changes
  • Added the hint SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY to allow EGL windows to be transparent instead of opaque
  • SDL_WaitEvent() has been redesigned to use less CPU in most cases
  • Added SDL_SetWindowMouseRect() and SDL_GetWindowMouseRect() to confine the mouse cursor to an area of a window
  • You can now read precise mouse wheel motion using ‘preciseX’ and ‘preciseY’ event fields
  • Added SDL_GameControllerHasRumble() and SDL_GameControllerHasRumbleTriggers() to query whether a game controller supports rumble
  • Added SDL_JoystickHasRumble() and SDL_JoystickHasRumbleTriggers() to query whether a joystick supports rumble
  • SDL’s hidapi implementation is now available as a public API in SDL_hidapi.h


  • Added the hint SDL_HINT_IME_SHOW_UI to show native UI components instead of hiding them (defaults off)


  • Added the hint SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME to set the activity that’s displayed by the system when the screensaver is disabled
  • Added the hint SDL_HINT_LINUX_JOYSTICK_CLASSIC to control whether /dev/input/js* or /dev/input/event* are used as joystick devices
  • Added the hint SDL_HINT_JOYSTICK_DEVICE to allow the user to specify devices that will be opened in addition to the normal joystick detection
  • Added SDL_LinuxSetThreadPriorityAndPolicy() for more control over a thread priority on Linux


  • Added support for audio output and capture using AAudio on Android 8.1 and newer
  • Steam Controller support is disabled by default, and can be enabled by setting the hint SDL_HINT_JOYSTICK_HIDAPI_STEAM to “1” before calling SDL_Init()

Apple Arcade:

  • Added SDL_GameControllerGetAppleSFSymbolsNameForButton() and SDL_GameControllerGetAppleSFSymbolsNameForAxis() to support Apple Arcade titles


  • Added documentation that the UIApplicationSupportsIndirectInputEvents key must be set to true in your application’s Info.plist in order to get real Bluetooth mouse events.
  • Steam Controller support is disabled by default, and can be enabled by setting the hint SDL_HINT_JOYSTICK_HIDAPI_STEAM to “1” before calling SDL_Init()


We put SDL2.0.18 Release Candidate into the Microsoft Windows version of our finished game.

Please help test SDL2.0.18 on your Microsoft Windows desktop/laptop by downloading game on GitHub:


Jesse “JeZxLee”

I’m surprised that 2.0.18 is so much larger than 2.0.16 (for example the 32-bit Windows DLL is 2,018,816 bytes compared with 1,398,272). It bloats my application somewhat.

This is likely because hidapi is built as part of SDL now instead as an external library.

If I built the DLL myself could I exclude that?

i’ve built it myself ,the final size i’ve got is 1.2mb , and if you want more just upx it and you’ll end up with some thing around ~400kb

I’m building with the VC project using SDL_LEAN_AND_MEAN and getting a 711 KB .dll, HIDAPI included.

2 MB? That’s got to include debug info, surely?

Does anyone know of any other pre-process defines like SDL_LEAN_AND_MEAN?

MinGW’s strip.exe doesn’t shorten it, so I don’t think so.