Log

Author Commit Date CI Message
Cameron Gutman 092a20d9 2021-08-08T16:47:34 wayland: Avoid busy waiting for vsync
Cameron Gutman 791d9d3f 2021-08-07T12:41:15 Fixed DInput mapping for NVIDIA Virtual Gamepad
Ethan Lee 7be970db 2021-08-06T19:51:27 wayland: Avoid setting floating width/height when re-entering fullscreen
Sam Lantinga bec78357 2021-08-06T14:20:55 Better fix for compiling using clang on Windows This fixes https://github.com/libsdl-org/SDL/issues/4533
Sam Lantinga a91ab883 2021-08-06T12:28:03 Fixed building on Windows with cmake, ninja, and clang
Ryan C. Gordon dd683073 2021-08-06T15:13:14 hidapi: Patched to compile on QNX. Fixes #4591.
Sam Lantinga cae7bd9b 2021-08-06T12:01:24 Don't use AVX with clang if the compiler isn't building with AVX instructions Fixes https://github.com/libsdl-org/SDL/issues/4533
Sam Lantinga cdac61ff 2021-08-06T12:00:53 Fixed typo
Sam Lantinga eec41d25 2021-08-06T11:30:22 Add info on how to avoid the "Prevented in-tree build" message with CMake
Ryan C. Gordon ac20167e 2021-08-06T14:08:50 configure: Fixes to make SDL link as C++ on Haiku. Fixes #4590.
Ethan Lee 10979d37 2021-08-05T12:42:03 wayland: Always assume configure is wrong for non-resizable windows. Configure events from compositors have an extremely annoying habit of giving us completely bogus sizes, from all sorts of places. Thankfully, the protocol gives us the ability to completely ignore the width/height and just stick with what we know, so for all windows that are not meant to be resized, pretend we never even got the width/height at all, the compositor is required to respect our dimensions whether they match configure's suggestion or not.
Cameron Cawley 520bc713 2021-08-05T14:33:54 Fix typo in CMake target name
Ryan C. Gordon b83a019d 2021-08-04T19:22:10 cmake: Force linker to treat input as a C++ program on Haiku. Reference issue #4590.
Sam Lantinga 88674b4a 2021-08-04T13:17:35 Fixed build
Sam Lantinga 31726150 2021-08-04T13:13:22 Let Android know that we can handle USB devices This is important on Android 29 and above if you don't want to be prompted for each device that you open
Sam Lantinga c14813a8 2021-08-04T13:00:14 Fixed spacing
Sam Lantinga 3cad447e 2021-08-04T12:57:51 Only update the window size if setting the display mode succeeded
Daniel Gibson 0eb6f791 2021-05-21T13:48:14 SDL_SetWindowDisplayMode(): If already fullscreen, adjust window size Otherwise only the display resolution is changed, but the SDL window size (and for example the window-surface size) aren't adjusted accordingly and thus don't fill the whole screen. See #3313
Daniel Gibson 72d81285 2021-05-19T18:47:56 Improve SDL_CreateWindow() fullscreen support on Windows .. and maybe other platforms as well (though X11 was not affected)? The issue was that passing a higher resolution than the current desktop resolution to SDL_CreateWindow() with SDL_WINDOW_FULLSCREEN didn't switch to that resolution (even though it did switch to lower resolutions). When creating a fullscreen window, window->fullscreen wasn't even set at all (only zeroed out), setting it only happened if the user explicitly called SDL_SetWindowDisplayMode(). So without that, SDL_CreateWindow() -> SDL_UpdateFullscreenMode() -> SDL_GetWindowDisplayMode() used the resolution from window->windowed.w/h which were limited to the desktop size due to some weird combination of WIN_AdjustWindowRectWithStyle() and WIN_WindowProc() being called after a call to SetWindowPos(). fixes #3313
Sam Lantinga 9fdb0645 2021-08-04T11:33:28 Added support for the Joy-Con Charging Grip when SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS is enabled
Ryan C. Gordon d4839702 2021-08-04T13:30:12 dbus: Wrap init in a spinlock. This prevents a race if two threads that need d-bus try to init it at the same time. Note that SDL_Init will likely handle this from a single thread at startup, but there are places outside of init where one might trigger D-Bus init, like setting thread priority (a common first thing for a new thread to do) resulting in SDL trying to use RTKit. Fixes #4587.
Cameron Gutman b08b1bde 2021-08-03T22:50:58 linux: remove d-bus lazy init dead code Lazy init in X11/Wayland is dead code since dbdbae4
Cameron Gutman f5bc58bf 2021-08-03T18:30:08 Add note about keyboard grab to WhatsNew.txt for 2.0.16
Ryan C. Gordon 5fc13fcb 2021-08-04T07:00:17 direct3d: Commit viewport state before clearing, attempt 2. This reintroduces the fix from 0e16ee8330606603, but just marks the viewport state as dirty after a clear that needs to expand the viewport to fill the render target, as we'll need to also reset the orthographic projection state elsewhere, and that won't happen if we clear the dirty flag here. Fixes #4210. (again.) (...sorry...!)
Ryan C. Gordon ed6ce5cc 2021-08-04T02:34:09 log: Fixed compiler warnings on 64-bit Visual Studio.
Ryan C. Gordon 7e88e772 2021-08-04T02:30:47 winrt: Fixed incorrect code in a Windows Phone #ifdef.
Ryan C. Gordon 8104c9e3 2021-08-04T00:02:39 doxygen: manually move SDL_CloseAudioDevice docs from wiki. Apparently we don't fill these in from the wiki if the function doesn't have _any_ documentation already. That's a bug, I think.
Ryan C. Gordon 57bfed79 2021-08-03T22:15:04 README-dynapi.md: Google+ link is gone, remove it. The Wayback Machine doesn't even have it. :(
Ryan C. Gordon 178c95f8 2021-08-03T21:52:47 README-winrt.md: Cleaned up sample code - Fixed the markdown. - Code can now be exited by pressing ESC. - Cleans up and returns from main() - Mushed all the `if (x) { return 0; }` blocks into else ifs.
Ethan Lee 32f909f7 2021-08-03T13:30:57 wayland: Remove redundant waylanddyn.h includes. All files including waylanddyn.h already include waylandvideo.h first.
Ethan Lee 124405a0 2021-08-03T13:17:19 wayland: Fix building without Vulkan support
Ozkan Sezer 02563f75 2021-08-03T20:12:56 regenerate configure
orbea d2e8998f 2021-08-03T07:59:01 build: Fix the LINKER variable. The LINKER variable is set in configure.ac as either 'CC' or 'CXX' where it is then passed to the created Makefile. This fails with slibtool which can't find the 'CC' file and can be fixed by correctly setting the LINKER variable to an actual Makefile variable like '$(CC)' or '$(CXX)' instead. Presumably GNU libtool does some magic here to hide the issue.
David Gow 4077f7a2 2021-08-03T20:55:45 Update the Renderer dpi_scale on SIZE_CHANGED event (fix #4580) The Renderer logical scaling code scales mouse coordinates, and needs to take the window DPI into account on HIGHDPI windows. However, the variable which tracks this, renderer->dpi_scale, is set once when the renderer is created, and then not updated. In the event that the window is moved to another screen, or the screen DPI otherwise changes, this will be outdates, and potentially the coordinates will be all wrong. So let's update the dpi_scale on the SIZE_CHANGED event: it's at least a possibility that this will be issued on some OSes when DPI changes, and it's otherwise already handled by SDL_Renderer's event filter.
Sam Lantinga 9b4884d5 2021-08-03T09:23:54 Warn if you're building a partially functional RAWINPUT driver without device notifications
Sam Lantinga 886eb02e 2021-08-03T03:16:35 Fixed detection of Steam Virtual Gamepad with the WGI driver
Sam Lantinga 7c63e1d3 2021-08-03T01:52:02 Added WGI mappings for the Amazon Luna and Google Stadia controllers
Sam Lantinga 99c8972b 2021-08-03T01:39:07 Added WGI mappings for PS4 and PS5 controllers
Sam Lantinga 2dfc92ca 2021-08-03T01:33:35 Added default mapping for WGI game controllers
Sam Lantinga 3d747078 2021-08-03T01:25:54 Run the renderer so Steam can find the main window
Ozkan Sezer 1907463a 2021-08-03T18:04:50 regenerate configure
David Gow b74bcd5d 2021-08-03T22:25:10 configure.ac: mkdir $(objects)/ when building wayland protocols The $(objects) directory (usually build/) may not have been created by the time the wayland-scanner protocol files are being compiled. The $(gen) directory is explicitly made with mkinstalldir, but the final object file (and gcc dependency files) need to go into $(objects). For whatever reason, this only ever seemed to occur if --disable-shared was set. Note that this commit doesn't regenerate ./configure, as there were a few unexplained, unrelated differences my version of autoconf created, as as an autotools novice, I didn't want to poke that bear just yet. This hopefully should fix #3689
Ozkan Sezer 5b18ae29 2021-08-03T14:01:02 improvements to libdecor support in cmake this makes it consistent with wayland support, and makes cmake side in line with autotools' libdecor support.
Ryan C. Gordon 350ca0f9 2021-08-03T04:57:53 winrt: Don't register orientation hint callback in startup code. SDL_AddHintCallback() uses SDL_malloc(), which means this would run before main(), so the app wouldn't be able to supply its own replacement SDL_malloc() implementation in time. This code was moved to under SDL_Init. Since the hint callback already makes efforts to not override the app manifest's orientation settings, this is safe to move until after pre-main() startup. Fixes #4449.
Ryan C. Gordon 834a84fa 2021-08-03T05:02:32 winrt: Don't use LoadLibraryA on WinRT. This removes the CM_Register_Notification code on WinRT. Note that this API _is_ available to UWP apps as of Windows 10.0.17763 (version 1809, released October 2018), according to: https://docs.microsoft.com/en-us/uwp/win32-and-com/win32-apis#apis-from-api-ms-win-devices-config-l1-1-1dll So it might be worth readding with some sort of preprocessor check for minimum targeted version, or whatever is appropriate for WinRT development.
Ozkan Sezer a15ec365 2021-08-03T11:33:50 attempt to fix cmake builds with libdecor
Sam Lantinga 8726f500 2021-08-03T01:10:48 Allow quitting controllermap if there are no controllers attached
Sam Lantinga 9d64e6b4 2021-08-03T00:29:33 Revert "direct3d: Commit dirty viewport state before clearing." This reverts commit 0e16ee833060660318cc324cf99c9736f4d48499.
Sam Lantinga 993a5676 2021-08-03T00:14:15 Only use the default Xbox mapping on Linux On Windows, this is already covered by XInput and is the wrong mapping if we try to use it with DirectInput/RAWINPUT/WGI controllers
Ryan C. Gordon 74aa4b63 2021-08-03T03:10:14 cmake: don't fail if Wayland is enabled but libdecor isn't found. Instead, just disable libdecor support. This matches what the configure script does.
Ryan C. Gordon c3084539 2021-08-03T02:49:08 cmake: Use CMAKE_INSTALL_FULL_* for libdir,bindir,etc. This makes sure sdl2.pc gets the full paths, matching what the configure script will generate. Fixes #4569.
Ryan C. Gordon 0e16ee83 2021-08-03T02:07:47 direct3d: Commit dirty viewport state before clearing. Otherwise you might have set the viewport to the full size of the render target in SDL's API but this change hasn't been transmitted to Direct3D yet by the time we attempt to clear. Fixes #4210.
Sam Lantinga 7edc7d53 2021-08-02T22:44:38 Added a mapping for the Steam Virtual Gamepad when it's detected in DirectInput mode
Ethan Lee 7082fb04 2021-08-02T22:42:28 wayland: Only dispatch on fullscreen set when the window is visible. Fixes hang-on-startup described in #4572.
Ethan Lee 0f5b8a99 2021-08-02T19:48:31 wayland: For libdecor, dispatch immediately after setting fullscreen Reference: #4578
Sam Lantinga 02223501 2021-08-02T16:40:58 Fixed crash if WGI didn't give us the name for a controller
Ethan Lee 4562da62 2021-08-02T16:40:56 wayland: Make libdecor configure match xdg_toplevel
Ethan Lee 1fb1aa19 2021-08-02T12:57:28 wayland: Keep the fullscreen check for maximize/restore events
Ethan Lee 584673a5 2021-08-02T12:51:23 wayland: Don't ignore configs for non-fullscreen, non-resizable windows. This was causing configure events to not inform SDL of window size changes, even when they were based on resizes that we fully expected. The result was fullscreen->windowed not working at all, because it would retain the desktop resolution instead of reverting to the floating size that it had before moving to fullscreen mode. Fixes Super Hexagon fullscreen toggling.
Sebastian Krzyszkowiak 25067298 2021-08-02T08:15:10 wayland: Flush in SetWindowFullscreen The flush has been removed in e5f9fae034df8ca305241c5a666e7702fcf9958f. Unfortunately, even though ideally the flush shouldn't be necessary, our resize sequence isn't... well, perfect, and removing that flush causes tons of troubles. We're also still flushing in other paths where the window size can be changed by the compositor and where we may potentially have to obey that change, like in Wayland_MaximizeWindow. This also removes the hack introduced in 7f261d3b7667978ced93a4fdc6aec2380df3d87f, which introduces problems with protocol violations and seems to not be necessary when flushing.
Sebastian Krzyszkowiak ea28187c 2021-08-02T08:07:23 wayland: Hack surface resize into compliance with set_window_geometry We have issues with correct resize sequence and happen to commit old-sized buffers even after configure event for the new size has been already acknowledged. While the reason for that stays unknown, let's at least workaround the problem by faking window geometry into expected size. This does not fix visual glitch on e.g. fullscreen toggling, but having a split-second glitch is still a much better outcome than being terminated by the compositor for protocol violation.
Sebastian Krzyszkowiak b5210cac 2021-08-02T13:47:32 wayland: Initialize floating size at window creation This allows the windowed size to be restored for windows initially created already in non-floating state.
Ethan Lee dab33844 2021-08-02T11:58:47 wayland: Fix a warning in handle_configure_xdg_toplevel
Ethan Lee 754aa2d3 2021-08-02T11:55:02 Mostly revert cfcdfb7be9f5c97a51ddef9ad3677a604856266b. This was causing window changes to completely break, resulting in broken decorations and bizarre frame timing, I don't know what exactly it's doing but it's not good. Kept the libdecor_frame_is_floating logic, at least.
Ethan Lee 8803589f 2021-08-02T12:05:06 wayland: Avoid redundant SetWindowBordered for libdecor
Sebastian Krzyszkowiak b4c4060a 2021-08-02T04:52:25 wayland: Clean up Wayland_HandlePendingResize Commit 871c11191bfc7214061a3da37c112522a102ddf5 removed delayed resize handling, but it left the whole structure untouched that now became unnecessary. To help with code clarity, get rid of the structure where pending resize state used to be stored and pass all the data directly to Wayland_HandlePendingResize (now renamed to Wayland_HandleResize, since it's not "pending" anymore but applied immediately)
Sebastian Krzyszkowiak 9bb24ad0 2021-08-02T05:49:35 wayland: Always call Wayland_SetWindowBordered when showing the window Otherwise our windows have no window decoration on compositors that support xdg-decoration-unstable-v1, but default to client-side mode. Contrary to what the comment was stating, there is nothing in the protocol that would make redundant calls to zxdg_toplevel_decoration_v1::set_mode problematic.
Christian Rauch cfcdfb7b 2021-08-01T18:14:53 libdecor: use same fullscreen/maximised restore logic as for xdg-toplevel
Christian Rauch 42452f8c 2021-08-01T13:51:30 wayland: store and restore floating states Some Wayland compositors send (0,0) as "suggested" configure event sizes to indicate that the client has to decide on its own which sizes to used. This is commonly done when restoring from maximised, fullscreen or tiles states to fullscreen. We now store the last known floating states in a new set of variables and restore them when we receive such a (0,0) configure event.
Sebastian Krzyszkowiak d4e1b497 2021-08-01T09:15:26 unix: OpenURL: Move unsetenv above vfork From the vfork manpage: > The vfork() function has the same effect as fork(2), except that > the behavior is undefined if the process created by vfork() either > modifies any data other than a variable of type pid_t used to store > the return value from vfork(), or returns from the function in which > vfork() was called, or calls any other function before successfully > calling _exit(2) or one of the exec(3) family of functions. unsetenv is still called inside a child process, so it does not influence the rest of the application.
Sam Lantinga 9b7b9287 2021-07-31T23:28:41 Clear LD_PRELOAD so Chrome opens correctly when this application is launched by Steam This fixes https://github.com/libsdl-org/SDL/issues/4565
Sebastian Krzyszkowiak 54aea244 2021-08-01T05:36:12 wayland: Disable key repeat when repeat rate equals 0 This fixes a crash on pressing keyboard button when compositor sends zero as repeat rate, indicating that key repeat should be disabled. From Wayland protocol spec: > Negative values for either rate or delay are illegal. A rate of zero > will disable any repeating (regardless of the value of delay).
Sam Lantinga d784dd20 2021-07-31T17:53:07 Updated WhatsNew with major changes for 2.0.16
Sam Lantinga b033cd0d 2021-07-31T16:01:48 Fixed XSync sequence to match other cases where we set the X11 error handler
Ozkan Sezer d373af04 2021-08-01T01:39:20 CMakeLists.txt: update DYLIB_CURRENT_VERSION too 2.0.16 for release
Ryan C. Gordon 4c7825f6 2021-07-31T18:27:14 x11: XSync while trying to catch XRRSetScreenSize error. Reference issue #4561
Sam Lantinga cb1fd30e 2021-07-31T13:28:54 Updated to version 2.0.16 for release
Sam Lantinga 3e76646c 2021-07-31T13:09:53 Added libSDLmain.a for iOS and tvOS
Ryan C. Gordon d0effadf 2021-07-31T15:56:30 x11: Don't let XRRSetScreenSize fire a BadMatch error. This is a workaround and not a proper fix, but this is possibly complicated, and possibly a corner case, so this will do for 2.0.16, if not the foreseeable future. Reference issue #4561
Sam Lantinga 3a4b217d 2021-07-31T12:44:29 Allow defining SDL_MAIN_HANDLED on iOS if you're using another runtime that provides an application delegate
Sam Lantinga deed21a8 2021-07-31T12:44:11 Removed useless forward declaration
Sam Lantinga 1a9253f7 2021-07-31T12:37:28 Removed unused IOS_DYLIB definition
Ethan Lee e5594e66 2021-07-30T16:03:01 wayland: Prefer our SSD implementation if available
Sam Lantinga 2d0075ef 2021-07-30T18:23:43 Updated comments for third party Nintendo Switch controllers
Sam Lantinga 16010f75 2021-07-30T18:23:43 Added support for the PowerA Nintendo Switch Fusion Arcade Stick
Sam Lantinga b33f4709 2021-07-30T18:23:42 Fixed detection of the PDP Afterglow Wireless Switch Controller over Bluetooth
Sam Lantinga 6af6950d 2021-07-30T18:23:42 Added support for the Victrix Gambit Tournament Controller
Sam Lantinga 243a8836 2021-07-30T18:23:41 The PowerA Nintendo Switch Fusion Pro Controller has a working USB mode, enabled via the switch on the underside of the controller.
Ethan Lee 71897cc1 2021-07-30T15:51:43 wayland: Always trigger a resize when handling a configure event. When we removed the OpenGL resize workaround it introduced a problem for fullscreen windows in particular: When leaving fullscreen we tried to send a resize event, but UpdateFullscreenMode would send a SIZE_CHANGED immediately after, deleting our resize event and causing the following configure event's resize to be ignored. This timing issue resulted in fullscreen windows not being resized at all when becoming a floating window. By always forcing resize events from configure events, we ensure that RESIZED always makes it through. SetWindowSize-type changes should be unaffected as they do not fire configure events.
David Gow 8f06a629 2021-07-30T22:31:17 render: Fix -Wmaybe-uninitialized warning in RenderDrawLinesWithRects{,F} The RenderDrawLinesWithRects and RenderDrawLinesWithRectsF functions can sometimes call QueueCmdFillRects() with the data pointed to by frects uninitialised. This can occur if none of the lines can be replaced with rects, in which case the frects array is empty, and nrects is 0. gcc 10.3.0 will detect this possibility, and print a warning like: /home/david/Development/SDL/src/render/SDL_render.c: In function 'RenderDrawLinesWithRectsF': /home/david/Development/SDL/src/render/SDL_render.c:2725:15: warning: '<unknown>' may be used uninitialized [-Wmaybe-uninitialized] 2725 | retval += QueueCmdFillRects(renderer, frects, nrects); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/david/Development/SDL/src/render/SDL_render.c:499:1: note: by argument 2 of type 'const SDL_FRect *' to 'QueueCmdFillRects' declared here 499 | QueueCmdFillRects(SDL_Renderer *renderer, const SDL_FRect * rects, const int count) | ^~~~~~~~~~~~~~~~~ This is harmless, because when this is uninitialised, nrects is always 0, so QueueCmdFillRects() does nothing anyway. We therefore can work around this by only calling QueueCmdFillRects() when nrects is nonzero. Somewhat impressively, gcc recognises that this is now safe.
Ethan Lee c20ab7da 2021-07-30T00:22:50 wayland: Fix GetWindowWMInfo for <2.0.15
Ryan C. Gordon 585c11c5 2021-07-30T00:33:15 direct3d: Fix possibly-incorrect scissor test when clearing. Thanks to @JayFoxRox who did the detective work on this! Fixes #3357.
Cameron Gutman 6f684f67 2021-07-29T18:20:36 cocoa: Add keyboard grab support CGSSetGlobalHotKeyOperatingMode() is not a public API, so we will only compile this in if SDL_MAC_NO_SANDBOX=1 is defined during compilation.
Sam Lantinga 69518b9e 2021-07-29T17:09:24 Make sure we don't send a resize event while a window is being destroyed This fixes https://github.com/libsdl-org/SDL/issues/3669
Sam Lantinga 3ababa09 2021-07-29T15:17:42 Don't explicitly use any C runtime library with Visual Studio Visual Studio will still use Multi-threaded DLL by default, but since we don't link with a C runtime we won't end up with any Visual Studio runtime dependency. This fixes https://github.com/libsdl-org/SDL/issues/4328
Ryan C. Gordon 659e1f0a 2021-07-29T17:49:52 audiocvt: The to-5.1 converters now soften FL and FR channels more. This is experimental and might be tweaked further. Reference #4104. Also reference: https://github.com/Keriew/augustus/issues/194#issuecomment-847655049
Christian Rauch f20a8581 2021-07-29T00:13:17 commit after setting/unsetting limits
Sam Lantinga 9984891b 2021-07-29T14:46:24 Use the wl_touch object as a touch ID on Wayland (thanks @russelltg!) This fixes https://github.com/libsdl-org/SDL/issues/4517
Ethan Lee 74162b74 2021-07-29T13:27:31 wayland: Add support for text-input-unstable-v3
Jessica Clarke e4411505 2021-07-29T19:04:39 Don't pack SDL_AudioCVT on CHERI architectures This is needed to support CHERI, and thus Arm's experimental Morello prototype, where pointers are implemented using unforgeable capabilities that include bounds and permissions metadata to provide fine-grained spatial and referential memory safety, as well as revocation by sweeping memory to provide heap temporal memory safety. The referential safety is enforced through the use of tagged memory, and there is only a single tag bit per capability-sized word, meaning it is impossible to store capabilities at unaligned locations, either getting a trap on load/store or the validity tag being stripped when round-tripepd through memory. Since this is a new ABI for which SDL has never been compiled before, we do not need to be concerned with this compatibility measure, so just don't pack the struct for CHERI architectures. This code is inherently rather dubious anyway; if MSVC and GCC disagree on struct layout when targeting Windows then that is a bug in GCC, but likely extends from the bogus #pragma pack directives for MSVC in begin_code.h, which will force types to be *underaligned* (and is attempting to work around something that is fundamentally a broken idea to be doing). In particular 8-byte-aligned types will be underaligned to 4 bytes, but only on MSVC. Since that code is not used for GCC that is probably the cause of the struct layout discrepancy, and there are likely other instances of that throughout SDL. Moreover, the supposed fix here is not in fact a fix, as now GCC will think SDL_AudioCVT is only 1-byte-aligned but MSVC will think it's 4-byte or 8-byte-aligned, meaning ABI incomatibility is introduced by this change. However, removing it would break ABI compatibility for purely-GCC-compiled code (as old binaries would see the struct as 1-byte-aligned and new binaries would see the struct as 8-byte-aligned) so SDL is stuck with this until it bumps its ABI.