Commit graph

2831 commits

Author SHA1 Message Date
Cameron Cawley
23d456e146 3DS: Support simple message boxes 2024-10-12 16:07:34 -07:00
Cameron Cawley
084dbb6410 Allow for more fine tuning of Duff's device routines 2024-10-12 16:06:54 -07:00
Cameron Cawley
90f792f83c Reduce the size of the SDL_blit_0 alpha code 2024-10-12 16:06:54 -07:00
Guldoman
5fe010270a x11: Set correct clipboard target type in SelectionRequest handling 2024-10-09 07:31:43 -07:00
Sam Clegg
3deb07ea39 [emscripten] Fixes for data addresses above 2gb
This includes both wasm64 and wasm32 when addressing more than 2gb of
memory.

Fixes: #9052
2024-10-08 16:35:58 -04:00
Frank Praznik
a86f8dedb9 wayland: Add support for setting window icons via the xdg-toplevel-icon-v1 protocol 2024-10-07 14:24:33 -04:00
Frank Praznik
ea77d1d385 wayland: Factor out the general SHM buffer allocation/free functions from the cursor code 2024-10-07 14:24:33 -04:00
Frank Praznik
643437f5b0
Reapply "wayland: Don't initialize OpenGL when the window flags didn't specify it"
This reverts commit 120b8d4189.

The issue this was patching over in Vanilla-Conquer was the lack of an exposure event when showing a window, which has since been remedied.

Attaching EGL window objects can also cause protocol violations now that the explicit sync protocol is in use, if SDL creates one and then the client tries to attach one itself, so they really shouldn't be created unless the client specifically requested it.
2024-10-02 13:50:14 -04:00
Vladimir Serbinenko
1edaad1721 Handle wayland touch cancel message
Suppose host has some three-finger gesture. Then we get the following sequence
of events:
DOWN-DOWN-DOWN-MOTION-CANCEL

Note that there is no UP in this sequence. So if we don't handle CANCEL then
we end up thinking that fingers are still touching the screen. Ideally we
should inform the application that cancel has happened as not to trigger
spurious taps but still this is way better than being stuck with phantom
finger touch.
2024-09-26 13:35:31 -04:00
Sam Lantinga
c9f3cbe02f Don't use BlitARGBto555PixelAlpha() for SDL_PIXELFORMAT_ARGB1555
This didn't properly take into account destination alpha.

Fixes https://github.com/libsdl-org/SDL/issues/8401

(cherry picked from commit 1aea43846e)
2024-09-25 21:58:20 -07:00
Cameron Gutman
7eb85b07e0 kmsdrm: Fix one more place that doesn't try to drop master 2024-09-23 18:59:54 -05:00
Cameron Gutman
dab4f856c1 kmsdrm: Keep fd around if we can drop master
Modern kernels (v5.8+) allow non-root usage of drmDropMaster(), so
we can hold on to our fd after dropping master on it. This fixes
populating drm_fd in the KMSDRM SysWMinfo when using Vulkan.

Also add a missing error check for open() while we're here.
2024-09-22 16:36:34 -07:00
Erin Melucci
055ce096f5 Don't call GetMessageTime on Xbox platforms
Fixes a compilation issue due to the GAMES partition of WinAPI not including GetMessageTime
2024-09-20 07:26:38 -07:00
Cameron Gutman
e239295491 wayland: Fix memory leaks 2024-09-18 20:44:26 -04:00
Frank Praznik
8fa99993af wayland: Send exposure events when showing or resizing the window
Clients may rely on this event to signal when they should redraw themselves, so send it when appropriate.
2024-09-10 10:19:48 -04:00
Simon McVittie
54757c29dd x11vulkan: Use the correct SONAME of libX11-xcb.so.1 on Linux, etc.
On most Unix platforms supported by SDL, the canonical name used to load
a library at runtime includes its ABI major version, and the name
without a version is not guaranteed to exist on non-developer systems.
libX11-xcb.so.1 is correct on Linux, and probably on other Unix
platforms like FreeBSD.

A notable exception is OpenBSD, which apparently does not use
ABI-suffixed names, so continue to use libX11-xcb.so there.

