Log

Author Commit Date CI Message
Sylvain Becker 96d555e2 2020-08-17T20:09:01 Android: remove un-needed java import (bug 4297)
Sylvain Becker 965b466e 2020-08-17T19:50:20 Fixed bug 4297 - Android StrictMode policy. Remove APK expansion support "In the second half of 2021, new apps will be required to publish with the Android App Bundle on Google Play" (see https://developer.android.com/guide/app-bundle) And "Android App Bundles don't support APK expansion (*.obb) files".
Manuel Alfayate Corchete 92cb9192 2020-08-17T18:35:04 kmsdrm: move hardware cursor functionality to the ATOMIC interface. Disconnect the display plane from the GBM surface buffers before destroying the GBM surface.
Sam Lantinga 86517d3e 2020-08-10T08:42:35 Fixed bug 5242 - KMOD_* flags unnecessarily macros; breaks OGRE Rainer Deyke While most of the KMOD_* flags are enums, the combination flags KMOD_CTRL, KMOD_ALT, KMOD_SHIFT and KMOD_GUI are defined as macros. This breaks third-party code that uses these KMOD_* names for local identifiers, such as OGRE. The correct thing to do is to make them all enums.
Ryan C. Gordon a720d1a2 2020-08-09T00:55:39 render: fixes to how we convert touch events for logical scaling. We now handle HiDPI correctly, and touches are clamped to the viewport. So if you are rendering to a logical 640x480 in a 720p window, and touch the letterboxing at point (640,700), it will report the touch at (0.5,1.0) instead of outside the documented range.
Manuel Alfayate Corchete c437729b 2020-08-08T14:27:55 kmsdrm: separate requests in different functions so we only need one atomic commit for everything, as expected by atomic design.
Manuel Alfayate Corchete 3b9f1073 2020-08-07T11:53:04 kmsdrm: wait for possible pending atomic commits before destroying surfaces, and before restoring video on quit. Move messages to the SDL_Log* functions.
Manuel Alfayate Corchete 96c99693 2020-08-06T01:36:56 kmsdrm: wait for pending atomic commits before restoring videomode and crtc->buffer on VideoQuit, and simplify double-buffer SwapWindow() implementation.
Manuel Alfayate Corchete 09692b61 2020-08-05T18:55:22 kmsdrm: move videomode restoration on VideoQuit() to using the atomic interface instead of the legacy drmModeSetCrtc() function. Refactoring of get_plane_id().
Manuel Alfayate Corchete fc722b2d 2020-08-05T15:28:51 kmsdrm: free memory for plane, crtc and connector property tables on VideoQuit.
Manuel Alfayate Corchete 2d69ce08 2020-08-05T02:06:59 kmsdrm: double and triple buffered versions of SwapWindow() are now both reimplemented in atomic pageflipping versions, and can be selected via SDL_VIDEO_DOUBLE_BUFFER env variable.
Manuel Alfayate Corchete 8996ee17 2020-08-03T22:24:49 kmsdrm: update SwapWindow fn, moving it to triple-buffer.
Ryan C. Gordon ea171c05 2020-08-01T18:58:42 winrt: Another attempt at getting this to compile. IntPtr isn't a POD type like I thought, so hopefully we can just construct one that works out? C++/CX is so weird.
Manuel Alfayate Corchete b131661c 2020-08-01T18:23:34 kmsdrm: rewrite the new SwapWindow() fn to avoid tearing. Double-buffer only for now.
Ryan C. Gordon 282e4c65 2020-07-31T19:42:23 winrt: Patched to compile...? Microsoft's C++/CX is weird, no idea if this will actually fix it. :/
Manuel Alfayate Corchete 1a5503ce 2020-07-28T21:11:25 kmsdrm: Moved to the ATOMIC KMS/DRM interface for buffer swapping, leaving DRM-legacy behind.
Ryan C. Gordon e410b34f 2020-07-24T22:24:03 stdlib: Corrected implementation of SDL_wcsncmp. It was a copy/paste of SDL_strcmp, apparently, not SDL_strncmp, so it ignored the maxlen parameter. Thanks to Jack Powell for pointing this out!
Kai Krakow c3ecf18c 2020-07-21T23:38:42 Linux: Add hint for disabling deadzones
Tudor Brindus c0943328 2020-07-21T13:14:24 wayland: defer pointer confine creation until pointer unlock It is a protocol error to attempt to create a pointer confine (i.e. `SDL_SetWindowGrab`) while a locked pointer is active, and vice-versa. Instead of aborting due to a protocol error, this commit makes SDL gracefully downgrade locked pointers to confines when appropriate.
RALOVICH, Kristof c7eb557d 2020-07-20T10:09:07 kmsdrm: do not leak drmModeConnector Previously conn was leaked on the success path (when available was set to SDL_TRUE).
Manuel Alfayate Corchete 412b21b0 2020-07-20T11:42:23 Rename the gbm device struct from gbm to gbm_dev for better readabilty.
RALOVICH, Kristof 155fdc7a 2020-07-19T21:48:17 kmsdrm: settle with first card that has a connected connector Previously the first card with non-empty connectors, encoders and crtcs would be selected, however KMSDRM_VideoInit could still reject it if the connector was not connected. This allow finding the first card (in a multi GPU setup) that is actually connected to a display.
RALOVICH, Kristof b78b88f7 2020-07-19T21:46:41 kmsdrm: fix typo
Manuel Alfayate Corchete 75fe4b14 2020-07-19T19:53:57 Added comment about window creation behaviour in KMSDRM.
Manuel Alfayate Corchete 2f660c4f 2020-07-19T19:11:02 Delete windata variable no longer needed in KMSDR_SetDisplayMode().
Manuel Alfayate Corchete 3a1d7d9c 2020-07-19T19:09:15 Surfaces have to be recreated immediately from KMSDRM_SetDisplayMode().
Manuel Alfayate Corchete b6a818b6 2020-07-19T18:45:29 Fix SDL_Window recreation: drmModeSetCrtc() has to be called everytime the EGL and GBM surfaces are recreated.
Sam Lantinga 71e9df99 2020-07-19T08:55:01 Fixed bug 5231 - Fix for hardware cursor: size and alpha-premultiplication. Manuel Alfayate Corchete I noticed pt2-clone had problems with it's optional hardware mouse on the KMSDRM backend: cursor had a transparent block around it. So I was investigating and it seems that a GBM cursor needs it's pixels to be alpha-premultiplied instead of straight-alpha. A lso, I was previously relying on "manual testing" for the cursor size, but it's far better to use whatever the DRM driver recommends via drmGetCap(): any working driver should make a size recommendation via drmGetCap(), so that's what we use now. I took this decision because I found out that the AMDGPU driver reported working cursor sizes that would appear garbled on screen, and only the recommended cursor size works.
Sam Lantinga b0ca8efd 2020-07-17T22:21:37 Re-add check for Metal on x86, where it's not supported.
Ryan C. Gordon b7a4fdd3 2020-07-17T11:16:35 metal: Make sure we have a command buffer available before trying to present. This fixes a case where you render to the backbuffer, then render to a render target, set the current target back to the backbuffer, and then present without drawing anything else; in this circumstance, the Present command would never happen. Fixes Bugzilla #5011.
Ryan C. Gordon b5affd12 2020-07-16T13:28:59 Patched to compile.
Ryan C. Gordon 3b38e61a 2020-07-16T13:25:50 winrt: Fix casting a pointer to int. Fixes Bugzilla #5202.
Ryan C. Gordon 8babda2c 2020-07-16T13:18:19 egl: SDL_EGL_LoadLibaryOnly() shouldn't set _this->gl_config.driver_loaded = 1 This is handled in in the higher-level SDL_GL_LoadLibrary(). All uses of SDL_EGL_LoadLibrary (which calls the Only version) are just target-specific wrappers for their own GL_LoadLibrary hook, with two exceptions which now handle driver_loaded correctly (although it's questionable if these init-if-no-one-did-it-correctly-already code blocks should exist at all, fwiw). Fixes Bugzilla #5190.
Ryan C. Gordon af71510c 2020-07-16T04:43:08 assert: Implement SDL_TriggerBreakpoint for Apple ARM hardware.
Ryan C. Gordon 45f5eb06 2020-07-16T04:37:14 configure: On Apple platforms, only exclude Vulkan on x86. This catches both x86-64 and ARM devices.
Sam Lantinga 968b830d 2020-07-15T16:12:44 Fixed bug 5232 - SDL2 configure script detects Apple Silicon Macs as iPhones; fails to build due to missing components jackmacwindowslinux I'm testing my application that uses SDL2 on the new Apple Silicon Macs. I set up the SDL 2.0.12 source code from the website and tried to build it. The first issue I ran into was that it was always building OpenGL ES, even if --disable-video-opengles was passed to configure. OpenGL ES headers do not seem to be present on the Apple Silicon macOS SDK, except for the iOS SDK headers. Then I had problems with the joystick driver, where some classes used on iOS were not available on macOS. After looking through the configure.ac script a bit, I found that iOS targets are selected when the build host matches "arm*-apple-darwin*". Clang on macOS 11.0 on arm64 reports the host as "arm64-apple-darwin20.0.0", which matches the iOS target. This means that ARM Mac compilation will always be detected as iOS. Unfortunately, there doesn't seem to be an easy way to detect Mac vs. iOS targets, since they now both use the same triplet & compiler for building. I'm not sure what the best way to fix this is, but maybe there could be an additional target flag to specify whether to build for macOS or iOS? This might break compatibility, though: with this approach, either all old scripts that used configure to build for iOS fail, or all new builds on macOS without a flag fail (silently?).
Sam Lantinga cab1a715 2020-07-15T10:15:52 Fixed bug 5233 - PS3 Gamepad Motion Control not correctly ignored on Linux Igor Morgado PS3 Controller motion sensor string is being reported as `Gasia Co.,Ltd PS(R) Gamepad Motion Sensors` But `src/joystick/SDL_gamecontroller.c` line1690 only ignores if matches the string `Controller Motion Sensors`. ``` #if defined(__LINUX__) if (name && SDL_strstr(name, "Controller Motion Sensors")) { /* Don't treat the PS3 and PS4 motion controls as a separate game controller */ return SDL_TRUE; } #endif ``` Therefore, SDL is mapping 2 Game controllers instead one. Maybe reduce the substring to match `Motion Sensors` instead. A simple log from my application is shown below: INFO: Game controller device 0 - PS3 Controller:PS3 Controller found. INFO: Controller 0: Player 0: 054c:0268:8111 - PS3 Controller - PS3 Controller - Gasia Co.,Ltd PS(R) Gamepad INFO: Game controller device 1 - PS3 Controller:PS3 Controller found. INFO: Controller 1: Player 1: 054c:0268:8111 - PS3 Controller - PS3 Controller - Gasia Co.,Ltd PS(R) Gamepad Motion Sensors
M Stoeckl 8669a87f 2020-07-14T21:13:27 Reuse X11 connection from availability check Instead of creating an X11 connection to test that X11 is available, closing the connection, and then reconnecting for real, use the same connection to handle both cases. The X11 connection retry delay mechanism in the case where X11 is dynamically loaded has been removed. It was only necessary to avoid authetnication token reuse from the XOpenDisplay call that used to exist in X11_Available. Now that this call is only made once, it is no longer needed. Also drop unused and inapplicable code from a comment. ***
M Stoeckl a78b9763 2020-07-14T19:18:16 Reuse Wayland connection from availability check
M Stoeckl 052a1373 2020-07-12T19:11:15 Merge VideoBootStrap::available into VideoBootStrap::create The two are only ever called together, and combining them makes it possible to eliminate redundant symbol loading and redundant attempts to connect to a display server.
Ozkan Sezer 49ec6558 2020-07-11T08:10:02 fix bug #5228 -- Add AltiVec detection for FreeBSD. thanks Piotr Kubaj.
stfx b1626295 2020-07-08T17:28:34 cmake: Fix building with -DSDL_HAPTIC=Off
Ozkan Sezer fe97f01b 2020-07-05T22:33:10 configure: corretly print --enable-arm-simd default value.
Ryan C. Gordon 6aec6da4 2020-06-28T17:45:07 stdinc: Let Clang static analysis see more C runtime functions. For systems without strlcpy and strlcat, just declare them as if they exist; the analyzer possibly still knows the details of these functions and can utilize that in its analysis. Most of this patch was from meyraud705 at gmail and Martin Gerhardy. Thanks! Fixes Bugzilla #5163.
Ryan C. Gordon 0e98040d 2020-06-28T16:23:05 joystick: Linux joysticks now recover better from dropped events. Fixes Bugzilla #4830.
Sylvain Beucler e594a673 2020-06-27T16:25:47 emscripten: Introduce SDL_HINT_EMSCRIPTEN_ASYNCIFY See https://github.com/emscripten-core/emscripten/issues/10746 and https://github.com/emscripten-ports/SDL2/pull/112 Fixes Bugzilla #4997.
Sylvain Beucler 01af7b02 2020-06-27T16:22:50 emscripten: support pseudo-synchronous screen refresh and events update using asyncify
Ryan C. Gordon 3b71ebec 2020-06-27T02:38:13 configure: Accidentally deleted a ')' Sorry!
Ryan C. Gordon e294639a 2020-06-27T02:00:58 cmake: Fix Metal detection on macOS/iOS. Apparently the "-x objective-c" made it down to the linker, who then treats the .o file as Objective-C source code. Apparently the -ObjC argument does the same thing but gets ignored by the linker. Fixes Bugzilla #4988.
Ryan C. Gordon 363fd52b 2020-06-26T23:30:59 configure/cmake: Disable ARM SIMD and NEON by default. It's buggy at the moment.
Ryan C. Gordon 694fea8a 2020-06-26T21:37:29 video: Make SDL_CreateWindow use SDL_Init(SDL_INIT_VIDEO), not SDL_VideoInit. Otherwise, the video subsystem won't deinitialize during SDL_Quit(). Fixes Bugzilla #5067.
Ryan C. Gordon 50fd0dd1 2020-06-26T21:35:54 test: testspriteminimal wasn't calling SDL_Quit() on exit.
Ryan C. Gordon 1947ca70 2020-06-26T20:16:43 video: Changed SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS to default to FALSE. Fixes Bugzilla #5106. (and probably many others, too!)
Ryan C. Gordon 21482c15 2020-06-26T20:11:32 cmake: Bump minimum required CMake to 3.0.0 and mark link libraries PRIVATE. Fixes Bugzilla #2992.
Ryan C. Gordon d955d63b 2020-06-26T17:42:30 cmake: Build Linux-specific files like the configure script does. Otherwise we unconditionally compile things we shouldn't. Fixes Bugzilla #5175.
stfx 718e1fb8 2020-06-26T22:45:15 cmake: Fix building with -DSDL_SENSOR=Off
Ryan C. Gordon dd753ce7 2020-06-26T15:04:57 cmake: Fix building with -DSDL_POWER=Off Fixes Bugzilla #5193.
Sam Lantinga ce293eed 2020-06-23T10:12:24 Fixed bug 5208 - Fix libGL loading on OpenBSD
Sam Lantinga c2b85305 2020-06-23T10:09:29 Fixed bug 5209 - cpuinfo recognize OpenBSD ARM Brad Smith OpenBSD/arm only supports ARMv7 and and not any CPUs that do not support NEON.
Ozkan Sezer 4ba0a847 2020-06-22T23:24:02 core/linux/SDL_threadprio.c: fix build against older glibc versions
Sam Lantinga b9f55b6d 2020-06-19T10:37:14 Fixed bug 5199 - Fix KMSDRM_CreateWindow() segfault when starting L?VE2D engine. Manuel Alfayate Corchete This small patch fixes the KMSDRM_CreateSurfaces() call in KMSDRM_CreateWindow(), that was segfaulting deeper into SDL internals because the windata->viddata pointer wasn't set before the KMSDRM_CreateSurfaces() call. So that's what this small patch does. Now, L?VE2D works perfectly well on the Raspberry Pi 3, instead of just segfaulting.
Sam Lantinga 56622f9c 2020-06-17T10:09:07 Fixed bug 5126 - MinGW compile error SDL_windowssensor.c Martin Gerhardy SDL_windowssensor.c includes InitGuid.h - but it should be initguid.h
Sam Lantinga 48989e2a 2020-06-17T08:47:27 Reverted comment change in previous commit
Sam Lantinga a7ff6e96 2020-06-17T08:44:45 Fixed overflow in surface pitch calculation
James Legg f1d5ced1 2020-06-17T12:48:40 x11: Fix spurious keyboard focus events
stfx efe09359 2020-06-15T10:31:16 Fix compile without DIRECTX
Ozkan Sezer 9db16a65 2020-06-14T12:21:02 fix permissions of some project files
Ozkan Sezer 16389654 2020-06-14T12:05:56 fix watcom build of SDL_test_common.c
Sam Lantinga 7c0986fb 2020-06-12T10:30:46 Fixed bug 4938 - Suggestion: rename SDL_PIXELFORMAT_BGR888 to SDL_PIXELFORMAT_XBGR8888 Ellie I just tripped over this: stb_image when requesting 3 channels with 8-bit actually returns them as 3 bytes per pixel with no alignment, so basically 4 pixels are 12 bytes with no padding (0...2, 3...5, 6...8, and 9...11). This I would have naively expected to be called RGB888 or BGR888, since there is no "dead" unused byte as I would expect for something called e.g. RGBX8888. However, SDL2's SDL_PIXELFORMAT_BGR888 uses 4 bytes, same as SDL_PIXELFORMAT_BGRX8888, even though the latter appears to be a longer storage format - which it isn't, internally. It's just swapped, in byte order X, B, G, R (instead of BGRX). So why isn't the macro name also swapped, as "XBGR888" instead of just "BGR888"? I find the formats therefore named inconsistently, and unless there is a reason for this I suggest these changes: 1. deprecate SDL_PIXELFORMAT_BGR888 in favor of a new SDL_PIXELFORMAT_XBGR8888 and 2. deprecate SDL_PIXELFORMAT_RGB888 in favor of a new SDL_PIXELFORMAT_XRGB8888
Ethan Lee 2aa8974f 2020-06-11T12:03:33 Add SDL_SIMDRealloc
Sam Lantinga 20aada0e 2020-06-10T09:38:43 Fixed bug 5170 - Build fails when using Visual Studio 2017 with Windows 10 SDK 10.0.19041.0 in uwp JackBoosY In src/video/winrt/SDL_winrtgamebar.cpp line 55: virtual HRESULT STDMETHODCALLTYPE add_VisibilityChanged( __FIEventHandler_1_IInspectable *handler, Windows::Foundation::EventRegistrationToken *token) = 0; The macro __FIEventHandler_1_IInspectable defined in windows.fondation.h(Windows10 SDK 10.0.17763.0) line 3576: #define __FIVector_1_Windows__CFoundation__CPoint ABI::Windows::Foundation::Collections::__FIVector_1_Windows__CFoundation__CPoint_t but no longer exists in Windows 10 SDK 10.0.19041.0. After searching this macro in the sdk include path, I found that it was defined in many header files. But it should be replaced in windows.system.h .
Sam Lantinga 4d15b5b8 2020-06-10T09:36:10 Fixed building with Visual Studio 2019
Sam Lantinga 44f50c64 2020-06-09T21:47:41 Fixed bug 5171 - PollEvent impacts performance in 2.0.12 On some systems, GetClipCursor() impacts performance when called frequently, so only call it every once in a while to make sure we haven't lost our capture.
Sam Lantinga 511a9702 2020-06-09T21:43:00 Fixed whitespace
Sam Lantinga aefe19ff 2020-06-09T11:31:39 Added support for the NACON Revolution Pro Controller 3 and the GameStop PS4 Fun Controller
Sam Lantinga 6f241bd5 2020-06-09T10:47:29 Fixed build
Sam Lantinga 086be21e 2020-06-09T10:47:27 ControllerList: add support for NACON asymetric controller and Revolution 3, Hori mini wireless ps4 controller, and 2 PDP switch controllers
Sam Lantinga 3b76109f 2020-06-09T10:47:25 ControllerList: remove giotek controller from list - vid/pid appears to be reused in bunch of devies including ones with different fw/protocol and treating as ps4 controller breaks them.
Sam Lantinga a9cfac38 2020-06-09T10:47:23 Controller: Deadzone improvements
Sam Lantinga 9fa8d6d0 2020-06-08T17:07:55 Define constants not available on older kernels
Sam Lantinga 3ac24bfc 2020-06-08T17:01:50 Fixed mouse drag with an external mouse on iOS
Sam Lantinga d0947c14 2020-06-04T12:30:25 Fixed exception if getManifestEnvironmentVariables() is called without a current SDL activity
Sam Lantinga ff53521b 2020-06-04T12:26:57 Fixed Bluetooth audio output on Apple TV
Sam Lantinga cced5eb9 2020-06-04T09:23:18 Fixed bug 5169 - Can not build current sources because of recent thread management changes Manuel Alfayate Corchete I'm trying to build SDL2 with threads support here in GNU/Linux, both X86 and ARM, and it does not seem to be possible ATM: /home/manuel/src/SDLLLL/src/core/linux/SDL_threadprio.c:233:26: error: 'rtkit_max_realtime_priority' undeclared (first use in this function)
Sam Lantinga 958c4282 2020-06-04T09:13:49 Fixed build warning
Sam Lantinga 49501a98 2020-06-04T09:10:49 Updated configure with changes from configure.ac
Sam Lantinga 22ce194b 2020-06-03T14:58:38 Make sure SDL_locale.h is included in the Xcode Framework for macOS
Sam Lantinga b9d5aebb 2020-06-03T14:56:35 Make sure SDL_locale.h is included in the Xcode Framework for tvOS
Sam Lantinga 550b209e 2020-06-03T14:26:37 Make sure SDL_locale.h is included in the Xcode Framework
Ryan C. Gordon 60435712 2020-06-03T16:42:19 video: Set window->surface NULL after freeing it. Otherwise, when SDL_CreateWindowFramebuffer() is called again, it will return the free'd surface instead of creating a new one.
Sam Lantinga eea0b0e0 2020-06-02T17:08:31 Fixed bug 5168 - Memory leak in RAWINPUT_JoystickOpen meyraud705 Variable 'hwdata' is not freed in RAWINPUT_JoystickOpen if device->driver->OpenJoystick() fails.
Sam Lantinga ac1f174a 2020-06-02T17:02:37 Fixed bug 5167 - Memory leak in GuessXInputDevice meyraud705 Variable 'devices' is not freed if function GuessXInputDevice, in SDL_xinputjoystick.c, return early.
Sam Lantinga 06267f50 2020-06-02T16:59:54 Fixed whitespace in SDL_vulkan.h
Sam Lantinga d48c97c4 2020-06-02T16:57:20 Fixed bug 5147 - KMSDRM: SetWindowFullscreen() failing with SDL_WINDOW_FULLSCREEN_DESKTOP Manuel Alfayate Corchete This patch is needed so programs that do this work as expected: 1) Start in a different video mode than the mode used by the system and then... 2) Try to go fullscreen with the mode originally used by the system via SetWindowFullScreen() with the SDL_WINDOW_FULLSCREEN_DESKTOP flag. An example would be pt2-clone in https://github.com/8bitbubsy/pt2-clone. This program does this: Starts with: video.window = SDL_CreateWindow("", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, screenW, screenH, windowFlags); and then, *IF* the user has configured it in fullscreen mode in its .ini, it tries to go fullscreen with the desktop mode: SDL_SetWindowFullscreen(video.window, SDL_WINDOW_FULLSCREEN_DESKTOP); This sequence of operations is currently failing because SDL_SetDisplayModeForDisplay() in SDL_video.c fails because display->desktop_mode is not being initialized with its correct value: SetDisplayMode() in SDL_kmsdrmvideo.c will not be able to set the mode because it detects the mode to have a driverdata of 0x0 ("if (!modedata)") and rightfully returns an error. So, the included patch fixes this small problem, and programs that first change the video mode and then try to go fullscreen with the system video mode will now work. The patch simply fixes an small omission, but its really needed now that dynamic video mode changing was implemented on the KMSDRM backend.
Sam Lantinga 9325b22e 2020-05-29T21:26:32 Fixed bug 5113 - SDL_UpdateWindowSurfaceRects BitBlt the entire surface on Win32 Ryan C. Gordon As discussed here: https://discourse.libsdl.org/t/question-about-implementation-of-sdl-updatewindowsurfacerects/27561 "As you can see this function [WIN_UpdateWindowFramebuffer, in src/video/windows/SDL_windowsframebuffer.c] calls BitBlt on entire screen, even though it accepts the rects. Rects variable is not even used in this function at all. Now my question is why is that the case?"
Sam Lantinga d000c1cd 2020-05-29T21:22:11 Fixed bug 5155 - HIDAPI_JoystickDisconnected incorrect array shift Anthony Pesch I was looking into my own input bug and noticed an issue in the HIDAPI code while looking over it. I don't have a controller that goes down this path to test and try to provoke the issue, but it looks pretty straight forward. The memmove to shift the joystick id array on disconnect isn't scaling the size by sizeof(SDL_JoystickID), likely corrupting the ids on disconnect.
Sam Lantinga a8400dc3 2020-05-29T16:31:05 Fixed bug 5105 - sndio support not working in dynamic mode (dlopen) Giovanni Bajo The CMake build system supports several audio frameworks for Linux: one of them is sndio. All frameworks can be built with "runtime linking" (that is, using dlopen to load the library at runtime). In sdlchecks.cmake, there's code to do the same with sndio: ================================================================= # Requires: # - n/a # Optional: # - SNDIO_SHARED opt # - HAVE_DLOPEN opt macro(CheckSNDIO) if(SNDIO) # TODO: set include paths properly, so the sndio headers are found check_include_file(sndio.h HAVE_SNDIO_H) find_library(D_SNDIO_LIB sndio) if(HAVE_SNDIO_H AND D_SNDIO_LIB) set(HAVE_SNDIO TRUE) file(GLOB SNDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/sndio/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${SNDIO_SOURCES}) set(SDL_AUDIO_DRIVER_SNDIO 1) if(SNDIO_SHARED) if(NOT HAVE_DLOPEN) message_warn("You must have SDL_LoadObject() support for dynamic sndio loading") else() FindLibraryAndSONAME("sndio") set(SDL_AUDIO_DRIVER_SNDIO_DYNAMIC "\"${SNDIO_LIB_SONAME}\"") set(HAVE_SNDIO_SHARED TRUE) endif() else() list(APPEND EXTRA_LIBS ${D_SNDIO_LIB}) endif() set(HAVE_SDL_AUDIO TRUE) endif() endif() endmacro() ================================================================= The feature is gated by an option called SNDIO_SHARED. It is also fully implemented in SDL_sndioaudio.c Unfortunately, it seems there is a missing line in CMakeLists.txt, so SNDIO_SHARED is not defined: ====================================================================== set_option(ALSA "Support the ALSA audio API" ${UNIX_SYS}) dep_option(ALSA_SHARED "Dynamically load ALSA audio support" ON "ALSA" OFF) set_option(JACK "Support the JACK audio API" ${UNIX_SYS}) dep_option(JACK_SHARED "Dynamically load JACK audio support" ON "JACK" OFF) set_option(ESD "Support the Enlightened Sound Daemon" ${UNIX_SYS}) dep_option(ESD_SHARED "Dynamically load ESD audio support" ON "ESD" OFF) set_option(PULSEAUDIO "Use PulseAudio" ${UNIX_SYS}) dep_option(PULSEAUDIO_SHARED "Dynamically load PulseAudio support" ON "PULSEAUDIO" OFF) set_option(ARTS "Support the Analog Real Time Synthesizer" ${UNIX_SYS}) dep_option(ARTS_SHARED "Dynamically load aRts audio support" ON "ARTS" OFF) set_option(NAS "Support the NAS audio API" ${UNIX_SYS}) set_option(NAS_SHARED "Dynamically load NAS audio API" ${UNIX_SYS}) set_option(SNDIO "Support the sndio audio API" ${UNIX_SYS}) set_option(FUSIONSOUND "Use FusionSound audio driver" OFF) dep_option(FUSIONSOUND_SHARED "Dynamically load fusionsound audio support" ON "FUSIONSOUND" OFF) ====================================================================== You can see that all frameworks define a "dep_option" NAME_SHARED, and SNDIO is the only one where the option is missing. This means that runtime loading of sndio is never activated. If sndio is found at configuration time, it is always activated in "linked" mode, so that the final binary will have a load-time dependency with libsdnio. This is unfortunate. To fix the problem, it is sufficient to add this line: dep_option(SNDIO_SHARED "Dynamically load the sndio audio API" ${UNIX_SYS} ON "SNDIO" OFF) I've verified that this fixes the bug, and sndio can now be dynamically loaded as expected.
Sam Lantinga 2303d921 2020-05-29T16:28:56 Fixed bug 5145 - Fix whitespace in SDL_vulkan.h Colin Caine Everywhere else seems to use spaces. See patch diffed from a fresh hg checkout yesterday.
Sam Lantinga bdfd1b68 2020-05-29T16:02:49 Fixed bug 5146 - SDL_RenderFillRect doesn't work in DirectFB Lacky It looks like refactoring of SDL2 internal API has broken SDL_RenderFillRect for DirectFB. In new version function SDL_RenderFillRect returns 0, but rectangle is not visible. Replacing "count" with "len" in the argument list for SDL_memcpy in DirectFB_QueueFillRects fixes problem.
Sam Lantinga 68e1731e 2020-05-29T15:40:17 Don't bother logging security exception getting the device serial number This can happen anytime we haven't opened the device yet