# SDL 2.0.18 released!

**URL:** <https://discourse.libsdl.org/t/sdl-2-0-18-released/33768>\
**Category:** SDL Announcements\
**Created:** [November 30, 2021, 5:34pm UTC](https://discourse.libsdl.org/t/sdl-2-0-18-released/33768 "2021-11-30T17:34:57Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![slouken](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/s/ec9cab/32.png) [@slouken](https://discourse.libsdl.org/u/slouken)\
**Post date:** [November 30, 2021, 5:34pm UTC](https://discourse.libsdl.org/t/sdl-2-0-18-released/33768/1 "2021-11-30T17:34:57Z")

</div>

Thanks to all the people who contributed code and feedback, SDL 2.0.18 is now available!

[https://www.libsdl.org/download-2.0.php](https://www.libsdl.org/download-2.0.php)

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

General:

- 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
- SDL-specific CMake options are now prefixed with ‘SDL\_’. Be sure to update your CMake build scripts accordingly!
- 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

Windows:

- Improved relative mouse motion over Windows Remote Desktop
- Added the hint SDL\_HINT\_IME\_SHOW\_UI to show native UI components instead of hiding them (defaults off)

Windows/UWP:

- WGI is used instead of XInput for better controller support in UWP apps

Linux:

- 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

Android:

- 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

iOS:

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