Signed-off-by: Simon McVittie <smcv@collabora.com>
(cherry picked from commit 7713a7eec7)
2024-09-09 12:54:02 -07:00
Sam Lantinga
10b4a79379 Make newer DRM and GBM functions optional
Fixes https://github.com/libsdl-org/SDL/issues/10675

(cherry picked from commit d501f6db07)
2024-09-02 11:11:02 -07:00
Francisco Javier Trujillo Mata
1b8d5631ef Allow MessageBox to work without window 2024-08-23 11:50:00 -07:00
Ozkan Sezer
30972d7e7f SDL_x11mouse.c: avoid -Wunused-variable if xinput2 is not available 2024-08-17 11:23:32 +03:00
Frank Praznik
8fcbf972c6 wayland: Send fake warp coordinates when emulating warps with relative mode
Send the fake warp coordinates when emulating warps with relative mode to ensure that it appears that the cursor is always reset to where the application expects it to be.

Fixes cases where games can continue moving the camera if the mouse is lifted during motion.
2024-08-16 11:24:13 -04:00
Frank Praznik
5b57573439 x11: Track cursor visibility internally
Cursor visibility in the SDL input layer only reflects whether ShowCursor/HideCursor was called. In the case of relative mode, the cursor can be hidden, but the SDL_Mouse visibility flag will be true.

Track cursor visibility separately in the X11 driver. Fixes the cursor becoming visible when using the warping relative mode with XWayland.

(cherry picked from commit b0713a7d30)
2024-08-16 10:34:36 -04:00
Sam Lantinga
b360214950 Use drmModeAddFB() if drmModeAddFB2WithModifiers() fails
Fixes https://github.com/libsdl-org/SDL/issues/10276

