Commit Graph

6885 Commits (a2b2464b46c62b87e669d88268c7a31439eb676d)

Author SHA1 Message Date
Pierre Wendling de5fa89b50 N3DS: Prepend PrefPath with `sdmc:`. 2022-11-14 21:24:10 -08:00
Pierre Wendling 7d536d5240 N3DS: Put `SDL_Log.txt` in the proper directory.
The homebrew "user" directory should be `/3ds/`.
To avoid ambiguity, `sdmc:` is specified.
2022-11-14 21:24:10 -08:00
Pierre Wendling bf4f9aaa63 N3DS: Use designated initialiser for drivers.
Just a sanity check that the functions are actually mapped correctly.
2022-11-14 21:24:10 -08:00
Sam Lantinga a40b7cde10 Workaround for views being in portrait instead of landscape mode on iOS 16
Fixes https://github.com/libsdl-org/SDL/issues/6289
2022-11-14 13:03:52 -08:00
pionere b886f4c6c9 events: eliminate redundant code in SDL_SendEditingText 2022-11-14 09:00:45 -08:00
pionere dad8df3ed1 video: check graphics flags the same way in SDL_RecreateWindow as in SDL_CreateWindow
- single check to validate the graphics flags
- check it before tearing down the window
2022-11-14 07:53:41 -08:00
Frank Praznik eef4d3c86a wayland: Clamp wl_seat version on older versions of libwayland
Clamp the wl_seat max version to 5 if being built against a version of libwayland below 1.21.0, or containers that bundle newer versions of SDL with older versions of libwayland can break if the compositor advertises support for a protocol version above 5.
2022-11-13 17:48:14 -06:00
Sam Lantinga 674989261d Fixed warning
Fixes https://github.com/libsdl-org/SDL/issues/5842
2022-11-13 11:09:39 -08:00
Ethan Lee c4b9f62164 x11: Add support for the Steam Deck on-screen keyboard 2022-11-13 11:02:27 -08:00
pionere 5f2a1231dd video: check graphics flags the same way as the type flags 2022-11-13 08:31:50 -08:00
pionere 22354b4142 video: simplify window-type check in SDL_CreateWindow 2022-11-12 07:18:04 -08:00
Ryan C. Gordon 85aa9b8b6f
wasapi: Favor the system resampler again, for now.
Reference Issue #5538.
2022-11-11 13:48:11 -05:00
Sam Lantinga 9f8b68a278 Fixed building without linux/input.h
https://github.com/libsdl-org/SDL/issues/6169
2022-11-11 10:25:52 -08:00
Sam Lantinga b7e65a81f1 Fixed incorrect WGI controller state when the application loses focus
Recenter the controller elements when WGI stops reporting valid state

Fixes https://github.com/libsdl-org/SDL/issues/5261
2022-11-11 08:58:27 -08:00
Michael Fitzmayer 875e9b35d7 N-Gage: additional cleanup 2022-11-11 05:04:28 -08:00
Michael Fitzmayer afbafc2aef Remove redundant dependency to bitdraw.h, minor cleanup 2022-11-11 05:04:28 -08:00
pionere d09edcbcac video: sync Metal_CreateView with GL_CreateContext and Vulkan_CreateSurface
no need to check if _this->Metal_CreateView, since it is already checked in Re(create)Window
2022-11-11 04:58:40 -08:00
pionere b71d927429 video: add NOT_AN_OPENGL_WINDOW define (similar to NOT_A_VULKAN_WINDOW) 2022-11-11 04:58:40 -08:00
pionere 36c6ed4b6f video: add SDL_DllNotSupported
- add SDL_DllNotSupported and use it to sync the behavior of SDL_GL_LoadLibrary with SDL_Vulkan_LoadLibrary
2022-11-11 02:53:30 -08:00
Sam Lantinga 0dfc829a6b Added simple BLE Steam Controller support on all platforms
This is still disabled by default via the hint SDL_HINT_JOYSTICK_HIDAPI_STEAM
2022-11-10 19:17:04 -08:00
Steven Noonan 3d8a7e4c15
cocoa: implement GL_GetDrawableSize for OpenGL ES 2022-11-10 18:06:12 -08:00
Steven Noonan e8fbb02d16
windows: support forcing EGL for GL desktop
This will theoretically support ANGLE's GL desktop frontend whenever it
becomes fully implemented and enabled in the future.
2022-11-10 18:06:12 -08:00
Steven Noonan 085a276d6c
egl: implement callbacks for defining custom EGL attributes
Depending on the underlying EGL library, it may be desirable to
conditionally set some specific EGL attributes depending on available
extensions and other application state.

SDL's EGL usage makes this a little bit complicated because:

- there are multiple functions used to set up a working EGL context
- some of these functions take different types of EGL attributes
  (EGLAttrib vs EGLint)
- the EGL extension list before creating an EGLDisplay differs from the
  extension list after (i.e. display vs client extensions)
- all of the above happens in a single SDL_CreateWindow call

This leaves no place for the application to discover what EGL extensions
are available and provide custom attribute lists.

Until now, if a developer wants to add a custom EGL attribute for
eglGetPlatformDisplay, eglCreateWindowSurface or eglCreateContext, they
needed to patch SDL itself. This is very undesirable, since such
developers would have to disable the SDL dynapi in order to maintain
compatibility with their needs.

This patch implements some callbacks which developers can use to
dynamically generate custom EGL attributes for SDL to use during
SDL_CreateWindow.
2022-11-10 18:06:12 -08:00
Steven Noonan 0644042eb8
egl: implement public functions to obtain internal EGL handles
These functions allow applications to call EGL functions against the SDL
EGL context. For example, applications can use an EGL API loader via
SDL_EGL_GetCurrentDisplay and SDL_EGL_GetProcAddress, and can call
functions such as eglQuerySurface against the internal EGLSurface and
EGLDisplay.
2022-11-10 18:06:11 -08:00
Steven Noonan eacf6dc15e
egl: fix function prototype for eglGetPlatformDisplay
The EGL 1.5 specification says that eglGetPlatformDisplay (unlike
eglGetPlatformDisplayExt) takes an EGLAttrib* rather than EGLint* for
the attribute list.
2022-11-10 18:06:11 -08:00
Steven Noonan fb1a581209
egl: add hint to disable eglGetDisplay fallback when eglGetPlatformDisplay fails
This fallback is undesirable when using ANGLE, because it will end up
using some default configuration (e.g. on Windows it defaults to the
D3D11 backend).
2022-11-10 18:06:11 -08:00
Steven Noonan c608cf6222
egl: implement SDL_GL_EGL_PLATFORM attribute
This implements a new SDL_GL_EGL_PLATFORM attribute to set the
"platform" argument for SDL_EGL_LoadLibrary on Windows, macOS, and
Linux. I've limited it to those three operating systems because that's
what I've been able to test against.
2022-11-10 18:06:11 -08:00
Steven Noonan aed980526c
SDL_video: defer destroying window until GL/EGL/Vulkan unloaded 2022-11-10 18:06:11 -08:00
Steven Noonan 5a7c20b945
hints: replace SDL_HINT_VIDEO_X11_FORCE_EGL with platform-agnostic SDL_HINT_VIDEO_FORCE_EGL
This adds support for forcing the use of EGL on Windows and MacOS. The
SDL_HINT_VIDEO_X11_FORCE_EGL hint is retained for backwards
compatibility but is now deprecated.
2022-11-10 18:06:10 -08:00
Sam Lantinga f430ef5ddc Don't change the window position when creating it on iOS, it is already placed on the correct display 2022-11-10 17:27:48 -08:00
Sam Lantinga 7c05ea0a0e Added mappings for the GameSir T3 and T4 Pro controllers 2022-11-10 13:35:59 -08:00
Sam Lantinga 404cb27677 Added macOS mappings for the Nintendo Switch Pro Controller over Bluetooth 2022-11-10 13:28:03 -08:00
pionere 29cafa9c94 add SDL_ContextNotSupported and validate flags in SDL_RecreateWindow similar to SDL_CreateWindow 2022-11-10 06:56:24 -08:00
Ryan C. Gordon 1008cc8e5f
video: Add some braces to match SDL coding style. 2022-11-09 12:55:27 -05:00
pionere ac3349faaf solve FIXMEs in SDL_video.c 2022-11-09 12:54:07 -05:00
pionere e5c599f8c6 fix SOLARIS_ATOMICS
- use 'sizeless' int types (int uses 32-bit even if _LP64 is set)
2022-11-09 12:45:14 -05:00
pionere b095df7f5c simplify MSC_ATOMICS
- use _Interlocked(Compare)ExchangePointer in case of _M_IX86 as well
- improve assertions:
  1. add assertions to SDL_AtomicAdd/SDL_AtomicSet and SDL_AtomicCAS
  2. use sizeof(a->value) instead of sizeof(int)
2022-11-08 10:32:31 -08:00
meyraud705 3dc88da022 Fix Dualshock 4 rumble stopping too early
Dualshock 4 controller only rumbles for 5 seconds maximum. Resend
rumble command every 2 seconds to make long rumble work.
2022-11-08 10:30:11 -08:00
Sam Lantinga 6432f45a1c Don't treat the Nintendo IMU as a separate game controller on Linux 2022-11-08 10:27:21 -08:00
Sam Lantinga 2e3b4f3fd7 Don't send rumble to the Amazon Luna controller on macOS
Sending rumble to the Amazon Luna controller on macOS gets there, but IOHIDDeviceSetReport() blocks for a long time and eventually fails.

