Simple Directmedia Layer
Go to file
Sam Lantinga 0c85173d5b 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

(cherry picked from commit 07cb7c10a15b95387431bcb3a1ae77cfd432707b)
2023-11-06 17:13:16 -08:00
.github CI: change FreeBSD CI runner to cross-platform-actions. 2023-10-26 01:03:50 +03:00
acinclude autotools: revised and silenced esound detection a bit. 2022-09-24 20:01:04 +03:00
android-project Added support for the HP HyperX Clutch Gladiate controller 2023-10-25 09:01:46 -07:00
android-project-ant Added the old ant Android build project structure 2017-10-28 12:11:25 -07:00
build-scripts update config.guess and config.sub from mainstream 2023-09-20 14:50:56 +03:00
cmake cmake: add qnx support 2023-09-30 16:48:51 +02:00
docs Sync wiki -> header 2023-10-10 10:19:51 -04:00
include Use XINPUT_STATE instead of XINPUT_STATE_EX (thanks Andrew!) 2023-11-04 22:24:55 -07:00
mingw/pkg-support/cmake cmake: else() does not need an argument 2022-10-20 13:29:35 +02:00
src Fixed connecting and disconnecting real-joysticks closing virtual joysticks in Emscripten (thanks David!) 2023-11-06 17:13:16 -08:00
test Added support for "%[]" sscanf syntax 2023-10-24 17:32:23 -07:00
VisualC cmake: update cmake_minimum_required to avoid deprecated warning 2023-08-09 02:53:48 +02:00
VisualC-GDK – gdk: Add SDL_GDKGetDefaultUser, SDL_GetPrefPath implementation 2023-08-25 10:41:14 -04:00
VisualC-WinRT Move SDL_mslibc.c into the source file list 2022-11-13 11:09:38 -08:00
visualtest Remove unneeded semicolon 2022-11-17 10:43:45 +01:00
wayland-protocols Support wayland fractional scale protocol 2022-11-29 16:37:02 -05:00
Xcode Updated to version 2.29.0 for development 2023-06-20 11:50:19 -07:00
Xcode-iOS/Demos Cleanup add brace (#6545) 2022-11-28 12:33:03 -08:00
.clang-format Commented out syntax that causes Visual Studio 2019 to complain on every edit 2022-12-02 00:43:46 -08:00
.editorconfig editorconfig: remove trailing whitespace in source code 2022-12-26 10:34:45 -08:00
.gitignore cmake: use FindALSA.cmake to find ALSA library 2022-12-11 23:23:45 +01:00
.wikiheaders-options wikiheaders: Bridge README files in the docs directory to wiki. 2023-02-28 11:46:46 -05:00
Android.mk Fixed building with the 16.1.4479499 Android toolchain 2023-06-03 23:55:56 -07:00
autogen.sh Simplified autogen.sh, thanks to @smcv for the tip 2022-05-05 11:54:24 -07:00
BUGS.txt Cleaned up a few more Bugzilla mentions. 2021-02-12 14:46:49 -05:00
cmake_uninstall.cmake.in Fixed bug 3867 - Can't find install_manifest.txt when running 'uninstall' target 2017-10-12 08:44:45 -07:00
CMakeLists.txt Use XINPUT_STATE instead of XINPUT_STATE_EX (thanks Andrew!) 2023-11-04 22:24:55 -07:00
configure autotools: fix linux joystick breakage after commit 221d6ea8a8ca 2023-11-06 23:25:58 +03:00
configure.ac autotools: fix linux joystick breakage after commit 221d6ea8a8ca 2023-11-06 23:25:58 +03:00
CREDITS.txt Fixed crash if initialization of EGL failed but was tried again later. 2015-06-21 17:33:46 +02:00
INSTALL.txt INSTALL.txt: Say "macOS" instead of "Mac OS X" in modern times. 2022-03-15 13:07:55 -04:00
LICENSE.txt Updated copyright for 2023 2023-01-09 09:48:21 -08:00
Makefile.in added missing FGREP to Makefile.in. fixed syntax. regenerated configure. 2022-11-24 17:00:20 +03:00
Makefile.minimal Split up CFLAGS construction so it can be overridden 2023-03-29 07:26:34 -07:00
Makefile.os2 Updated to version 2.29.0 for development 2023-06-20 11:50:19 -07:00
Makefile.pandora more fixes to standalone makefiles. 2021-11-13 21:56:20 +03:00
Makefile.w32 Updated to version 2.29.0 for development 2023-06-20 11:50:19 -07:00
README-SDL.txt More HTTPS changes in the documentation. 2017-02-16 16:52:03 -05:00
README.md Update and rename README.txt to README.md 2021-03-20 18:46:37 -04:00
sdl2-config-version.cmake.in Add documentation to autotoo'ls sdl2-config-version.cmake.in 2022-05-31 00:10:55 +02:00
sdl2-config.cmake.in cmake: allow users of sdl2-config.cmake to not add -mwindows to the link options 2023-04-18 14:10:12 -04:00
sdl2-config.in Revert "sdl2-config.in: Deprecate sdl2-config" 2022-11-18 06:53:13 -08:00
sdl2.m4 Revert "sdl2.m4: Deprecate AM_PATH_SDL2 in favour of PKG_CHECK_MODULES" 2022-11-18 06:52:12 -08:00
sdl2.pc.in cmake: use FindALSA.cmake to find ALSA library 2022-12-11 23:23:45 +01:00
SDL2.spec.in license: Fixed references to COPYING.txt that are now LICENSE.txt. 2021-02-18 11:07:26 -05:00
SDL2Config.cmake.in cmake: use FindALSA.cmake to find ALSA library 2022-12-11 23:23:45 +01:00
TODO.txt Fixed up legacy MoinMoin URLs at wiki.libsdl.org 2021-04-01 12:20:33 -04:00
WhatsNew.txt Added patch note for SDL_GDKGetDefaultUser() 2023-11-02 09:59:25 -07:00

Simple DirectMedia Layer (SDL) Version 2.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

Enjoy!

Sam Lantinga (slouken@libsdl.org)