(cherry picked from commit 8e99ec34bb)
2024-08-15 11:53:02 -07:00
Wohlstand
dd6c663918 SDL_vitatouch.c: Fixed the incorrect touch device IDs
- Begining of device ID with 0 violates the SDL's specification that means the 0 is an error, invalid, failure, etc. But on Vita here it's an actual device...
- Replacing 0 and 1 with 1 and 2 to resolve this violation.
2024-08-14 08:32:02 -07:00
Anonymous Maarten
248cb3ca9c Fix -Wdeclaration-after-statement warnings 2024-08-14 10:35:43 +00:00
Sam Lantinga
70890b175e Fixed build 2024-08-13 07:39:43 -07:00
Ilya Mizus
586a2dc721 Fixed secondary screens on KMSDRM (#10535)
* Removed window movement to left top corner that breaks secondary screens on KMSDRM

(cherry picked from commit ce98550cbb)
2024-08-13 07:20:07 -07:00
Sam Lantinga
a5bff78d81 kmsdrm: free the connector when looking for available devices
Fixes https://github.com/libsdl-org/SDL/issues/10499

(cherry picked from commit 1a57ea7fba)
2024-08-08 09:29:38 -07:00
Sam Lantinga
5ca0639a42 Fixed crash when the current mouse capture window is destroyed
Fixes https://github.com/libsdl-org/SDL/issues/10494

(cherry picked from commit 91d97a367e)
2024-08-07 12:28:53 -07:00
Sam Lantinga
230f1debd0 Fixed macOS build 2024-08-01 14:11:06 -07:00
Sam Lantinga
0b6eff4167 Fixed building on macOS with OpenGL disabled
Fixes https://github.com/libsdl-org/SDL/issues/6226
2024-08-01 13:57:26 -07:00
Frank Praznik
5d1ca1c8c7
wayland: Don't fail to retrieve a system cursor if no window is focused
Doing this can leave the cursor data in a weird, corrupt state.

(cherry picked from commit 5617ce277d)
2024-07-27 20:30:52 -04:00
Charlie Birks
6e931bee01 emscripten: restore key event prevent default behaviour
This restores the behaviour before 9221548114 where we only preventDefault the event if:
- the key is recognised
- the event is enabled
- the event is not filtered

(ignoring the KEYPRESS special case, which is unchanged)
2024-07-19 09:39:00 -07:00
Anonymous Maarten
11c0dfbdfe Fix UWP build in non-UNICODE mode 2024-07-19 10:20:11 +00:00
vanfanel
5ab1151508 Fix KMSDRM double buffering. 2024-07-18 14:35:00 -07:00
vanfanel
9e6b8d56e3 Add SDL_VIDEO_DOUBLE_BUFFER support to the Wayland backend. 2024-07-17 16:36:04 -04:00
Amir
ccade50587 Fix warning for Android NDK compiler: "function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]"
https://stackoverflow.com/questions/42125/warning-error-function-declaration-isnt-a-prototype
In C int foo() and int foo(void) are different functions. int foo() accepts an arbitrary number of arguments, while int foo(void) accepts 0 arguments. In C++ they mean the same thing.
2024-07-17 10:51:30 -07:00
Substring
a2215ff81c KMSDRM: fix unsupported modifiers
(cherry picked from commit 9548bba63a)
2024-07-10 14:42:32 -07:00
Ahmed Essam
b80f6ec05c emscripten: don't consume key down/up events if the user disabled them 2024-07-10 09:29:43 -07:00
Frank Praznik
849c905d8c
wayland: Always create a viewport for the window if available
Viewports decouple the buffer from the window size and avoids the window geometry hacks used to prevent problems if a buffer with an old size in the pipeline ends up being committed.

Fixes an invalid geometry warning and incorrect overview size for fullscreen windows on GNOME, and avoids flicker when entering/exiting fullscreen or moving the window between scaled and non-scaled displays.
2024-07-08 11:54:10 -04:00
mariob92
58e179c8b5 wgl/glx: Fix attribute list for SDL_GL_FLOATBUFFERS
This commit fixes the attribute list in the WGL and GLX code when requesting a floating point pixel format. The name of the attribute was missing in the list.

Fixes libsdl-org#10189

(cherry picked from commit 9389712917)
2024-07-06 11:56:38 -07:00
Sam Lantinga
a4cbba1276 Try to create an accelerated renderer for the window surface even if SDL_HINT_RENDER_DRIVER is "software"
This case is properly handled inside SDL_CreateWindowTexture()

Fixes https://github.com/libsdl-org/SDL/issues/10155

(cherry picked from commit c7ed78a9ef)
2024-07-05 08:23:17 -07:00
Ryan C. Gordon
1413d67748
render: SDL_DestroyWindow hollows out its renderer but doesn't free it.
This allows apps to destroy the window and renderer in either order, but
makes sure that the renderer can properly clean up its resources while OpenGL
contexts and libraries are still loaded, etc.

If the window is destroyed first, the renderer is (mostly) destroyed but its
pointer remains valid. Attempts to use the renderer will return an error,
but it can still be explicitly destroyed, at which time the struct is free'd.

If the renderer is destroyed first, everything works as before, and a new
renderer can still be created on the existing window.

Fixes #10174.

(cherry picked from commit cab3defc18)
2024-07-04 18:46:43 -04:00
Sam Lantinga
0d9e54237c Respect SDL_HINT_RENDER_DRIVER when creating an accelerated window surface
Fixes https://github.com/libsdl-org/SDL/issues/10061

(cherry picked from commit 2a58e7b11c)
2024-06-29 11:13:01 -07:00
Sam Lantinga
a3f0c373d3 Clean up any renderer in SDL_DestroyWindowSurface()
Also added an automated test to verify window surface functionality.

Fixes https://github.com/libsdl-org/SDL/issues/10133

(cherry picked from commit a522bfe3f1)
2024-06-29 11:04:15 -07:00
Ryan C. Gordon
3e4bb5acd0
x11: Fix build when X_HAVE_UTF8_STRING is not defined.
Fixes #10094.
2024-06-27 01:53:39 -04:00
Sam Lantinga
88bbab275f Fixed building with older libdrm headers
(cherry picked from commit 8949de3978)
2024-06-26 15:55:08 -07:00
Sam Lantinga
ecde0ca6b6 Fixed building with the steamrt/scout SDK
(cherry picked from commit 4b82bed259)
2024-06-26 15:54:53 -07:00
Sam Lantinga
64d4baccb5 Fix building with the steamrt/scout SDK
(cherry picked from commit b552f26e6a)
2024-06-26 15:54:20 -07:00
Frank Praznik
20f1061cc8 video: Fix memory leak when deleting a video display
The display deletion code would not free the driver data or name if the display index was the last, or only one, in the list.
2024-06-26 12:19:14 -04:00
Frank Praznik
3b88d4f46f wayland: Fix double free when deleting an output display 2024-06-26 12:19:14 -04:00