Commit graph

8294 commits

Author SHA1 Message Date
Sam Lantinga
843572d993 Don't mark autorelease keys as virtual
Also make sure we time out the hardware_timestamp even if SDL_HardwareKeyboardKeyPressed() isn't called.
2023-08-02 01:32:13 -07:00
Sam Lantinga
648de4f9b8 Fixed duplicate key press/release events on iOS
When a hardware keyboard is attached, it can take over 100 ms for the keyboard event to generate text input. In that case we want to record that we recently received a keyboard event so we don't synthesize duplicate virtual key press/release events for the input text.
2023-08-02 01:08:00 -07:00
Sam Lantinga
a8abe612ed Only pass keypresses up the responder chain when text input is active
This is another attempt to make sure we don't cause beeps from unhandled key presses while still allowing full text input functionalty.

If this isn't selective enough, we might need to go up the responder chain to see what's going to handle the event before passing it along.

Fixes https://github.com/libsdl-org/SDL/pull/6962
2023-08-02 00:19:57 -07:00
Sam Lantinga
c3288d113e Synchronize on-screen keyboard state with text input active state
When a hardware keyboard is attached to an iPad, you can easily trigger a set of on-screen keyboard transitions that will take place over time, and we need to track whether we're currently showing or hiding the keyboard and make sure we don't clobber the existing state during those transitions.

Testing:
* Connected a hardware keyboard to an iPad
* Launched checkkeys
* Noted the keyboard bar was active at the bottom of the screen and text input was active
* Tapped with both fingers to quickly toggle text input off and back on
* Noted the keyboard bar slid down and then back up, and text input was active
* Tapped on the keyboard bar to bring up the full on-screen keyboard and then closed it so the keyboard bar was still active, and text input was still active
* Tapped on the screen to turn text input off, noted the keyboard bar slid down
* Tapped with both fingers to quickly toggle text input on and back off
* Noted that the keyboard bar slid up and then back down, and text input was inactive
* Tapped on the screen to turn text input on, tapped on the keyboard bar to bring up the full on-screen keyboard, and text input was active
* Pressed a key on the physical keyboard, the on-screen keyboard closed, the key press and release was delivered (with no text input) and then the keyboard bar slid up, and text input was active again

Fixes https://github.com/libsdl-org/SDL/issues/7979
2023-08-02 00:11:17 -07:00
Sam Lantinga
5fb92ef2f7 Fixed whitespace 2023-08-02 00:11:17 -07:00
Sam Lantinga
f5ea6ae18d Revert "Stop beep when running iOS apps on ARM-based Macs"
This reverts commit bbf38bbbc3, which prevented text input from working when a hardware keyboard was connected, since key strokes don't get to the text input field.

Fixes https://github.com/libsdl-org/SDL/issues/7958
2023-08-02 00:08:07 -07:00
Sam Lantinga
68a4bb01e0 Allocate displays as an array of pointers instead of an array of objects
This fixes current_mode from pointing at the wrong data when displays are moved around
2023-08-01 19:24:29 -07:00
Sam Lantinga
07578fde3d Fixed crash if a display is enumerated twice
This can happen if a monitor is in the process of becoming primary because another monitor was disconnected.
2023-08-01 18:28:55 -07:00
Sam Lantinga
c94cb3a5d8 Simplified the Xcode project to a single Framework target
Static and shared libraries can be built using CMake support in SDL 3.0

Built tests for macOS, iOS, and tvOS
2023-07-31 18:38:18 -07:00
Semphris
d4a867a256 Rename SDL_GetPath to SDL_GetUserFolder
The documentation has been edited accordingly, and certain parts have been clarified.
2023-07-31 16:39:33 -07:00
Sam Lantinga
71099149b8 Fall back to Xlib if XRandR isn't available
This fixes video initialization on headless systems with VNC

Fixes https://github.com/libsdl-org/SDL/issues/8054
2023-07-31 14:38:48 -07:00
Ryan C. Gordon
87eae9a0a1
aaudio: We need a mixbuf on capture devices, too. 2023-07-30 20:24:27 -04:00
Frank Praznik
fb68e84646 wayland: Fix memory leaks
Fix some memory leaks reported by Valgrind due to not destroying objects.
2023-07-30 12:46:02 -04:00
Ryan C. Gordon
ae3090c387
androidaudio: Move Init/bootstrap code to bottom of source code.
I can't ever find this when it's in the middle! It's a "me" problem.  :)
2023-07-30 11:56:43 -04:00
Ryan C. Gordon
18fc0db9e5
aaudio: Rearranged source code to match other backends. 2023-07-30 11:56:43 -04:00
Ryan C. Gordon
2507c1d68b
aaudio: Disconnect playing devices if error callback fires. 2023-07-30 11:56:42 -04:00
Ryan C. Gordon
32a3fc3783
aaudio: Use the callback interface.
This is allegedly lower-latency than the AAudioStream_write interface,
but more importantly, it let me set this up to block in WaitDevice.

Also turned on the low-latency performance mode, which trades battery life
for a more efficient audio thread to some unspecified degree.
2023-07-30 11:56:42 -04:00
Ryan C. Gordon
b49ce86765
audio: Fixed compiler warning on Android NDK. 2023-07-30 11:56:42 -04:00
Ryan C. Gordon
1c074e8d97
android: Fixed audio device detection. 2023-07-30 11:56:42 -04:00
Ryan C. Gordon
82ce05ad01
pulseaudio: Be more aggressive with hotplug thread synchronization.
(Borrowed from the SDL2 branch.)
2023-07-30 11:56:41 -04:00
Ryan C. Gordon
5cbdf1168e
androidaudio: Fixed incorrect JNI call (thanks, @madebr!) 2023-07-30 11:56:41 -04:00
Ryan C. Gordon
ab68428a64
aaudio: Fixed for older SDKs and Android releases. 2023-07-30 11:56:41 -04:00
Ryan C. Gordon
5ff87c6d4a
android: Reworked audio backends for SDL3 audio API.
This involved moving an `#ifdef` out of SDL_audio.c for thread priority,
so the default ThreadInit now does the usual stuff for non-Android platforms,
the Android platforms provide an implementatin of ThreadInit with their
side of the `#ifdef` and other platforms that implement ThreadInit
incorporated the appropriate code...which is why WASAPI is touched in here.

