Commit graph

714 commits

Author SHA1 Message Date
Frank Praznik
068e405912 Add notification framework with test and dummy driver 2026-06-10 13:25:38 -04:00
Sam Lantinga
fa2a726cc3 Added SDL_CreateSurfaceUninitialized()
Currently this is an internal API, but we can expose it in the future.
2026-06-05 09:14:07 -07:00
Sam Lantinga
f9d49358d2 Create a global event lock for hardware that generates events
This prevents ABBA deadlocks caused by taking a hardware resource lock then delivering events at the same time another thread is taking a hardware resource lock from an event watch callback.

Fixes https://github.com/libsdl-org/SDL/issues/15709
2026-06-02 16:51:58 -07:00
Sam Lantinga
33e237eb67 visionos: persist all configurable window settings
Save the gaze indicator and dimmed mode setting as well as curvature
2026-05-17 11:35:30 -07:00
ceski
5b98c1cc2f
Add capacitive sense gamepad events (#15627) 2026-05-17 08:26:29 -07:00
Sam Lantinga
3dbd3e43e2 Return the touch device name for SDL_TOUCH_MOUSEID 2026-05-13 09:07:36 -07:00
Sam Lantinga
fcaf5bbf8c Use predefined names for constant keyboard and mouse IDs
Fixes https://github.com/libsdl-org/SDL/issues/15563
2026-05-13 08:11:41 -07:00
Sam Lantinga
5cf16e4522
Added curved window mode on visionOS 26 (#15298) 2026-05-12 16:48:06 -07:00
Cameron Gutman
41f079491a pen: Fix enabling touch emulation while a pen is connected 2026-04-29 19:50:26 -05:00
Cameron Gutman
1aa72247af pen: Only create touch emulation device when a pen is present 2026-04-29 02:01:14 -04:00
Brenton Bostick
a5889b0e44 make sure #endif comment matches the macro name 2026-02-24 09:48:57 -08:00
RaceTheMaSe
f1a7a64eb4
Fix warnings: Extra semi - macro usage (#15015) 2026-02-08 16:58:53 -08:00
Sam Lantinga
bddf6d3e2a Guarantee that pens are in proximity before motion and button events
This also delays pen proximity out events to make sure that the pen is really gone before delivering them. On Android, you get a HOVER_EXIT event when the pen contacts the surface, which we don't want to treat as the pen leaving proximity.
2026-02-05 10:24:04 -08:00
Ryan C. Gordon
dd18d7ff52
pen: Fixed incorrect comment. 2026-02-03 19:44:29 -05:00
Thour
124c5922aa
Fix incorrect type in SDL_GetMice() and SDL_GetKeyboards() allocation (#14870) 2026-01-19 15:23:55 -08:00
Frank Praznik
34b620c3f8 event: Only consider topmost windows when generating SDL_QUIT
Otherwise, the quit event can be sent prematurely. The topmost status must be queried and cached before sending the close request event, as the window may be destroyed in an event handler.
2026-01-17 15:52:04 -05:00
Frank Praznik
e62d6a95b9 events: Raise keyboard keys before sending the focus lost message
Otherwise, the key raises may end up being ignored.
2026-01-15 15:02:43 -05:00
Ethan Lee
5b009640fe events: Buildfix for targets with C++ build units 2026-01-09 14:50:56 -05:00
Sam Lantinga
5f086e7623 Updated copyright for 2026 2026-01-01 09:40:08 -08:00
Frank Praznik
5b572638b8 video: Handle window destruction in event handlers
Windows may be destroyed in event handlers, so check the window validity after pushing window events onto the queue to ensure that the window and its properties are still valid.
2025-12-09 14:10:43 -05:00
milkmull
70c2f576c8
fixed issue where video events could be posted while system was quitting (#14572) 2025-12-03 14:17:11 -08:00
Sam Lantinga
e1edeab0c9 Added touch subsystem locking
Fixes https://github.com/libsdl-org/SDL/issues/14563
2025-12-02 01:11:38 -08:00
Sam Lantinga
22decf4783 Fixed some clang thread-safety warnings 2025-12-02 01:11:38 -08:00
Cameron Gutman
6d99204a82 quit: don't call signal() if we're using sigaction()
At best, this is a no-op.

At worst, it might:
 - Clobber a signal handler someone registered after us
 - Overwrite the signal mask or flags
 - Cause unregistration to fail (sigaction() isn't guaranteed to return the exact pointer passed to signal())
2025-12-01 17:31:55 -06:00
Sam Lantinga
778f70c906 Clarify which thread is the main thread
If video is initialized, the main thread is the one that initialized video, otherwise if events are initialized, the main thread is the thread that initialized events, otherwise the main thread is the one that called the main function.

Fixes https://github.com/libsdl-org/SDL/issues/14511
2025-11-30 12:15:48 -08:00
Sam Lantinga
b9d794bb37 Fixed pen mouse motion when SDL_HINT_PEN_MOUSE_EVENTS is off (thanks @frenzibyte!)
Fixes https://github.com/libsdl-org/SDL/issues/14554
2025-11-30 10:55:47 -08:00
Amelia Clarke
defd7895da events: fix SDL_PeepEvents() returning 0 on error
Signed-off-by: Amelia Clarke <selene@perilune.dev>
2025-11-28 07:41:30 -08:00
Ryan C. Gordon
99d7dad7e6 pen: Dramatic improvements to proximity information.
Now everything will attempt to track pens through proximity changes (instead
of removing the pen entirely). testpen.c has been updated to reflect this.

Some platforms and devices are better at this than others, but this seems like
a significant usability improvement across the board.

Fixes #12992.
2025-11-21 08:13:16 -05:00
William Horvath
a7ab3a604b Print the full 64-bit timestamp in SDL_GetEventDescription().
Instead of wrapping at UINT_MAX.
2025-11-20 13:35:28 -08:00
Frank Praznik
d058781f71 mouse: Fix memory leak if events are sent after shutdown
Only allocate memory for source events if the mouse system is in the initialized state, otherwise, spurious events during shutdown can cause a leak.
2025-11-17 13:28:05 -05:00
Ryan C. Gordon
367c8d7c7b
touch: don't compare mouse_touch_events to zero; it's a bool. 2025-11-14 10:28:16 -05:00
Sam Lantinga
379c47cc75 Revert "Fix lost KEY_UP events with multiple keyboards using shared scancode state (#14446)"
This reverts commit 3dab15d3b4.

With this commit any repeated key will be reported as held down indefinitely.
2025-11-12 11:51:34 -08:00
Chris Burrows
3dab15d3b4
Fix lost KEY_UP events with multiple keyboards using shared scancode state (#14446) 2025-11-11 23:36:08 -08:00
Ryan C. Gordon
25ab8c99df pen: Offer the current window during promixity events on most platforms.
Fixes #12356.
2025-11-11 16:34:22 -05:00
Sam Lantinga
49134ecf25 Pass the error through from the SetRelativeMouseMode() implementation 2025-11-03 13:07:17 -08:00
Sam Lantinga
05887f2087 Return false from SDL_SetWindowRelativeMouseMode() if relative mode isn't available
Fixes https://github.com/libsdl-org/SDL/issues/14388
2025-11-03 13:01:41 -08:00
Sam Lantinga
2d14a237dc Fixed trying to grab the mouse when losing keyboard focus
Fixes https://github.com/libsdl-org/SDL/issues/14350
2025-10-28 07:15:43 -07:00
Frank Praznik
39aedcef64 events: Pump DBus messages in the main event loop
DBus does not require a video backend, and DBus messages still need to be processed even when a video backend is not initialized. Move the DBus pump call to the main event message pump function so that DBus events are still dispatched, even when a video backend has not been initialized.
2025-10-23 21:03:09 -04:00
Sam Lantinga
23fcf53c53 Treat a single frame animated cursor as a normal color cursor 2025-10-19 23:03:54 -07:00
Sam Lantinga
bd86e85249 Added fallback support for animated cursors 2025-10-19 22:53:10 -07:00
Sam Lantinga
0e87ba163f Fixed crash if the animated cursor had a NULL frame 0 2025-10-19 22:53:10 -07:00
Frank Praznik
dcb8a6521c Add animated cursor support
Adds support for animated cursors on Cocoa, Wayland, Win32, and X11.

testcursor can take a semicolon separated list of filenames and load an animated cursor from them.
2025-10-15 14:41:15 -04:00
Susko3
e2bbbdc515 Implement SDL_GetPenDeviceType() for Android 2025-10-13 18:43:16 -04:00
Sylvain Becker
71bf56c9e4
Add SDL Pinch events (#9445) 2025-10-12 14:44:23 -07:00
Sam Lantinga
1871b998cd Added SDL_EVENT_SCREEN_KEYBOARD_SHOWN and SDL_EVENT_SCREEN_KEYBOARD_HIDDEN
Fixes https://github.com/libsdl-org/SDL/issues/13049
2025-10-10 10:14:07 -07:00
Sam Lantinga
6677fad1c8 Added SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGED
Fixes https://github.com/libsdl-org/SDL/issues/12785
2025-10-09 19:15:45 -07:00
Frank Praznik
ce4af658ba events: Periodically poll tray events on *nix platforms
Tray events on *nix platforms usually run over DBus, and the events subsequently aren't delivered via the window event queue. As a result, SDL_WaitEvent() won't unblock when tray events arrive, particularly if there is no currently active window.

Wake up periodically to poll when tray items are active to avoid blocking the delivery and processing of tray events.
2025-10-07 12:32:12 -04:00
Sam Lantinga
baae2a628d Store the current window display ID on the window 2025-10-03 12:38:47 -07:00
Sam Lantinga
bae34c3e34 Fixed SDL_RunOnMainThread() on Android
If the application is waiting in SDL_WaitEvent(), we still need to run event loop maintenance in between calls to Android_PumpEvents().

Fixes the testautomation events_mainThreadCallbacks() test on Android.
2025-09-21 13:46:11 -07:00
Sam Lantinga
6a9ac1cacd Always poll udev on supported platforms
Fixes https://github.com/libsdl-org/SDL/issues/13995
2025-09-20 11:13:39 -07:00