This appears to be a bug in the macOS Bluetooth stack, ref rdar://99265496
2022-11-08 07:50:51 -08:00
Sam Lantinga 02bc359b64 Shorten "Bensussen Deutsch & Associates,Inc.(BDA)" to "BDA" for controller names 2022-11-07 19:31:18 -08:00
Ryan C. Gordon b0dc6709b9 coreaudio: Don't use deprecated kAudioObjectPropertyElementMaster symbol.
Fixes #6449.
2022-11-07 14:26:48 -05:00
pionere e873d60981 fix handling of SDL_EventQ.active
- SDL_EventQ.active is a bool variable -> do not use SDL_AtomicGet/Set, it does not help in any way
- protect SDL_EventQ.active with SDL_EventQ.lock
- set SDL_EventQ.active to FALSE by default
2022-11-07 09:12:37 -08:00
pionere eb670742f5 better SDL_AtomicGet(Ptr) implementation 2022-11-07 09:09:37 -08:00
Hubert Maier 5dc93451d2
JANITORIAL : Correct some more spelling mistakes (#6489) 2022-11-06 11:49:37 -08:00
Sam Lantinga c2675d74c5 Revert "cocoa: Discard the IME Candidate Window immediately when Escape is pressed"
This reverts commit 0d76e2a8a1, as it introduced other issues:
https://github.com/libsdl-org/SDL/pull/6486#issuecomment-1304684865
2022-11-06 10:52:20 -08:00
Sam Lantinga f2ce7c5fb2 Added the G29 as a PlayStation controller 2022-11-06 08:23:08 -08:00
Sam Lantinga 9d1dbd2ad8 Added note about trigger rumble availability across third-party Xbox One controllers 2022-11-06 01:16:52 -08:00
Sam Lantinga e7a56323ab Make sure we wait after sending the rumble packet when initializing the PowerA Xbox One Mini Wired Controller 2022-11-06 01:43:05 -07:00
Sam Lantinga 6875e62af3 Make sure we don't send Xbox controllers rumble so quickly that it overwhelms the firmware
Fixes https://github.com/libsdl-org/SDL/issues/6435
2022-11-06 01:15:20 -07:00
Sam Lantinga 38af459dd9 Fixed potential clobbering of packets of different types using SDL_HIDAPI_SendRumble() 2022-11-06 01:15:19 -07:00
Sam Lantinga e45cb5b1e2 Fixed initializing the PowerA Xbox One Mini Wired Controller 2022-11-06 01:15:18 -07:00
Edward Li 0d76e2a8a1 cocoa: Discard the IME Candidate Window immediately when Escape is pressed 2022-11-05 17:03:10 -07:00
Sam Lantinga 15a9890919 Added SDL_HINT_HIDAPI_IGNORE_DEVICES to specify devices that should be ignored in SDL_hid_enumerate() 2022-11-05 16:44:52 -07:00
Sam Lantinga 297ecb706d Added SDL_strcasestr() for a case insensitive version of SDL_strstr() 2022-11-05 15:58:30 -07:00
Sam Lantinga a4626dea8d Fixed initializing the PDP Xbox One and Victrix Gambit controllers 2022-11-05 14:24:41 -07:00
Sam Lantinga 7e11b09b3b The PowerA Xbox One Mini Wired Controller works with the HIDAPI driver now 2022-11-05 13:50:37 -07:00
Sam Lantinga a2d66b6a91 SDL_GameControllerMapping() should return the string for the actual mapping that was used when opening a gamecontroller, rather than do a GUID match again
Also don't match against the zero guid if that happens to be in the mapping list for some reason
2022-11-05 13:12:10 -07:00
Stefan Sperling f3bf543e2a recognize game controllers connected via raphnet technologies WUSBMote v2.2
This is a USB adapter for controllers shipped with Nintendo's NES-mini and
SNES-mini consoles.
Tested with both NES and SNES controllers, buttons map as expected on both.
2022-11-05 10:35:07 -07:00
Sam Lantinga 24cdebe464 Added the hint SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED to control the brightness of the Xbox button LED on the Xbox One controller 2022-11-05 10:34:08 -07:00
Ryan C. Gordon 78f97108f9
audio: Avoid accumulation errors in resampler.
Fixes #6391.
2022-11-05 10:39:35 -04:00
David Edmundson 689218ebf5 Fix wayland reconnection paths
Most of this code is disabled out for now.

- For mouse cursors we have a wl_surface for both system and custom
cursors which needs recreating.
 - The other patch is about nullification after deletions
2022-11-04 11:13:30 -04:00
Sam Lantinga 33a68f575f Added Linux mappings for the Logitech G29 in PS3 and PS4 modes 2022-11-03 16:02:58 -07:00
Sam Lantinga c70e675900 Wait a bit for devices to initialize before trying to enumerate and open them.
This works around udev event nodes arriving before hidraw nodes and the controller being opened twice - once using the Linux driver and once by the HIDAPI driver.

This also fixes a kernel panic on Steam Link hardware due to trying to open the hidraw device node too early.

A delay of 10 ms seems to be a good value, tested on Steam Link hardware.
2022-11-03 12:37:54 -07:00
Guldoman 084fa4c3fa cocoa: Reset IME when sending composed text
This will send an empty `TEXTEDITING` event that is used to signal the 
end of the composition.
2022-11-03 10:41:53 -07:00
Guldoman 70a41f9bc2 wayland: Read `window` data only if `window` is valid 2022-11-01 05:14:05 -07:00
Sam Lantinga b75d318776 Sometimes the HID open doesn't succeed immediately after being notified about the device
Tested on Steam Link hardware with the Nintendo Switch Pro controller, which will occasionally take 2 attempts to open.
2022-10-31 13:33:53 -07:00
Jasper Hugunin 27ee8c8e14 Fix mismatch between Init and Quit
Init says that audio implies events (line 195), Quit was missing the implication.
2022-10-31 11:22:40 -07:00
Frank Praznik 33a430056f wayland: Don't modify the mouse capture flag in relative mode
If relative mouse mode is explicitly enabled, don't modify the capture flag on button events or the window might report having lost mouse focus if a button is pressed while moving the cursor.
2022-10-31 10:13:58 -07:00
Hubert Maier 678ef7977f SDL_KMSDRMOPENGLES.H: Correct spelling mistakes
begining -> beginning
beggining -> beginning
2022-10-30 11:24:42 -04:00
Hubert Maier 8b9c82e140 SDL_RENDER_PSP.C: Correct spelling mistakes
wether -> whether
2022-10-30 11:24:42 -04:00
Hubert Maier 3369b0163f SDL_PS2_MAIN.C: Correct spelling mistake
untill -> until
2022-10-30 11:24:42 -04:00
Hubert Maier d7a46a16e9 SDL_SYSLOADSO.c: Correct spelling mistake
publically -> publicly
2022-10-30 11:24:42 -04:00
Hubert Maier 6a881302ad SDL_IBUS.H: Correct spelling mistake
recieve -> receive
2022-10-30 11:24:42 -04:00
Hubert Maier 61f3662c95 SDL_QSA_AUDIO.C: Correct spelling mistake
occured -> occurred
2022-10-30 11:24:42 -04:00
Ethan Lee 571ff1a3a9 wayland: Prepare cursor implementation for reconnect support
Co-authored-by: David Edmundson <kde@davidedmundson.co.uk>
2022-10-30 00:19:09 -04:00
Ethan Lee 9c8b1fd8b6 wayland: Cleanup work to aid reconnect support
Co-authored-by: David Edmundson <kde@davidedmundson.co.uk>
2022-10-29 22:41:42 -04:00
Sam Lantinga f6b1e028ab Allow vendor matching for hid_enumerate() on all backends 2022-10-29 10:43:11 -07:00
Sam Lantinga 4556074e18 Re-set the maximize state if we were maximized while fullscreen 2022-10-29 09:35:07 -07:00
Sam Lantinga ab06a307dc Don't report windows being maximized when fullscreen on X11
This is a functional state for some window managers (tested using stock Ubuntu 22.04.1), and removing that state, e.g. using SDL_RestoreWindow(), results in a window centered and floating, and not visually covering the rest of the desktop.
2022-10-29 09:21:17 -07:00
Ryan C. Gordon b9e1d1b4de events: Rename SDL_SendKeyboardKeyComplete to SDL_SendKeyboardKeyAndKeycode.+ 2022-10-28 16:19:00 -04:00
Ryan C. Gordon 9221548114 emscripten: Make an attempt at correct keyboard scancode/keycodes.
This uses a newer browser API to get physical scancodes, but still
uses the (deprecated) event field that we were already using for
scancodes, but for keycodes instead now, which appears to be more
accurate.

Since keyboard layout isn't (generally) available to web apps, this
adds an internal interface to send key events with both scancode
and keycode to SDL's internals, instead of sending just scancodes and
expecting SDL to use its own keymap to generate keycodes.

Future work in this area would be to use the keyboard layout APIs
on browsers that support them, which would allow us to use SDL's
usual keymap code and not rely on a deprecated browser API, but
until we get there, this patch gives significantly more correct
results than we would have before.

Fixes #2098.
2022-10-28 16:19:00 -04:00
Francisco Javier Trujillo Mata a8f019b1f0 Using ST and removing warnings 2022-10-28 11:42:44 -07:00
Francisco Javier Trujillo Mata f2ebedae92 adding texture function 2022-10-28 11:42:44 -07:00
Francisco Javier Trujillo Mata 5de01eb0aa Make render to use new functions 2022-10-28 11:42:44 -07:00
Sam Lantinga f500c14766 Fixed DirectFB build 2022-10-28 08:39:02 -07:00
Ryan C. Gordon 9e8d2f3948
video: Don't use texture framebuffer on Windows Subsystem for Linux.
Reference Issue #6333.
2022-10-27 13:54:53 -04:00
Frank Praznik 4223e6ac7a wayland: Early-out sooner when requesting fullscreen on a popup
Exit the fullscreen sequence sooner if it is requested that a popup window be fullscreen.

The surface commit formerly in this path is irrelevant and can be removed as previous changes made it so that SetFullscreen() is no longer called from anywhere except Wayland_SetWindowFullscreen().
2022-10-26 22:19:59 -04:00
Ryan C. Gordon 41d38c0f64 shape: More robust handling of failure cases in CreateShaper. 2022-10-26 13:57:49 -04:00
Ryan C. Gordon c8d20f96ba shape: Free platform-specific shaped window data.
Fixes #2128.
2022-10-26 13:57:49 -04:00
Frank Praznik 30c2dac787 wayland: Remove duplicate #include statement 2022-10-25 17:03:25 -07:00
Sam Lantinga 25d0473aad Removed Razer Onza Tournament Edition mapping
The controller can use either hat or buttons for the D-Pad, depending on what Linux driver is in use. The automatic mapping in LINUX_JoystickGetGamepadMapping() will do the right thing based on the exposed capability bits.

I'm sure this is the case for other controllers as well, so we might be removing more mappings over time.
2022-10-25 16:14:26 -07:00
Sam Lantinga e837debc25 Bindings should have a trailing comma, so the CRC can be appended 2022-10-25 16:13:50 -07:00
Sam Lantinga b6cf889af4 Use ScreenCount() instead of SDL_GetNumVideoDisplays()
The limitation appears to be specific to multi-screen setups
2022-10-25 15:10:50 -07:00
Sam Lantinga c74ea994a5 Added support for the Razer Raiju Tournament Edition controller in Bluetooth mode 2022-10-25 13:11:41 -07:00
Sam Lantinga 72f6e216dc Disabled debug logging 2022-10-25 12:25:57 -07:00
Sam Lantinga e3f5744db4 Don't use XIWarpPointer() on multi-display configurations 2022-10-25 12:14:00 -07:00
Alynne 5fbf8f6cf0 Adds DualSense Edge 2022-10-25 10:32:44 -07:00
Sam Lantinga da478d1f66 Fixed build 2022-10-25 10:30:56 -07:00
Sam Lantinga a6018ae57f Added support for the NVIDIA SHIELD controller v1.03 to the HIDAPI driver 2022-10-25 10:23:51 -07:00
Ozkan Sezer 20beed3029 SDL_EGL_GetProcAddress: remove unnecessary underscore-prepended search.
Closes https://github.com/libsdl-org/SDL/issues/6236.
2022-10-25 14:56:32 +03:00
Steven Noonan 053b5f85f1 SDL_windowsevents: minimize white screen flash on window creation
Clear the window to black on the initial window draw, to avoid a really
obnoxious white flash. This doesn't always eliminate it, but it
definitely minimizes it.
2022-10-24 10:39:37 -07:00
Steven Noonan d2300516c3 cocoa: set sRGB colorspace on nswindow
This makes the colorspace match across different graphics APIs. By
default, OpenGL was getting a much more saturated colorspace (maybe
Display P3?) and it was looking very different from the rendering done
by Metal or MoltenVK.
2022-10-24 10:38:59 -07:00
Steven Noonan 019e9d4c92 SDL_cocoavideo.m: add missing SDL_cocoaopengles.h include 2022-10-24 10:38:36 -07:00
Sam Lantinga dd72f3f03d Added comment for #endif 2022-10-24 10:37:43 -07:00
Steven Noonan 3d35c08585 fix a few 'unused but set variable' and 'unused function' warnings 2022-10-24 10:36:56 -07:00
Sam Lantinga f4d1f5ed54 SDL-HIDPS4: fix PS4 Slim controller over BT - it sends the same input report as the it does over USB, but with a larger packet size
CR: saml
2022-10-23 16:35:36 -07:00
Thomas Cashman 8db3a33872 #6433 Fix WINRT_IsScreenKeyboardShown on Xbox 2022-10-23 11:42:11 -07:00
Sam Lantinga 413500ab69 Replaced mouseWheelGesture with GCMouse support on iOS (thanks @russelltg!)
Fixes https://github.com/libsdl-org/SDL/issues/6411
2022-10-22 09:37:34 -07:00
Deve 2ebaafa6c9 Use translationInView for mouse wheel event 2022-10-22 09:31:39 -07:00
Anonymous Maarten c3b13346e0 On x86, pass -nodefaultlib to linker when wanting to avoid the C library 2022-10-22 09:28:00 -07:00
Sam Lantinga 5b8f830e34 Virtual joysticks don't need initial axis jitter protection
Fixes https://github.com/libsdl-org/SDL/issues/6426
2022-10-22 09:25:09 -07:00
Ozkan Sezer 0e1d19cf68 fix build errors resulting from -Wmisleading-indentation 2022-10-22 18:56:40 +03:00
Sam Lantinga a905a7869f Clear the previous bitmap when calculating a new window shape
Fixes https://github.com/libsdl-org/SDL/issues/6428
2022-10-22 08:50:18 -07:00
Ozkan Sezer 65a38a4015 hidapi, libusb: remove os/2 symbol load hack after os/2 loadso updates 2022-10-22 08:40:16 -07:00
Ozkan Sezer 3f1b5efcca os2 loadso improvements:
- SDL_LoadObject: upon failure, strip the .dll extension and retry,
  but only if module name has no path.
- SDL_LoadFunction: upon failure, retry with an underscore prepended,
  e.g. for gcc-built dlls.
2022-10-22 08:40:16 -07:00
Ozkan Sezer 3d415bc5d6 loadso, dlsym, SDL_LoadFunction: cleanup the underscored name path.
- strlcpy was passed a wrong buffer length parameter. has worked so
  far by luck.
- use memcpy instead of strlcpy for simplicity.
- 'append' has been a typo: should be 'prepend'.
2022-10-22 07:25:46 -04:00
Ozkan Sezer 4264c0b674 os2: fix error message for SDL_LoadObject() 2022-10-21 11:21:40 +03:00
Ryan C. Gordon e7ab581d79
coreaudio: Dispose of AudioQueue before waiting on the thread.
Otherwise the thread might block for a long time (more than 10 seconds!).
It's not clear to me why this happens, or why its safe to do this with a
resource that's still in use, but we have, until recently, always
disposed of the AudioQueue first, so changing back is probably okay.

Also changed the disposal to allow in-flight buffers to reach hardware;
otherwise you lose the last little bit of audio that's already been queued
but not played, which you can hear clearly in the loopwave test program.

Fixes #6377.
2022-10-19 09:14:16 -04:00
Sam Lantinga aefc6b5bb5 Renamed variables, index is the singular of indices 2022-10-18 08:40:03 -07:00
GNQG 965ba1e097 fix SDL_SendEditingText when long composition text is enabled and strlen(text) == SDL_TEXTEDITINGEVENT_TEXT_SIZE 2022-10-18 08:26:27 -07:00
Sylvain dfbb93dd0c
SDL_Renderer / GLES2: add specific list of indice to render rect (see #6401) 2022-10-18 11:31:30 +02:00
Sylvain e8a4c23ce5
Revert commit 790fa3156c.
SDL_BLENDMODE_INVALID case is probably used for custom blendmode
2022-10-18 10:45:01 +02:00
Sylvain 790fa3156c
Fix warning: enumeration value 'SDL_BLENDMODE_INVALID' not explicitly handled in switch 2022-10-18 10:41:10 +02:00
Sylvain 3d99d31026
Fixed bug #6401 - back-end can choose the order the triangles when rendering rects, attempt to fix small glitch rendering. 2022-10-18 10:34:56 +02:00
Sylvain 285cbf6fdd
Revert commit 485bb3565b.
"Fixed bug #6401 - change the order of triangles when using RenderCopy, RenderCopyEx and RenderFillRect"
because the glitch reappears on other backend
2022-10-18 10:04:06 +02:00
Sam Lantinga 0bc852ce53 Revert "Disable the RAWINPUT joystick driver by default"
Disabling RAWINPUT on Windows 10 causes these issues:
* All Xbox controllers are named "XInput Controller".
* Trigger rumble no longer works.
* "XInput Controllers" are now also listed as separate haptic devices
2022-10-17 17:43:06 -07:00
Deve 7e1088167a Fixed command modifier on macOS 2022-10-17 16:49:21 -07:00
Deve cdf312c83d Fixed mouse warp after resizing window on macOS. 2022-10-17 16:27:40 -07:00
David Jacewicz 7c7cd2a605 Fix issue #6037 (incorrect modifier flags on Wayland) 2022-10-17 13:27:39 -07:00
Wouter Wijsman 3903f4c88a PSP: Use vramalloc instead of conflicting valloc function
The libpspvram library was offering a function with conflicted with valloc. This has been renamed now, so SDL2 had to be updated for it.
2022-10-17 21:59:38 +02:00
Sam Lantinga 333935ff3f Make sure we completely unlock joysticks when opening HIDAPI devices
Also lock the joysticks when adding and removing Android joysticks
2022-10-17 11:10:53 -07:00
Sam Lantinga 47ba997f06 Disable the RAWINPUT joystick driver by default
It's only needed to support more than 4 Xbox controllers, and adds significant complexity to the joystick processing, and we regularly get bugs from people who aren't using an SDL window who need to turn on SDL_HINT_JOYSTICK_THREAD.
2022-10-17 07:39:52 -07:00
Sam Lantinga 5025f24033 Don't use RAWINPUT joystick driver on Windows XP
Fixes https://github.com/libsdl-org/SDL/issues/6400
2022-10-17 07:35:00 -07:00
Brad Smith f4e3af15a1 Simplify OSS test by removing OpenBSD specific location of the soundcard.h header
OpenBSD has long since stopped using OSS. Remove checking for OpenBSD specific header.
2022-10-17 07:18:47 -07:00
Sylvain 485bb3565b
Fixed bug #6401 - change the order of triangles when using RenderCopy, RenderCopyEx and RenderFillRect 2022-10-17 13:30:30 +02:00
Sam Lantinga 70dfd6dd1a Added mapping for Xbox Series X controller
Fixes https://github.com/libsdl-org/SDL/issues/6296
2022-10-16 09:06:02 -07:00
Frank Praznik ed412c1385 wayland: Cleanup event source comments, headers, and error reporting
Replace instances of fprintf(stderr, ...) with SDL_SetError(), replace C++ comments with C style, use a uniform format for multi-line comments, and remove unused headers as poll and select aren't used in this file (the SDL function which calls them is used instead).
2022-10-16 08:40:50 -07:00
Daniel Bomar 22461383c6 SDL_audiocvt: Respct the SDL_HINT_AUDIO_RESAMPLING_MODE hint
This implements using libsamplerate for the SDL_AudioCVT API.
This library was already being used for audio streams when this hint is
set.
2022-10-15 14:31:00 -07:00
Sam Lantinga e8fdb861ef Removed redundant masking when loading the IMU calibration 2022-10-15 10:02:39 -07:00
happyharryh a6573f94ab Fix bugs in IMU calibration loading for Nintendo Controllers 2022-10-15 10:01:22 -07:00
Frank Praznik 6204768653 wayland: Don't block on libdecor_dispatch()
libdecor_dispatch() needs to be called, as libdecor plugins might do some required internal processing within, however care must be taken to avoid double-blocking in the case of a timeout, which can occur if libdecor_dispatch() and the SDL event processing both work on the main Wayland queue. Additionally, assumptions that libdecor will always dispatch the main queue or not process zero-length queues (can occur if a wait is interrupted by the application queueing an event) should not be made, as this behavior is outside the control of SDL and can change.

SDL handles polling for Wayland events and then calls libdecor to do its internal processing and dispatch. If libdecor operates on the main queue, it will dispatch the queued events and the additional wl_display_dispatch_pending() call will be a NOP. If a libdecor plugin uses its own, separate queue, then the wl_display_dispatch_pending() call will ensure that the main queue is always dispatched.
2022-10-15 09:33:37 -07:00
Frank Praznik e89389ba0e wayland: Use MAP_PRIVATE when mapping the keyboard keymap file descriptor
Per the Wayland spec, this must be mapped with MAP_PRIVATE in version 7 of the protocol and higher.
2022-10-15 09:30:06 -07:00
Sam Lantinga 5129a07707 Steam Controller support defaults off, as documented in SDL_hints.h 2022-10-14 14:35:52 -07:00
Sam Lantinga 6af17369ca Added mapping for Qanba Drone on Linux without HIDAPI 2022-10-14 10:36:24 -07:00
Sam Lantinga 93b7196763 Only update the battery level if we're on Bluetooth
Fixes battery level dropping to empty with the Qanba Drone Arcade Stick.

It looks like we might also be able to skip the check for all third party controllers, but I think this is the right thing to do for Sony controllers as well.
2022-10-14 10:32:03 -07:00
Sam Lantinga 120a957d07 Added support for the Qanba Drone Arcade Stick 2022-10-14 09:57:02 -07:00
Sam Lantinga 6bb0c2a5c2 Added documentation for some scancodes 2022-10-14 06:33:38 -07:00
Sam Lantinga 91ff88451b Disable "The key you just pressed is not recognized by SDL." message by default 2022-10-13 23:56:17 -07:00
Sam Lantinga 139192140c Fixed reported cases of "Keyboard layout unknown" messages
In all cases they were using SDL_SCANCODE_TABLE_XFREE86_2 with some keycodes remapped or fewer than expected keycodes. This adds a sanity check that catches all of them and gives them the right scancode table.
2022-10-13 23:23:55 -07:00
Sam Lantinga 2c1923859a Don't remove entries from an existing scancode keymap
If we can't find the X11 keysym, it's likely that either the keysym is NoSymbol, in which case we won't hit it anyway, or it's been mapped to a character, in which case the existing mapping is correct for the scancode and the character will be reflected in the keycode mapping.
2022-10-13 22:50:57 -07:00
Sam Lantinga 99f2a50394 X11 scancode mapping cleanup
* Consolidated scancode mapping tables into a single location for all backends
* Verified that the xfree86_scancode_table2 is largely identical to the Linux scancode table
* Updated the Linux scancode table with the latest kernel keycodes (still unmapped)
* Route X11 keysym -> scancode mapping through the linux scancode table (which a few hand-written exceptions), which will allow mappings to automatically get picked up as they are added in the Linux scancode table
* Disabled verbose reporting of missing keysym mappings, we have enough data for now
2022-10-13 22:41:47 -07:00
Cameron Gutman f5afb7d11a directfb: Fix return type of DirectFB_RenderPresent() 2022-10-13 18:44:15 -05:00
Sam Lantinga fc73386f45 Fixed the mapping from raw joystick values to the expected [SDL_JOYSTICK_AXIS_MIN, SDL_JOYSTICK_AXIS_MAX] range. (thanks Tas!)
The original code mapped incorrectly from [min, max] to [-32768, 32512], the upper bound being SDL_JOYSTICK_AXIS_MAX - 255 instead of SDL_JOYSTICK_AXIS_MAX.
2022-10-12 21:44:50 -07:00
Pierre Wendling 5b9608e08c Remove D3D9 workarounds for Watcom.
The linked PRs have been merged since May.
2022-10-12 17:55:37 +03:00
Ryan C. Gordon 2d7816e358
dynapi: Disable support for API call logging by default.
We can manually enable it if necessary, but it bloats the library to
leave it on just in case.

Fixes #6381.
2022-10-12 09:59:31 -04:00
Sylvain f69e004d01
Android default to dynamic API disabled (see #6381) 2022-10-12 13:58:41 +02:00
Sylvain f6ff87788a
Android default to dynamic API disabled (see #6381) 2022-10-12 13:55:14 +02:00
Desour 6836273d14 Use XIWarpPointer if compiled with xinput2
Co-authored-by: Andrei E <andreien@proton.me>
2022-10-11 16:43:24 -07:00
Ethan Lee be2cb00066 wayland: Check for the input handle before checking the keyboard handle 2022-10-11 11:16:52 -04:00
Sam Lantinga df1bd07dee d3d12: actually execute the pending commands before processing resize
This makes sure all the resources are in the expected state

Fix the D3D12 case in https://github.com/libsdl-org/SDL/issues/6376
2022-10-11 07:25:27 -07:00
Frank Praznik 0b88e609bc wayland: Raise wl_seat maximum version to 8
Version 8 is required for supporting axis_value120 high-resolution scroll events.
2022-10-11 09:15:21 -04:00
zhailiangliang 41c718edca Fix memory leak in PSP_CreateTexture 2022-10-10 22:36:55 -07:00
happyharryh 6f224e4d9f Made timestamp_us of sensor events increase monotonically for Nintendo controllers 2022-10-10 22:33:19 -07:00
Pierre Wendling 8117bfe5d1 PS2: Ignore warnings from toolchain headers.
The `gsInline.h` header creates `Wdeclaration-after-statement` warnings.
2022-10-10 22:31:16 -07:00
Pierre Wendling 5ddac7e026 PSP: Fix type mismatch warnings. 2022-10-10 22:31:16 -07:00
Pierre Wendling c1317175b4 PSP: Fix `Wformat` warnings. 2022-10-10 22:31:16 -07:00
Pierre Wendling 669532d529 PSP: Remove dead code.
Fixes unused variable warning.
2022-10-10 22:31:16 -07:00
Ryan C. Gordon 17322e2be6
dynapi: Optionally log every call into the SDL API.
This will only log things going through dynapi, which means it won't
do anything if dynapi is disabled for a given build, but also things
that call the `*_REAL` version of an API won't log either (which is
to say, if an internal piece of SDL calls a public API, it won't log
it, but if an application calls that same entry point, it will).

Since this just inserts a different function pointer, unless you
explicitly request this at runtime, it won't add any overhead, and,
of course, the entire thing can be turned off with a single #define
so it doesn't even add extra unused code to the shared library if
the kill switch is flipped.
2022-10-10 13:17:07 -04:00
Sam Lantinga 4507083503 Fixed build 2022-10-10 09:39:55 -07:00
Sam Lantinga 680d0f043a Added support for undefined or centered position for shaped windows
Fixes https://github.com/libsdl-org/SDL/issues/6359
2022-10-10 09:27:26 -07:00
Pierre Wendling 43a2b0b1e5 N3DS: Use macro to correct axis.
Using `(value * SDL max) / 3DS max` allows for marginally better
accuracy compared to `value * (SDL max / 3DS max)`.
2022-10-10 08:50:59 -07:00
Pierre Wendling 49c25b1daf N3DS: Fix PrivateSensorUpdate call.
A new timestamp parameter was added in 2c51874.
2022-10-10 08:50:59 -07:00
Pierre Wendling cb1972b3ba N3DS: ZL and ZR should be considered as triggers.
Previously they were considered as clicking stick.
2022-10-10 08:50:59 -07:00
Pierre Wendling 86a8714fea N3DS: Refactor joystick module to avoid globals. 2022-10-10 08:50:59 -07:00
Pierre Wendling 392f3882d0 N3DS: Use SDL_Sensor instead of Joystick sensors. 2022-10-10 08:50:59 -07:00
Pierre Wendling efc93e6851 N3DS: Don't set `num_display` by hand.
Doing so creates 2 empty displays at the beginning of the list.
2022-10-10 08:50:59 -07:00
Pierre Wendling 83ec6062af N3DS: Move gfxInit and hidInit from main to video. 2022-10-10 08:50:59 -07:00
Pierre Wendling 266014faa7 N3DS: Use SDL_Touch instead of the Joystick touch. 2022-10-10 08:50:59 -07:00
Pierre Wendling f9785702a6 N3DS: Deduce screen from window's display.
This removes the need for a dedicated window creation flag.
2022-10-10 08:50:59 -07:00
Pierre Wendling 46a13ad97a N3DS: NEON is likely not supported. 2022-10-10 08:50:59 -07:00
Pierre Wendling af2bc2ed0e N3DS: Use osSetSpeedupEnable instead of PTMSYSM. 2022-10-10 08:50:59 -07:00
Pierre Wendling 03bbbcd85e N3DS: Use CreateJoystickGUIDForName. 2022-10-10 08:50:59 -07:00
Pierre Wendling 2b2693ae90 N3DS: Use asprintf instead of snprintf. 2022-10-10 08:50:59 -07:00
Pierre Wendling 655275378d N3DS port (squashed)
A dedicated renderer using Citro3D would likely allow for better
much better graphical performances.
2022-10-10 08:50:59 -07:00
Sam Lantinga 61b5360e17 Only check to see if the ICC profile changes when the display changes or we gain focus
Fixes https://github.com/libsdl-org/SDL/issues/6366
2022-10-10 08:29:05 -07:00
Sam Lantinga f99fc3268e d3d12: fixed window resize handling
Fixes https://github.com/libsdl-org/SDL/issues/6355
2022-10-09 11:42:39 -07:00
Sam Lantinga 490c20f93f d3d12: reset the vertex buffer size when it is released 2022-10-09 09:57:55 -07:00
Sam Lantinga efdb390caa Disable the HIDAPI Wii driver by default as it doesn't work with the dolphinbar 2022-10-09 09:11:33 -07:00
Frank Praznik 6391ad970c wayland: Factor out common libdecor frame commit code
The pattern of:
 libdecor_state_new()
 libdecor_frame_commit()
 libdecor_state_free()

 was used in several places. Factor it out into a common function.
2022-10-09 08:50:54 -07:00
Frank Praznik b0a9396b00 wayland: Remove XDG surface geometry calls
These were needed to fix some buggy behavior regarding committing old buffer sizes when entering fullscreen that has since been corrected. Remove them.
2022-10-09 08:50:54 -07:00
Guldoman b91ddbc3e2 wayland: null-terminate drop data 2022-10-09 08:48:34 -07:00
Anonymous Maarten eb8eb621b1 SDL_x11modes: fix -Wunused-variable 2022-10-08 23:41:07 +02:00
Anonymous Maarten 01498d3acf SDL_render_psp.c: fix -Wshadow
Emitted by PSP's gcc
2022-10-08 23:41:07 +02:00
Anonymous Maarten 4298e79887 SDL_offscreenframebuffer.c: fix format '%d' expecting int instead of Uint32
Emitted by Nintendo 3DS's gcc (fix is same as used by ngage)
2022-10-08 23:41:07 +02:00
Anonymous Maarten b51a88a95c SDL_malloc.c: fix variable 'used' set but not used
Emitted by clang-cl
2022-10-08 23:41:07 +02:00
Anonymous Maarten 5c150ddc2f SDL_mslibc.c: fix unknown pragma ignored [-Wunknown-pragmas]
Emitted by clang-cl
2022-10-08 23:41:07 +02:00
Anonymous Maarten 85fd40fafd Fix -Wunused-const-variable warning when using clang-cl 2022-10-08 23:41:07 +02:00
Anonymous Maarten 2105c7f6ed SDL_thread.c: fix unused function SDL_FreeErrBuf when building without thread support (emscripten) 2022-10-08 23:41:07 +02:00
Sam Lantinga b18c361b0f Updated variable name for mouse coordinates in mouse wheel events 2022-10-08 13:18:00 -07:00
Sam Lantinga 4f318c904a Add cursor position to mouse wheel event (thanks @meyraud705!)
Fixes https://github.com/libsdl-org/SDL/pull/6351
2022-10-08 12:01:42 -07:00
Sam Lantinga 17b43b0fdd Don't try to create a semaphore for the mutex implementation if threads are disabled
Fixes https://github.com/libsdl-org/SDL/issues/6344
2022-10-08 09:32:09 -07:00
Sam Lantinga 33050fea39 Only open HID devices that might have a HIDAPI driver available
This prevents an OS prompt for every connected device when running on Android
2022-10-07 11:29:49 -07:00
Nicolas Cian 484d5fd6cf audio open: ensure 2 devices don't get the same id 2022-10-07 06:45:01 -07:00
Sam Lantinga fc720321b3 Fix rare deadlock when opening a HID controller on Android
Fixes https://github.com/libsdl-org/SDL/issues/6347
2022-10-06 18:23:07 -07:00
Sam Lantinga 689409fd97 Fixed the start button on the Nimbus+ controller on tvOS
Also updated mappings for Nintendo Switch controllers on tvOS, to reflect the lack of guide/menu button availability
2022-10-06 17:34:24 -07:00
Frank Praznik 914a65e098 wayland: Don't unset min/max values when entering fullscreen via a compositor event
If the compositor is entering fullscreen and hasn't removed any constraints itself, it's already too late at this point.  Remove the unnecessary call.

Restoring the limits when exiting fullscreen is still required, though, as they may have been removed when entering fullscreen via an SDL request.
2022-10-06 14:00:36 -04:00
Frank Praznik 69cf5fb0e1 wayland: Remove surface type helpers
These were remnants of a time before the surface type was explicitly stored, so they can be removed per the TODO note.
2022-10-06 14:00:36 -04:00
Frank Praznik c2b0c41c0a wayland: Set/unset the opaque regions on surfaces when transparency is toggled
Caches the SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY hint at init time and registers a callback, which is fired when the hint is changed during runtime and toggles the opaque region for existing surfaces.
2022-10-06 14:00:36 -04:00
Frank Praznik ea5958009c wayland: Set the damage buffer size when supported
The preferred method for setting the damage region on compositor protocol versions 4 and above is to use wl_surface.damage_buffer. Use this when available and only fall back to wl_surface.damage on older versions.

Bumps the highest supported version of wl_compositor to version 4.
2022-10-06 14:00:36 -04:00
Frank Praznik a8cb7bbe2f wayland: Add dedupe logic to window geometry configuration
Adds deduplication logic to ConfigureWindowGeometry() to avoid setting redundant backbuffer, viewport and surface opaque region dimensions. State is now only set when the window and/or backbuffer dimensions change.

This repurposes the viewport rect to always hold the actual size of the window, which can differ from the SDL size if things are being scaled. The SDL_Rect was removed in favor of two ints, as the x/y members of the struct were never used, so they just wasted space.

Since the internal variables always have the true window size, the width/height getter functions are no longer required and can be removed.
2022-10-06 14:00:36 -04:00
slime d2160c29d1 iOS: implement SDL_GetWindowSizeInPixels. 2022-10-05 18:39:18 -07:00
Sam Lantinga ddc3de602e Added mapping for PS5 controller over Bluetooth on Android 12
Tested on Pixel 3a
2022-10-05 16:24:05 -07:00
Sam Lantinga 81afb3e303 Need to swap endianness when extracting the CRC from game controller mappings 2022-10-05 16:18:42 -07:00
Andrey Filipenkov 92c71ae385 [iOS] respect initial status bar configuration when displaying the launch storyboard 2022-10-05 13:30:19 -07:00
Andrey Filipenkov 5b13136471 [UIKit] handle app lifecycle events in a custom object instead of AppDelegate
removes the need to call SDL counterparts manually when custom AppDelegate is used
2022-10-05 13:28:55 -07:00
daniel e41942e814 fix compilation error SDL_coreaudio mixing declarations and code 2022-10-04 21:04:45 -07:00
Sylvain fdef96e233
Android: remove "nativeSetComposingText" since it's not used anymore
(and it may fail registering at init if code is cleaned with proguard)
2022-10-04 12:08:09 +02:00
Sylvain eac3d6d3c0
SDL_video.c: fix variable 'i' may be uninitialized when used here "_this->name = bootstrap[i]->name;" 2022-10-04 10:46:42 +02:00
David Gow ad29875ee6 Wayland: Emulate mouse warp using relative mouse mode
Several games (including Source and GoldSrc games, and Bioshock
Infinite) attempt to "fake" relative mouse mode by repeatedly warping
the cursor to the centre of the screen. Since mouse warping is not
supported under Wayland, the viewport ends up "stuck" in a rectangular
area.

Detect this case (mouse warp while the cursor is not visible), and
enable relative mouse mode, which tracks the cursor position
independently, and so can Warp successfully.

This is behind the SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP hint, which
is enabled by default, unless the application enables relative mouse
mode itself using SDL_SetRelativeMouseMode(SDL_TRUE).

Note that there is a behavoural difference, in that relative mouse mode
typically doesn't take mouse accelleration into account, but the
repeated-warping technique does, so mouse movement can seem very slow
with this (unless the game has its own mouse accelleration option, such
as in Portal 2).
2022-10-03 19:11:18 -07:00
Sam Lantinga 9e3c4b9f32 Use the correct platform defines 2022-10-03 17:50:01 -07:00
Sam Lantinga 5291e5cb76 Added version checking to SDLActivity.java
Make sure the SDL java and C code match when updating SDL in a game.
Right now we're assuming that we only have to make sure release versions match. We can extend the version string with an interface version if we need more fine grained sanity checking.

Fixes https://github.com/libsdl-org/SDL/issues/1540
2022-10-03 17:36:17 -07:00
Sam Lantinga 3607f8316f Find out if a controller is wireless using WGI (thanks @DJm00n!)
Confirmed using an Xbox Series X controller over USB and Bluetooth

Fixes https://github.com/libsdl-org/SDL/issues/6322
2022-10-03 11:02:23 -07:00
Ryan C. Gordon 321ca1091d
opengles2: Texture names are GLuint, not GLenum. 2022-10-03 12:00:38 -04:00
Ryan C. Gordon 01c5554f0e
opengles2: SDL_GL_BindTexture() should bind all YUV textures.
This matches what the non-GLES OpenGL renderer does.

Fixes #6070.
2022-10-03 11:57:10 -04:00
slime f8f562dace iOS: remove dead pre-iOS 8 codepaths.
SDL hasn't supported those older iOS versions for a little while now.
2022-10-02 19:57:46 -07:00
slime bbeacd72c4 Fix some credit comments. 2022-10-02 19:32:36 -07:00
Sam Lantinga cf331ef3f9 Fixed build 2022-10-02 17:25:43 -07:00
Sam Lantinga 64ea6cefaf SDL_ResetHint() no longer clears the callbacks associated with a hint
Also added SDL_ResetHints() to reset all callbacks, and clarified that SDL_ClearHints() is just used for cleanup at shutdown.

Fixes https://github.com/libsdl-org/SDL/issues/6313
2022-10-02 17:17:31 -07:00
Sam Lantinga bd6afc2317 Fixed sensor axes in vertical mode 2022-10-02 10:15:39 -07:00
Sam Lantinga b4c25f5714 Remapped the side button and trigger as paddles for the mini-gamepad mode of the Joy-Cons
This is the only case where the mapping differs between right and left Joy-Cons in mini-gamepad mode. The left Joy-Con will have the left paddles and the right Joy-Con will have the right paddles. This facilitates co-op gameplay with individual actions while still using the normal mini-gamepad mode.

The paddles are used for this because conceptually they are more awkward to hit than the normal controls and they are in roughly the correct hand position.
2022-10-02 09:51:05 -07:00
Sam Lantinga f58a6506a1 Added paddle mapping for combined Joy-Cons 2022-10-02 09:50:27 -07:00
Sam Lantinga 37dfa2629b Added paddle mapping for combined Joy-Cons 2022-10-02 09:36:50 -07:00
Happy Harry 6c8bf3af4c
Add vertical mode for Nintendo Joy-Con (#6303)
* Added support for vertical mode for Joy-Con controllers
* Added the hint SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS for switching to this mode
* Added support for SL/SR buttons in combined/vertical mode and L/ZL/R/ZR buttons in mini-gamepad mode
2022-10-02 09:19:34 -07:00
Sam Lantinga 0672dc8d8f Fixed combined Joy-Cons after aa2e2f4843 (thanks @happyharryh!) 2022-10-02 08:50:11 -07:00
Aaron Barany 5e654a4bf2 Fixed Mac compile errors when OpenGL is disabled. 2022-10-01 18:09:11 -07:00
Sam Lantinga 28572702bf Properly backspace over text that was entered when autocorrect updates text with the iPhone on-screen keyboard 2022-09-30 17:25:57 -07:00
Ryan C. Gordon e6640ef2d4 coreaudio: Possibly fixed another shutdown race condition.
Reference Issue #6159.
2022-09-30 14:53:49 -04:00
Sam Clegg cfab203f91 emscripten: Remove use of EM_ASM from SDL_timer code.
Instead use the native emscripten timer API.

See https://github.com/emscripten-core/emscripten/issues/17941
2022-09-30 13:41:41 -04:00
Charlie Birks 90e7d05c3b
emscripten: drop CanvasPixelArray support from cursor 2022-09-30 16:33:10 +01:00
Charlie Birks 0c6d5b3ac8
emscripten: drop CanvasPixelArray support from framebuffer 2022-09-30 16:28:57 +01:00
Jarod Hillman 40893821f2 coreaudio: Add support for SDL_GetDefaultAudioInfo (#6277)
Co-authored-by: Ethan Lee <flibitijibibo@gmail.com>
Co-authored-by: Ozkan Sezer <sezeroz@gmail.com>
2022-09-29 10:33:07 -04:00
zll 69bbe4ce7d Fix memory leak in VITA_GXM_CreateRenderer 2022-09-29 14:32:56 +03:00
Frank Praznik e17f0c283c wayland: Call the Wayland hide/show functions directly when changing decoration modes
Calling SDL_HideWindow() to destroy the window is a NOP if the SDL_WINDOW_SHOWN flag was never set. Bypass it and call the Wayland-specific function directly to ensure that the window is always destroyed before switching from server-side to client-side decorations, even if it hasn't been shown yet.

Likewise, call Wayland_ShowWindow() directly when the window isn't explicitly hidden to ensure that it is always recreated since the SDL_WINDOW_SHOWN flag won't be cleared, which, when set, renders SDL_ShowWindow() a NOP.
2022-09-28 13:21:10 -07:00
Ozkan Sezer 8bcbdc706c hidapi, libusb: backport read_thread indefinite loop fix from mainstream
Mainstream commit:
5ce9051e2f
2022-09-28 08:26:08 -07:00
Ludovico de Nittis 379d478055 dbus: guard against uninitialized D-Bus
Before calling any D-Bus related methods we should first ensure that
they
were correctly loaded.

In the event where `LoadDBUSLibrary()` was not able to load the D-Bus
library, we should just return early, signalling with SDL_FALSE that we
were unable to inhibit the Screensaver.

Helps: https://github.com/ValveSoftware/steam-for-linux/issues/8815

Signed-off-by: Ludovico de Nittis <ludovico.denittis@collabora.com>
2022-09-28 10:29:55 -04:00
Eric Curtin 57b5c9107e kmsdrm: only negative devindex's are not allowed
ad874536 removed an unnecessary limit as we *can* have a devindex
greater than 99, this error message does not reflect the support for
values greater than 99.
2022-09-28 10:29:02 -04:00
Ryan C. Gordon f6565c329b
coreaudio: Remove redundant variable. 2022-09-28 09:27:45 -04:00
Ryan C. Gordon 411582c710
coreaudio: Don't crash on shutdown in a race condition.
Fixed #6159.
2022-09-28 09:22:17 -04:00
Sam Lantinga bb74af1e11 Allow including SDL_uikit_main.c in Apple multi-platform builds
This file just won't do anything on macOS
2022-09-28 00:01:54 -07:00
Ryan C. Gordon a2c5757356
video: check for "software" with SDL_HINT_FRAMEBUFFER_ACCELERATION.
We check for this value elsewhere but not in SDL_CreateWindowFramebuffer.
2022-09-27 22:04:06 -04:00
Sam Lantinga 7becbd7d42 Add joystick locking for controller notifications on iOS/tvOS
Fixes https://github.com/libsdl-org/SDL/issues/6288
2022-09-27 12:58:16 -07:00
Sam Lantinga 18eb319adc Added sensor timestamp for Nintendo Switch controllers 2022-09-27 12:34:03 -07:00
Sam Lantinga 5e3a40309e Added sensor timestamp for Steam Controllers 2022-09-27 11:36:01 -07:00
Ryan C. Gordon 57b20e7b9e cocoa: Fix new windows setting SDL_WINDOW_BORDERLESS flag incorrectly.
Fixes #6172.
2022-09-27 14:23:42 -04:00
Ozkan Sezer 77c7836c26 fix vita build failure after commit 2c518747b 2022-09-27 20:21:24 +03:00
Sam Lantinga 2c518747b9 Added microsecond timestamp to sensor values for PS4 and PS5 controllers using the HIDAPI driver 2022-09-27 09:56:49 -07:00
Sylvain d71df6448b
Fixed bug #6287 - SDL_FillRect failed for SDL_Surface with BitsPerPixel == 4 2022-09-27 10:21:15 +02:00
Sam Lantinga 1e1be0b954 Updated logic to match between PS4/PS5/Switch controllers 2022-09-26 23:00:58 -07:00
Sam Lantinga 8c40a6b0c7 Drop PS5 Bluetooth reports that fail CRC check 2022-09-26 22:47:21 -07:00
Sam Lantinga db075ff3ba Removed unused variable 2022-09-26 22:45:01 -07:00
Sam Lantinga 2ccdd0667a Handle DS4 dongle controller connection and disconnection
We also drop Bluetooth packets that fail the CRC check, as recommended by Sony
2022-09-26 22:34:33 -07:00
Sam Lantinga 18046b9aa3 Fixed crash with a NULL serial number 2022-09-26 20:53:50 -07:00
Sam Lantinga 67fa6a935f Don't wait a long time for zombie Bluetooth controllers
If a Nintendo Switch Pro controller is turned off, it will leave the controller connected in Windows, but not responding to reports. Don't wait a really long time trying to get information from a controller in this state.
2022-09-26 20:49:26 -07:00
Sam Lantinga 67db8a9103 Wait for input before reconnecting a Bluetooth device
On Windows, the Bluetooth device can remain in a connected state if the controller just shut down. It won't return any errors, but it also won't generate any input reports in this state, so wait until we know for sure that the Bluetooth controller is sending data before letting the application know it's available.
2022-09-26 20:43:46 -07:00
Cameron Gutman 71fb91f7e4 evdev: Fix build with libudev and joystick subsystem disabled 2022-09-26 21:38:09 -05:00
Sam Lantinga 2cc9176137 Removed debug logging 2022-09-26 18:52:26 -07:00
Sam Lantinga 2c98c8af01 Use better default values for Switch controller calibration 2022-09-26 18:39:47 -07:00
Sam Lantinga a205c5e26c Use separate extents for simple and advanced reports 2022-09-26 18:39:47 -07:00
Sam Lantinga 4e375996d3 Added a hint to return the version in the old format
Workaround for https://github.com/libsdl-org/SDL/issues/6177 for games that can't be updated.
2022-09-26 17:06:18 -07:00
Sam Lantinga b7fddb4c0e Minor tweaks 2022-09-26 14:39:51 -07:00
Sam Lantinga 39adcc0a6b Prefer USB input over Bluetooth for PS5/PS5/Switch controllers
Nintendo Switch controllers will automatically turn off Bluetooth when connected over USB, but this takes care of that a little more quickly.

PS4 and PS5 controllers will happily send reports over both Bluetooth and USB, so we'll prefer USB if connected and switch back to Bluetooth if USB is disconnected.
2022-09-26 14:20:34 -07:00
Sam Lantinga 17d7d03adf Added detection of the joystick type for third party PS4 and PS5 controllers 2022-09-26 08:12:35 -07:00
Sam Lantinga 8d2cb1555e Added an entry for the ZEROPLUS P4 Wired Gamepad 2022-09-23 16:56:24 -07:00
Sam Lantinga cb063db64f Moved XInputPS4 controllers into the PS4 controller section 2022-09-23 16:52:37 -07:00
Sam Lantinga 5b3b7e6e7c Separated PS4/PS5 effects support into individual capabilities 2022-09-23 16:46:36 -07:00
Sam Lantinga 33619aa2e9 Added support for the ZEROPLUS P4 Wired Gamepad to the HIDAPI driver 2022-09-23 16:38:15 -07:00
Sam Lantinga e888c99fa6 Fixed the entry for the Nacon PS4 Compact Controller 2022-09-23 16:26:41 -07:00
Sam Lantinga 4ea64fee9f Fixed manufacturer/product name deduplication for the Razer Raiju Tournament Edition controller 2022-09-23 15:29:00 -07:00
Sam Lantinga 56b91ea720 Fixed feature detection for the Razer Raiju Tournament Edition controller 2022-09-23 15:29:00 -07:00
Frank Praznik 4a06cc0f75 wayland: Apply modifier changes to the text of repeated keys
The text component of a repeated keystroke is initially set when a key is first pressed and the cached value remains static until the repeated key is released and another repeatable key is pressed. If the state of a modifier such as shift or capslock is changed while a key is being repeated, the text emitted will not have the modifier applied to it until the repeated key is released and pressed again.

Update the text to be repeated by a key if a modifier is changed while a key is actively being repeated.
2022-09-23 13:40:51 -04:00
Frank Praznik 467c82c771 wayland: Add mappings for the Escape and NumLock keys
The XKB keysym to SDL keycode mappings were missing for the Escape and NumLock keys, which prevented them from being remapped. Add them to the table so that the remapping of these keys will work.
2022-09-23 10:30:14 -07:00
Sam Lantinga 34f928abb7 Generate the correct name for ASTRO Gaming controllers
Manufacturer "ASTRO Gaming" and product "ASTRO C40" turns into "ASTRO C40"
2022-09-23 09:26:18 -07:00
Sam Lantinga 6ddef7c234 Generate the correct name for Qanba and Mad Catz controllers 2022-09-23 09:20:27 -07:00
Sam Lantinga c2ae2ccc32 Added feature support for the Razer Raiju to the HIDAPI driver 2022-09-23 09:11:12 -07:00
UnknownShadow200 5ea9886bcf haiku: Fix when screen color depth was 24 bits, SDL_GetWindowSurface would always fail with 'Unknown pixel format' error
Note that returning SDL_PIXELFORMAT_BGR24 instead of SDL_PIXELFORMAT_RGB24 seems necessary, otherwise when running with SDL_ACCELERATION=0, the red and blue channels of the window appeared swapped.
Note that when running with acceleration enabled, red and blue channel swapping does not happen regardless of whether SDL_PIXEL_FORMAT_RGB24 or SDL_PIXEL_FORMAT_BGR24 is returned.

For good measure, I also tested running with acceleration disabled in both 15 and 16 bit color depths, but red and blue channel swapping did not occur
2022-09-23 02:51:00 -07:00
Sam Lantinga 51fefd1c35 Added support for third party PS3 controllers to the HIDAPI driver 2022-09-23 02:39:35 -07:00
Sam Lantinga 5b4c10fc7b Return true from IsSupportedDevice if it's a device that we _might_ support
This forces an update of the device list so we have the correct state when we check to see whether a device is being handled by HIDAPI
2022-09-23 02:36:53 -07:00
Sam Lantinga 1d34a5249d Fixed shadowed variable warning 2022-09-23 00:38:23 -07:00
Sam Lantinga 010d3e6442 Fixed function prototype mismatch 2022-09-23 00:36:46 -07:00
Sam Lantinga b7940c29cc Allow HIDAPI controllers to override the default joystick type 2022-09-23 00:15:40 -07:00
Sam Lantinga 899a1e7cba Skip PS4/PS5 probe message if we already know it's a supported controller 2022-09-22 23:54:26 -07:00
Sam Lantinga fa2063fb44 Improved detection of third party PS4 and PS5 controllers 2022-09-22 23:42:25 -07:00
Sam Lantinga aa2e2f4843 Make sure HID devices can be opened before making them available to the application
This prevents a number of issues where devices are enumerated but not actually able to be opened, like https://github.com/libsdl-org/SDL/issues/5781.

We currently leave the devices open, allowing us to more easily do controller feature detection, protocol negotiation, detect dropped Bluetooth connections, etc. with the expectation that the application is likely to open the controllers shortly.
2022-09-22 18:27:38 -07:00
Sam Lantinga 2857e3c748 Added an entry for the Mad Catz FightStick TE 2+ PS3 2022-09-22 15:53:32 -07:00
Sam Lantinga 6812f1b5d7 Fixed the entry for the HORI Fighting Commander 4 in PS4 mode 2022-09-22 15:16:34 -07:00
Sam Lantinga 99e85cc27b Accidentally reverted 172865ff13 2022-09-22 10:10:20 -07:00
Sam Lantinga 6cbdc66650 Fixed use of uninitialized 'size' variable (thanks @ozkan!) 2022-09-22 09:05:06 -07:00
Sam Lantinga 0c4594ac72 Improved PS4 and PS5 third-party controller feature detection 2022-09-22 06:45:46 -07:00
Frank Praznik 399cb2f0de wayland: Only clear the key repeat flag when the repeated key is released
If multiple keys were simultaneously depressed and one was being repeated, the repeat flag was being cleared when any of the pressed keys were released, even if the released key wasn't the one being repeated.

This tracks the key currently being repeated and only clears the repeat flag when the particular key being repeated is released.
2022-09-21 14:26:13 -07:00
Sam Lantinga eb25f6c912 Fixed Xbox platform name, courtesy of @walbourn 2022-09-21 14:22:38 -07:00
zhailiangliang 00b67f5572 Fix potential memory leak in GLES_CreateTexture 2022-09-20 20:14:01 -07:00
past-due 301912a5b9 Fix: Use WIN_ClientPointToSDL for converting additional mouse coordinates 2022-09-21 03:40:50 +03:00
Ivan Epifanov 08a331847b Vita: fix controls on PSTV with opened IME 2022-09-20 11:03:34 -07:00
Sam Lantinga dc2a682a82 Use the right kind of 0 2022-09-20 09:22:43 -07:00
Sam Lantinga 2461930601 Fixed build on RISC OS 2022-09-20 09:16:10 -07:00
Ozkan Sezer 887ae0c6eb fix build failure after commit 2a8d00634d if strtod isn't available. 2022-09-20 18:20:00 +03:00
Sam Lantinga 2a8d00634d Fixed scanning a negative number as an unsigned value
e.g. sscanf("-1", "%zu", &v)

Thanks to @sezero for the test case
2022-09-20 07:25:49 -07:00
Ozkan Sezer 3f5c46663e SDL_vsscanf: fix an uninitialized warning 2022-09-20 11:56:40 +03:00
Sam Lantinga 216e3f10bb Implemented size_t format specifiers for SDL_snprintf() and SDL_sscanf()
Fixes https://github.com/libsdl-org/SDL/issues/6264
2022-09-19 15:42:11 -07:00
Sam Lantinga 101306edcf Do case insensitive matching on test cases 2022-09-19 14:37:10 -07:00
Cameron Cawley 8598f05b47 Support loading 2bpp .bmp files 2022-09-17 16:50:45 -07:00
Cameron Cawley 1f7a7fd931 haiku: Combine HAIKU_ColorSpaceToBitsPerPixel and HAIKU_BPPToSDLPxFormat 2022-09-17 18:13:08 -04:00
Cameron Cawley 43fc6d593f Fix incorrect return value in X11_GetPixelFormatFromVisualInfo 2022-09-17 13:17:42 -07:00
Ivan Epifanov 7115ceb775 Vita: restore sceClibMemcmp 2022-09-17 10:12:46 -07:00
Sam Lantinga 2e9f5b5989 Added support for the HORI Fighting Commander OCTA (Xbox Series X and PS versions) 2022-09-16 15:41:35 -07:00
Ozkan Sezer 5fba31f6fb SDL_HasPrimarySelectionText: fix -Wunreachable-code-return warning. 2022-09-17 00:51:00 +03:00
Sam Lantinga efe01faa8e Replaced Blit4to4CopyAlpha() with optimized SDL_BlitCopy()
Fixes https://github.com/libsdl-org/SDL/issues/6241
2022-09-16 10:09:13 -07:00
Ozkan Sezer c0baa6bf5e move SDL_windowstaskdialog.h contents into SDL_windowsmessagebox.c
Silences clang -Wpragma warnings:

D:/a/SDL/SDL/src/video/windows/SDL_windowstaskdialog.h:21:10: warning: the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]
#include <pshpack1.h>
         ^
D:/a/_temp/msys64/clang64/include/pshpack1.h:7:9: note: previous '#pragma pack' directive that modifies alignment is here
#pragma pack(push,1)
        ^

In file included from D:/a/SDL/SDL/src/video/windows/SDL_windowsmessagebox.c:35:

D:/a/SDL/SDL/src/video/windows/SDL_windowstaskdialog.h:156:10: warning: the current #pragma pack alignment value is modified in the included file [-Wpragma-pack]

#include <poppack.h>

         ^

note: previous '#pragma pack' directive that modifies alignment is here

2 warnings generated.

Closes: https://github.com/libsdl-org/SDL/issues/6240
2022-09-16 20:03:50 +03:00
Sam Lantinga 82b40f097b Fixed runaway CPU usage in the metal renderer when the window is minimized 2022-09-16 09:55:20 -07:00
Sam Lantinga 5892ed4373 Fixed Xcode warnings on macOS 2022-09-16 09:44:39 -07:00
Sam Lantinga 910d499c54 Fixed comment typo 2022-09-16 09:19:20 -07:00
Sam Lantinga 172865ff13 Don't enumerate HID devices on macOS if we don't have input monitoring permissions
Unfortunately the only way to detect this is to actually try opening a device, so we wait until the application tries, and then stop enumerating afterwards.

Fixes https://github.com/libsdl-org/SDL/issues/5781
2022-09-16 09:16:18 -07:00
Sam Lantinga eb046958da Fixed build warning 2022-09-16 08:19:45 -07:00
Sam Lantinga e2753e19e8 Calculate simulated vsync interval based on display refresh rate 2022-09-16 07:44:40 -07:00
Sam Lantinga 208964f038 Reset the simulated vsync presentation timeline if it's been too long since the last present 2022-09-16 07:44:40 -07:00
Sam Lantinga 1663cb4196 Reset simulated presentation timeline when vsync status changes 2022-09-16 07:44:40 -07:00
Sam Lantinga d744aafb05 Added support for simulated vsync in the renderer
This kicks in if the platform doesn't support vsync directly, or if the present fails for some reason (e.g. minimized on some platforms)

Fixes https://github.com/libsdl-org/SDL/issues/5134
2022-09-16 07:44:40 -07:00
Ozkan Sezer 339f7a2f6b SDL_windows.h: guard WIN32_LEAN_AND_MEAN and STRICT macro defines.
also define them as 1, instead of empty.
Reference issue: https://github.com/libsdl-org/SDL/issues/6239
2022-09-16 17:28:20 +03:00
Ozkan Sezer c23fb235c8 SDL_render_d3d12.c: Fix uninitialized warning for CreateEventExFunc 2022-09-16 17:20:56 +03:00
Ozkan Sezer d86cb8ec9e SDL_offscreenwindow.c: swap include order of SDL_egl_c.h/SDL_sysvideo.h
Fixes redefinition warnings from windows builds.
Reference issue: https://github.com/libsdl-org/SDL/issues/6239
2022-09-16 17:05:02 +03:00
Sam Lantinga 5bc85d6788 Only advertise the SDL_PIXELFORMAT_EXTERNAL_OES format if we can build the shader for it 2022-09-16 06:15:45 -07:00
Sam Lantinga 6de15ffcd6 Fixed building offscreen video driver without EGL support
Also did miscellaneous style cleanup for consistency with other code
2022-09-15 12:04:08 -07:00
Sam Lantinga 2970710b5d Pretty print shaders for debugging purposes 2022-09-15 07:41:29 -07:00
Sam Lantinga bc57d3e35c Fixed OpenGL ES shader compilation on Linux 2022-09-15 06:57:41 -07:00
Sam Lantinga 8a15a738f3 Fixed uninitialized variable warning 2022-09-15 06:21:19 -07:00
DS ac5b9bc4ee
Add support for X11 primary selection (#6132)
X11 has a so-called primary selection, which you can use by marking text and middle-clicking elsewhere to copy the marked text.

There are 3 new API functions in `SDL_clipboard.h`, which work exactly like their clipboard equivalents.

## Test Instructions

* Run the tests (just a copy of the clipboard tests): `$ ./test/testautomation --filter Clipboard`
* Build and run this small application:
<details>
```C
#include <SDL.h>
#include <unistd.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void print_error(const char *where)
{
	const char *errstr = SDL_GetError();
	if (errstr == NULL || errstr[0] == '\0')
		return;
	fprintf(stderr, "SDL Error after '%s': %s\n", where, errstr);
	SDL_ClearError();
}

int main()
{
	char text_buf[256];

	srand(time(NULL));

	SDL_Init(SDL_INIT_VIDEO);
	print_error("SDL_INIT()");
	SDL_Window *window = SDL_CreateWindow("Primary Selection Test", SDL_WINDOWPOS_UNDEFINED,
			SDL_WINDOWPOS_UNDEFINED, 400, 400, SDL_WINDOW_SHOWN);
	print_error("SDL_CreateWindow()");
	SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
	print_error("SDL_CreateRenderer()");

	bool quit = false;
	unsigned int do_render = 0;
	while (!quit) {
		SDL_Event event;
		while (SDL_PollEvent(&event)) {
			print_error("SDL_PollEvent()");
			switch (event.type) {
			case SDL_QUIT: {
				quit = true;
				break;
			} case SDL_KEYDOWN: {
				switch (event.key.keysym.sym) {
				case SDLK_ESCAPE:
				case SDLK_q:
					quit = true;
					break;
				case SDLK_c:
					snprintf(text_buf, sizeof(text_buf), "foo%d", rand());
					SDL_SetClipboardText(text_buf);
					print_error("SDL_SetClipboardText()");
					printf("clipboard: set_to=\"%s\"\n", text_buf);
					break;
				case SDLK_v: {
					printf("clipboard: has=%d, ", SDL_HasClipboardText());
					print_error("SDL_HasClipboardText()");
					char *text = SDL_GetClipboardText();
					print_error("SDL_GetClipboardText()");
					printf("text=\"%s\"\n", text);
					SDL_free(text);
					break;
				} case SDLK_d:
					snprintf(text_buf, sizeof(text_buf), "bar%d", rand());
					SDL_SetPrimarySelectionText(text_buf);
					print_error("SDL_SetPrimarySelectionText()");
					printf("primselec: set_to=\"%s\"\n", text_buf);
					break;
				case SDLK_f: {
					printf("primselec: has=%d, ", SDL_HasPrimarySelectionText());
					print_error("SDL_HasPrimarySelectionText()");
					char *text = SDL_GetPrimarySelectionText();
					print_error("SDL_GetPrimarySelectionText()");
					printf("text=\"%s\"\n", text);
					SDL_free(text);
					break;
				} default:
					break;
				}
				break;
			} default: {
				break;
			}}
		}
		// create less noise with WAYLAND_DEBUG=1
		if (do_render == 0) {
			SDL_RenderPresent(renderer);
			print_error("SDL_RenderPresent()");
		}
		do_render += 1;
		usleep(12000);
	}

	SDL_DestroyRenderer(renderer);
	SDL_DestroyWindow(window);
	SDL_Quit();
	print_error("quit");
	return 0;
}
```
</details>

* Use c,v,d,f to get and set the clipboard and primary selection.
* Mark text and middle-click also in other applications.
* For wayland under x:
  * `$ mutter --wayland --no-x11 --nested`
  * `$ XDG_SESSION_TYPE=wayland SDL_VIDEODRIVER=wayland ./<path_to_test_appl_binary>`
2022-09-14 09:28:35 -07:00
Sam Lantinga 72fe6cc8f1 Updated to the latest version of OpenGL and Vulkan headers from the Khronos registry
Fixes https://github.com/libsdl-org/SDL/issues/6193
2022-09-14 09:14:47 -07:00
Sam Lantinga b5102a551b Fixed OpenGLES shaders failing after renderer has been created
Cache all the shaders up front, so we can verify that they won't silently fail at runtime.

If compiling the fragment shaders with the precision hint fails, try again without specifying precision.

Fixes https://github.com/libsdl-org/SDL/issues/6166
Fixes https://github.com/libsdl-org/SDL/issues/6174
2022-09-14 08:03:46 -07:00
xeonmc 228b9fb517
Update SDL_windowswindow.c (#6225)
Clip rectangle set to int(left+width/2) , int(top+height/2) , int(left+width/2)+1 , int(top+height/2)+1
a 1x1 box
On even-valued resolution, cursor is stable at bottom-right central pixel
On odd-valued resolution, cursor is stable at exact central pixel.
this is the desired behaviour
2022-09-13 12:43:16 -07:00
Frank Praznik 929d5b80c6 wayland: Use the backbuffer size for determining if a resize event is required
In some cases, a backbuffer size update may not be accompanied by a resize event if the window size and/or scale were updated before the new backbuffer size was recomputed. Instead of the scale, use the old/new backbuffer sizes to determine if a resize event is required so that a backbuffer size change will always be followed by a resize event.
2022-09-13 10:54:35 -07:00
Sam Lantinga 4f1b408a72 Fixed button mapping for PS5 controllers 2022-09-12 18:19:02 -07:00
Amir 7f415ce587 android: fix some compiler warnings 2022-09-12 10:06:08 -07:00
Frank Praznik edfb00c25e wayland: Only commit on move if the display was changed
Only commit on a move event if the display was changed for a fullscreen window and the compositor has returned bad dimensions.
2022-09-09 17:14:49 -07:00
Frank Praznik 97a5e74449 wayland: Remove duplicate code
Wayland_SetWindowSize() can be simplified with the common CommitWindowGeometry() function.
2022-09-09 08:17:27 -07:00
Frank Praznik 78f843f741 wayland: Remove unnecessary function parameter
SetFullscreen() is never called in a case where the commit parameter is false anymore, so the parameter is unnecessary.
2022-09-09 08:17:27 -07:00
Frank Praznik 69e4c770f3 video: Make the mode switching function a NOP if mode switching is disabled
Instead of wrapping individual calls to SDL_SetDisplayModeForDisplay(), just check the flag in the function itself and make it a NOP that cannot fail if the flag is set. Silences some errant "SDL video driver doesn't support changing display mode" log errors.
2022-09-09 08:17:27 -07:00
Frank Praznik 768b6728bd wayland: Compare against the old scale when resizing
Compare against the old scale instead of the new or the conditional will always be true.
2022-09-09 08:17:27 -07:00
Frank Praznik 07aea476ba wayland: Ignore content sizes from libdecor when hiding a window
When hiding a window, libdecor can report bogus content region sizes that are +/- the height of the title bar. Ignore any size values from libdecor when hiding a window, or the size may be incorrect when restored.
2022-09-09 08:17:27 -07:00
Frank Praznik 6de12b4a0d wayland: Update the internal state when the compositor moves a fullscreen window
The compositor can arbitrarily move windows between displays, including fullscreen windows. Update the internal state when a fullscreen window is moved so the internal SDL state accurately reflects the window location, and resize the window to fit the new display.

This also fixes an edge case where the compositor can make a window fullscreen on a different display than SDL thinks it will be on (usually when a window is made fullscreen by the compositor while straddling multiple displays), which can result in the window being incorrectly sized.
2022-09-09 08:17:27 -07:00
Frank Praznik a7d345958d wayland: Trigger a commit on fullscreen update
If additional fullscreen requests are received when the window is already fullscreen, it is typically due to the fullscreen flags or emulated video mode being changed. A commit must be explicitly triggered or the requested changes won't take effect until some other event, such as a resize or focus change, causes the changes to be committed.
2022-09-09 08:17:27 -07:00
Frank Praznik 707b561f97 wayland: Enable compositor fullscreen toggling
The compositor can toggle the fullscreen state (via a hotkey or otherwise), so the internal SDL state must be updated accordingly when it does.

When toggling fullscreen via the compositor, SDL will attempt to use the last fullscreen flag explicitly set. If no flag was previously set, SDL_WINDOW_FULLSCREEN will be used if a window video mode was set, otherwise SDL_WINDOW_FULLSCREEN_DESKTOP will be used. If the previous flag was SDL_WINDOW_FULLSCREEN and the window video mode was cleared, it will revert to SDL_WINDOW_FULLSCREEN_DESKTOP.
2022-09-09 08:17:27 -07:00
Frank Praznik 31979e2d98 wayland: Add missing static qualifiers 2022-09-09 08:17:27 -07:00
Taiko2k 1c88a0522f Update Wayland cursors to match X11 cursors 2022-09-09 08:59:37 -04:00
Sam Lantinga 9f4baeea53 Clean up thread local storage when quitting SDL
SDL_Quit() should be the last SDL API that you call before exiting your application, and is intended to clean up all internal state.

If real-life applications are relying on thread-local storage after SDL_Quit() we could potentially add a hint to control this behavior.

Fixes https://github.com/libsdl-org/SDL/issues/6200
2022-09-08 20:08:20 -07:00
Sam Lantinga a3900a751e Lock joysticks when removing a controller on the WGI thread 2022-09-08 13:59:25 -07:00
Sam Lantinga 12413ab31f Lock joysticks while attaching a virtual one 2022-09-08 13:33:21 -07:00
Ozkan Sezer 787cd580ee silence unused function warning for SDL_endswith() on non-linux. 2022-09-08 23:00:04 +03:00
Sam Lantinga 4071573241 Don't try to second guess DS4Windows, let it remap things as expected.
DS4Windows can create both emulated Xbox and emulated PS4 controllers, and we don't know which the user has it doing, so don't try to second guess it, just let it do it's thing. Users should follow the remapping software recommendations on when to enable/disable it for various situations.

Fixes https://github.com/libsdl-org/SDL/issues/6167
2022-09-08 11:50:56 -07:00
Sam Lantinga a0f169603d Fixed the CRC in the mappings for PS2, PSP, and Vita controllers 2022-09-08 09:53:51 -07:00
Sylvain 90a480a100
Fixed bug #6199 - Broken clip behaviour on a render target (metal) 2022-09-08 05:44:39 +02:00
Sam Lantinga 0ad8d9d292 SDL_IsXInputDevice() shouldn't return true if XInput isn't enabled 2022-09-07 15:31:24 -07:00
Sam Lantinga d93f9a778b The new Wii Remote shares the same VID/PID as the Wii U Pro controller 2022-09-07 12:33:43 -07:00
Sam Lantinga f398d8a424 Note that the Logitech Extreme 3D is a flight stick 2022-09-07 11:53:13 -07:00
Sam Lantinga 0a05b281f2 Make sure we hold the joystick lock when updating the device state while opening it 2022-09-07 11:51:51 -07:00
Sam Lantinga d4e0d27c1c Added Wii Remote controller mappings for Linux 2022-09-07 02:02:04 -07:00
Sam Lantinga 42cf6d6c56 Don't treat the Wii extension controls as a separate game controller on Linux 2022-09-07 01:41:11 -07:00
Sam Lantinga 87f8b6ff0f Don't mess with the state of the Motion Plus extension on Linux 2022-09-07 01:21:01 -07:00
Sam Lantinga c28da4892a Fixed build 2022-09-07 00:52:40 -07:00
Sam Lantinga 638452ecf7 Assert that continuous reporting is enabled, so input timeout is a reliable way of detecting Bluetooth connection problems. 2022-09-07 00:44:13 -07:00
Sam Lantinga 8dfe0e4beb Removed checks not needed for the Wii U Pro Controller 2022-09-07 00:41:29 -07:00
Sam Lantinga 4018f35ef2 Added left and right sensors for Nintendo Joy-Con and Wii controllers 2022-09-07 00:00:27 -07:00
Sam Lantinga 30f55a5d59 Added initial support for the Wii Motion Plus extension
This adds a gyro sensor to the Wii controller, and is enabled in standalone and nunchuk mode
2022-09-06 23:33:55 -07:00
Sam Lantinga 29f4a5ba0e Add GLES2 shader prologue infrastructure. (by @eloj)
There is supposedly an OpenGL ES2 target that does not support precision specifiers. However, the existing logic to detect this is currently broken in two ways:

1) There's a typo of the `#ifdef` as `#if`.
2) Checking for `GL_FRAGMENT_PRECISION_HIGH` can not be the correct way to detect this platform. Other targets, including some desktops, will also not have this defined (for various reasons).

Because some of the shader code is missing precision specifiers, and because a default is ONLY provided if `GL_FRAGMENT_PRECISION_HIGH` is set, these other targets break.

Instead of 'hard-coding' the prologue string into shaders in the C source, use our ability to provide a list of strings to `glShaderSource` instead, leaving the determination to run-time.

This commit closes https://github.com/libsdl-org/SDL/pull/6182
2022-09-06 15:55:27 -07:00
Sam Lantinga 4fd6bba257 Refactored for similarity to surrounding code 2022-09-06 12:29:42 -07:00
Ozkan Sezer 5ffede35d9 Fix https://github.com/libsdl-org/SDL/issues/6191 2022-09-06 19:56:29 +03:00
Cameron Cawley 10e1ef00e2 Fix compatibility with Windows XP 2022-09-06 08:55:35 -04:00
Sam Lantinga d1fea10c0f Added support for the accelerometer in the Wii Remote 2022-09-05 16:08:15 -07:00
Sam Lantinga a61b823da8 Added support for the Wii Remote with the Classic Controller Pro extension
Also changed event order to: buttons, triggers, axes, for consistency with other drivers
2022-09-05 14:32:45 -07:00
Ozkan Sezer 612a86ebad HIDAPI_DriverPS3_UpdateEffects: kill bad use of & operator on effects[] 2022-09-05 20:47:00 +03:00
Sam Lantinga b00e1b1b62 Added support for a ShanWan PS2 -> PS3 USB converter to the HIDAPI driver 2022-09-05 10:01:51 -07:00
Cameron Cawley fd93f817ba Assume that stdint.h is available on Windows with compilers other than MSVC <= 2008 2022-09-05 09:01:31 -07:00
Sylvain 03485db0a3
Android: understand HAL_PIXEL_FORMAT_BGR_565 as a returned value from ANativeWindow_getFormat() (see #6016) 2022-09-03 23:40:14 +02:00
Sam Lantinga 1b4e08b89e Added an entry for the Hori Fighting Stick mini 4 kai
This is a PS3/PS4 arcade stick which becomes an Xbox 360 controller on PC
2022-09-02 17:04:53 -07:00
Sam Lantinga 47f2373dc1 Added locking for Android joystick events 2022-09-02 16:52:55 -07:00
Sam Lantinga e8f6b7503a Added mappings for the ASUS ROG Kunai 3 Gamepad 2022-09-02 15:06:13 -07:00
Sam Lantinga 5770e87cb2 Fixed regression handling touchpad input with PS5 controllers using the original shipping firmware 2022-09-02 13:57:59 -07:00
Sam Lantinga 253f6a913d Variable renaming for consistency 2022-09-02 11:49:06 -07:00
Sam Lantinga 5002624e8a Fixed crash when extension controllers are hotplugged 2022-09-02 11:41:19 -07:00
Sam Lantinga 7df571ffc6 HIDAPI_DumpPacket() takes a const memory pointer 2022-09-02 11:37:16 -07:00
Sam Lantinga b6d23d21db Fixed interactions with the Linux Wiimote driver 2022-09-02 11:21:51 -07:00
Ozkan Sezer 0c984360d1 SDL_hidapi_wii.c: fix a -Wshadow warning 2022-09-02 20:02:56 +03:00
Sam Lantinga b6b3fb0023 This was intended to be Uint8 2022-09-02 09:59:32 -07:00
Ozkan Sezer 5be157b3a2 SDL_hidapi_wii.c: fix -Wpointer-sign warnings 2022-09-02 19:33:40 +03:00
Sam Lantinga 54356f41a9 Wii: fixed trigger axis reporting for the Wii U Pro Controller 2022-09-02 09:03:44 -07:00
Sam Lantinga a35642fa3e Wii: don't bother reading the extension type for the Wii U Pro controller, we already know what it is 2022-09-02 08:58:52 -07:00
Sam Lantinga c3ecb9d099 Wii: re-request the status if we get a communication error 2022-09-02 08:58:52 -07:00
Ozkan Sezer 0c24b46e9f SDL_hidapi_wii.c: fix build in c89 mode. 2022-09-02 18:55:00 +03:00
Sam Lantinga 9874fc4e6a Reconnect as a different controller if the Wii extension hardware changes 2022-09-02 08:47:15 -07:00
Sam Lantinga 5f3cb54972 Updated Wii support with @tellowkrinkle's changes in 2f288e9d5b 2022-09-02 08:28:28 -07:00