The Android bits compile, but have not been tested, and there was some
reworkings in the Java bits, so this might need some further fixes still.
2023-07-30 11:56:41 -04:00
Ryan C. Gordon
7f4488f625
wasapi: More fixes for Clang warnings. 2023-07-30 11:56:40 -04:00
Ryan C. Gordon
29a0c689c9
wasapi: Patched to compile with Clang. 2023-07-30 11:56:40 -04:00
Ryan C. Gordon
4aa95c21bc
pspaudio: Patched to compile. 2023-07-30 11:56:40 -04:00
Ryan C. Gordon
9a2a0a1463
ps2audio: Delete errant character that got inserted before previous commit. 2023-07-30 11:56:39 -04:00
Ryan C. Gordon
2c578bd0d5
qnxaudio: Rewrite for SDL3 audio APIs.
I have no way to compile or test this atm, so this will likely need
further attention. I ended up cleaning this up a ton and adding missing
features, so the code changes are pretty dramatic vs a simple conversion
to SDL3...so tread carefully in here.
2023-07-30 11:56:39 -04:00
Ryan C. Gordon
455eef4cd9
audio: Use AtomicAdd for device counts, don't treat as a refcount. 2023-07-30 11:56:39 -04:00
Ryan C. Gordon
095ea57f94
pspaudio: Patched to compile. 2023-07-30 11:56:39 -04:00
Ryan C. Gordon
d7cf63db67
ps2audio: Patched to compile. 2023-07-30 11:56:38 -04:00
Ryan C. Gordon
027b9e8787
coreaudio: (maybe) patched to compile on iOS. 2023-07-30 11:56:38 -04:00
Ryan C. Gordon
4836c2db07
pspaudio: Patched to compile. 2023-07-30 11:56:38 -04:00
Ryan C. Gordon
86ca412436
n3dsaudio: Patched to compile. 2023-07-30 11:56:38 -04:00
Ryan C. Gordon
dbf993d358
vitaaudio: patched to compile. 2023-07-30 11:56:37 -04:00
Ryan C. Gordon
5707e14716
audio: Fix up some things that broke when rebasing the branch against main. 2023-07-30 11:56:37 -04:00
Ryan C. Gordon
0b6255551e
test: Fixed incorrect SDL_OpenAudioDevice call in testautomation. 2023-07-30 11:56:37 -04:00
Ryan C. Gordon
107fd941cd
vitaaudio: Clean up correctly in CloseDevice. 2023-07-30 11:56:37 -04:00
Ryan C. Gordon
9fa4a6ef87
netbsdaudio: Minor fix. 2023-07-30 11:56:36 -04:00
Ryan C. Gordon
b0d89868c6
n3dsaudio: Updated (but untested!) for SDL3 audio API. 2023-07-30 11:56:36 -04:00
Ryan C. Gordon
ba27176106
vitaaudio: Untested attempt to move Vita audio to SDL3's audio API. 2023-07-30 11:56:36 -04:00
Ryan C. Gordon
0b58e96d9e
wasapi: Patched WinRT to compile. 2023-07-30 11:56:36 -04:00
Ryan C. Gordon
c58d95c343
wasapi: Reworked for new SDL3 audio API, other win32 fixes.
The WinRT code has _also_ be updated, but it has not been
tested or compiled, yet.
2023-07-30 11:56:35 -04:00
Ryan C. Gordon
dc04f85646
audio: whoops, that should be an int. 2023-07-30 11:56:35 -04:00
Ryan C. Gordon
be0dc630b7
audio: Fixed incorrect assertion 2023-07-30 11:56:35 -04:00
Ryan C. Gordon
77b3fb06ee
directsound: First shot at updating for SDL3 audio API.
This does an enormous amount of work in SDL_immdevice.c to simplify and
clean up that interface, while moving some of its responsibilities to the
higher level SDL_audio.c. I hope I saw the whole picture here, and this
wasn't foolhardy of me.

WASAPI has not been updated for these changes, or for SDL3 at all, yet. As
such, it continues to be broken for now. It will be updated soon.

This code compiles with my cross compiler, but hasn't been built with
Visual Studio, or tested in any form, so there might be obvious fixes
following along shortly.
2023-07-30 11:56:35 -04:00
Ryan C. Gordon
4399b71715
audio: Generalize how backends can lookup an SDL_AudioDevice. 2023-07-30 11:56:34 -04:00
Ryan C. Gordon
2fb122fe46
audio: backends now "find" instead of "obtain" devices by handle.
Every single case of this didn't want the device locked, so just looking
it up without having to immediately unlock it afterwards is better here.

Often these devices are passed on to other functions that want to lock them
themselves anyhow (disconnects, default changes, etc).
2023-07-30 11:56:34 -04:00
Ryan C. Gordon
c3f5a5fc72
dummyaudio: SDL3ify style 2023-07-30 11:56:34 -04:00
Ryan C. Gordon
7d65ff86e2
diskaudio: Adjusted for later SDL3 audio API redesign changes. 2023-07-30 11:56:34 -04:00