Go to file
Sam Lantinga 07cb7c10a1 Fixed connecting and disconnecting real-joysticks closing virtual joysticks in Emscripten (thanks David!)
Emscripten was using its own, private integer in order to allocate
new SDL_JoystickIDs.  SDL keeps a similar integer for allocating
joystick-ids, one which is shared across multiple joystick backends.

SDL 2.0.13 introduces a new joystick-backend, a Virtual joystick
backend, which allows for software-driven joysticks, and which is
designed to sit alongside joystick-backends that provide access to
physical joysticks.

The Emscripten and the Virtual backends were, at times, getting
allocated the same SDL_JoystickIDs, if and when both backends were used
simultaneously.  This could happen if, for example, an application
was using a virtual joystick in order to drive a touch-screen
based joystick, while also supporting physical joysticks through the
Emscripten backend.

When two joysticks end up with the same SDL_JoystickID, conflicts
can occur.  For example, disconnecting a physical joystick with
the same SDL_JoystickID as a virtual one, can lead to the virtual
joystick being closed, inadvertently.

This fix makes the Emscripten backend use SDL's cross-joystick-backend
integer counter, which is shared among joystick backends, for allocating
new SDL_JoystickIDs, rather than a private, Emscripten-specific
counter.

Fixes https://github.com/libsdl-org/SDL/issues/3647
2023-11-06 17:12:51 -08:00
.github CI: change FreeBSD CI runner to cross-platform-actions. 2023-10-26 01:03:40 +03:00
VisualC Added subsystem refcount tests to testautomation 2023-11-04 00:52:08 -07:00
VisualC-GDK main: Added _optional_ callback entry points. 2023-11-01 18:40:41 -04:00
VisualC-WinRT main: Added _optional_ callback entry points. 2023-11-01 18:40:41 -04:00
Xcode Add SDL_sysmain_callbacks.c to the Xcode project 2023-11-05 00:31:27 -07:00
android-project Fixed touch normalized coordinates 2023-11-05 06:55:39 -08:00
build-scripts SDL_migration.cocci: Added a thing for SDL_Vulkan_CreateSurface. 2023-11-06 19:16:38 -05:00
cmake cmake: fix MSVC unrecognized option link warning 2023-11-06 01:58:26 +01:00
docs vulkan: SDL_Vulkan_CreateSurface now accepts an app-provided allocator. 2023-11-06 13:31:20 -05:00
include Sync SDL3 wiki -> header 2023-11-06 18:32:15 +00:00
mingw/pkg-support/cmake build: don't add SDL3 subfolder to include path for external projects 2022-11-27 14:33:13 -08:00
src Fixed connecting and disconnecting real-joysticks closing virtual joysticks in Emscripten (thanks David!) 2023-11-06 17:12:51 -08:00
test vulkan: SDL_Vulkan_CreateSurface now accepts an app-provided allocator. 2023-11-06 13:31:20 -05:00
wayland-protocols Add and event and flag to report when a window has been occluded 2023-07-18 16:42:05 -04:00
.clang-format Commented out syntax that causes Visual Studio 2019 to complain on every edit 2022-12-02 00:43:01 -08:00
.clang-tidy Fix size of memcpy in SDL_AudioDeviceFormatChangedAlreadyLocked 2023-08-05 14:14:45 -04:00
.editorconfig Fixed formatting for Haiku cc files 2023-01-25 03:03:41 -08:00
.gitignore Add VS code directory to gitignore 2023-07-25 23:36:14 -07:00
.wikiheaders-options sdlwiki: SDL3 advises users to include through 'SDL3/SDL.h' 2023-03-21 02:19:19 +01:00
Android.mk Always provide an implementation for all SDL3 symbols 2023-10-12 14:00:47 +02:00
BUGS.txt Cleaned up a few more Bugzilla mentions. 2021-02-12 14:46:49 -05:00
CMakeLists.txt Use XINPUT_STATE instead of XINPUT_STATE_EX (thanks Andrew!) 2023-11-04 22:28:09 -07:00
CREDITS.txt Use Apple's nomenclature for macOS and iOS 2022-11-25 16:00:06 -08:00
INSTALL.txt Use Apple's nomenclature for macOS and iOS 2022-11-25 16:00:06 -08:00
LICENSE.txt Updated copyright for 2023 2023-01-09 09:41:41 -08:00
README-SDL.txt More HTTPS changes in the documentation. 2017-02-16 16:52:03 -05:00
README.md Fixed typo 2023-08-31 09:32:39 -07:00
TODO.txt Fixed up legacy MoinMoin URLs at wiki.libsdl.org 2021-04-01 12:20:33 -04:00
WhatsNew.txt Removed patch note for change already in SDL 2.x 2023-07-08 09:35:42 -07:00

README.md

Simple DirectMedia Layer (SDL) Version 3.0

https://www.libsdl.org/

Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. It is used by video playback software, emulators, and popular games including Valve's award winning catalog and many Humble Bundle games.

More extensive documentation is available in the docs directory, starting with README.md. If you are migrating to SDL 3.0 from SDL 2.0, the changes are extensively documented in README-migration.md.

Enjoy!

Sam Lantinga (slouken@libsdl.org)