|
74162b74
|
2021-07-29T13:27:31
|
|
wayland: Add support for text-input-unstable-v3
|
|
ad310d39
|
2021-07-28T12:31:25
|
|
wayland: libdecor support for SetWindowModalFor
|
|
93976ade
|
2021-07-28T12:22:09
|
|
wayland: libdecor support for GetWindowWMInfo
|
|
1fb4429b
|
2021-07-28T21:50:48
|
|
wayland: Avoid a pointer→TouchID cast warning
As of [1], SDL now compiles with a warning in SDL_waylandevents.c on
32-bit systems under gcc 10.3.0:
/tmp/SDL/src/video/wayland/SDL_waylandevents.c: In function 'seat_handle_capabilities':
/tmp/SDL/src/video/wayland/SDL_waylandevents.c:958:22: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
958 | SDL_AddTouch((SDL_TouchID)seat, SDL_TOUCH_DEVICE_DIRECT, "wayland_touch");
| ^
/tmp/SDL/src/video/wayland/SDL_waylandevents.c:964:22: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
964 | SDL_DelTouch((SDL_TouchID)seat);
| ^
This is due to SDL_TouchID always being 32-bit, but seat being a pointer
which is (obviously) only 32-bit on 32-bit systems. The conversion is
therefore harmless, so silence it with an extra cast via intptr_t.
This is what the cocoa backend does (and is similar to what the Win32
backend does, except with size_t).
Fixes: 03c19efbd1 ("Added support for multiple seats with touch input on Wayland")
[1]: https://github.com/libsdl-org/SDL/commit/03c19efbd17f72f70ee021de6d2549eb0be3bb56
|
|
18303c92
|
2021-07-28T18:06:34
|
|
Wayland: Fix building with --disable-wayland-shared with libdecor.
When wayland is not dynamically loaded (--enable-wayland-shared=no)
libdecor.h is not included unless SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC
is set, so it fails to build. We can't simply move the libdecor.h
include above the #ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC block, as
libdecor.h itself #includes wayland headers we need to replace with
#defines. Instead, duplicate the #include.
Fixes https://github.com/libsdl-org/SDL/issues/4543
Note that this doesn't fix any of the underlying issues of libdecor
being treated as part of wayland, it just fixes the build. A better
solution would probably be to decouple the wayland dynamic loading
from the libdecor dynamic loading completely, though that is a lot
more work...
|
|
21cba924
|
2021-07-28T16:54:23
|
|
wayland: Don't create zxdg toplevel decoration twice
Each window can have at most one zxdg toplevel decoration, but as of
[1], we accidentally create two. (If libdecor is not in use). This
causes wayland windows with server-side decorations (e.g. on KDE/KWin)
to crash with the message:
zxdg_decoration_manager_v1@7: error 1: decoration has been already constructed
This extra zxdg_decoration_manager_v1.get_toplevel_decoration() call was
introduced while deprecating wl-shell and xdg-shell-stable[1] support,
and possibly was a bad interaction with [2], which moved the decoration
creation around.
Fixes: 6aae5b44f8 ("Remove wl-shell and xdg-shell-unstable-v6 support (#4323)")
[1]: https://github.com/libsdl-org/SDL/pull/4323
[2]: https://github.com/libsdl-org/SDL/pull/4374
|
|
7b239edb
|
2021-07-28T01:00:00
|
|
wayland: Assign frame_callback on window creation.
Fixes a crash when creating and destroying a window without calling SwapWindow.
|
|
03185e74
|
2021-07-27T18:35:00
|
|
wayland: Tag/Check wl_output objects as well, fixes crashes when libdecor is in use
|
|
871c1119
|
2021-07-27T18:24:09
|
|
wayland: handle pending resizes immediately, not on SwapWindow.
This was originally a workaround for an old Mesa bug, since fixed, apparently,
and causes other problems.
Fixes #4326.
|
|
a3eb297e
|
2021-07-27T17:17:19
|
|
wayland: Rework enter/leave and update_scale_factor to avoid bogus wl_output data.
Also remove get_window_scale_factor() which was just pointless indirection.
|
|
6aae5b44
|
2021-07-27T17:12:26
|
|
Remove wl-shell and xdg-shell-unstable-v6 support (#4323)
* wayland-protocol: update wayland.xml to 1.19.0
* wayland: remove shell_surface field from SDL_SysWMinfo
* wayland: remove wl_shell support
* waypand-protocols: update xdg-shell.xml to 1.20
* wayland: remove xdg-shell-unstable-v6 support
* wayland: deprecate wl shell surface syswm info, add xdg surface
|
|
e5f9fae0
|
2021-05-16T23:19:45
|
|
wayland: don't flush after setting fullscreen
|
|
ac904b8e
|
2021-06-21T01:25:25
|
|
wayland: ignore resize in fullscreen or maximised mode
|
|
ee062c64
|
2021-05-19T00:13:39
|
|
wayland: implement toggling decorations
|
|
2b3cf36f
|
2021-05-22T00:49:10
|
|
wayland: forward window events
|
|
48066984
|
2021-04-05T14:09:03
|
|
wayland: enable/disable ACTION_RESIZE for fullscreen
|
|
9e6fcbe7
|
2020-06-11T22:10:28
|
|
wayland: client-side decoration
|
|
03c19efb
|
2021-07-24T15:25:50
|
|
Added support for multiple seats with touch input on Wayland
This fixes bug https://github.com/libsdl-org/SDL/issues/4517
|
|
f1633127
|
2021-07-24T13:41:55
|
|
Added a window flash operation to be explicit about window flash behavior
|
|
e1c3a250
|
2021-07-24T12:11:27
|
|
Changed SDL_FlashWindow() so it doesn't take a flash count, and added the hint SDL_HINT_WINDOW_FLASH_COUNT to control behavior on Windows
|
|
4ada14a2
|
2021-07-21T13:39:10
|
|
Replace libc functions to SDL equivalent in wayland video subsystem
Wayland video subsystem uses a mix of libc and SDL function.
This patch switches libc functions to SDL ones and fixes a mismatch in memory
allocation/dealoccation of SDL_Cursor in SDL_waylandmouse.c (calloc on line 201
and SDL_free on line 313) which caused memory corruption if custom memory
allocator where provided to SDL.
|
|
7f261d3b
|
2021-06-15T00:35:13
|
|
wayland: Fix returning to a window from fullscreen without calling SetWindowSize
|
|
eb15b4e9
|
2021-06-11T23:40:09
|
|
wayland: Drop SwapWindow calls for hidden windows
|
|
d956636c
|
2021-06-04T18:39:47
|
|
wayland: Implement FlashWindow
|
|
2af3f64e
|
2021-06-02T14:37:09
|
|
wayland: Activate the window on first ShowWindow, if possible
|
|
151f9538
|
2021-06-02T11:41:44
|
|
wayland: Implement RaiseWindow with xdg-activation
|
|
d3244035
|
2021-05-17T01:24:35
|
|
wayland: Add support for maximized/restored events
|
|
f2f451a5
|
2021-05-10T13:29:54
|
|
wayland: Call SetWindowBordered at the end of ShowWindow
|
|
efbb6ff9
|
2021-05-10T12:42:28
|
|
wayland: Create the server decorations after the toplevel has been configured
|
|
889cebb7
|
2021-05-05T14:08:30
|
|
Wayland touch inputs send normalized coords
Resolves #4361
|
|
31637dde
|
2021-05-04T14:59:29
|
|
Generic check for desktop GL and EGL on Linux systems
|
|
c69fde34
|
2021-05-02T16:43:01
|
|
wayland: Maximize/Restore should set the relevant window flags.
Also, Maximize should be ignored for fixed-size windows.
|
|
006378b9
|
2021-05-02T18:30:32
|
|
fix NULL frame_callback access
|
|
424bbaec
|
2021-05-01T18:53:12
|
|
wayland: destroy frame callback when window is destroyed
|
|
20928550
|
2021-05-01T09:00:24
|
|
wayland: Guard surface_frame_listener for OpenGL, document why it exists
|
|
3d47ddc4
|
2021-05-01T08:57:37
|
|
wayland: Use refresh_rate to calculate max_wait in SwapWindow
|
|
c54c16d3
|
2021-04-30T13:19:36
|
|
wayland: don't hang in SDL_GL_SwapBuffers if the compositor is ghosting us.
If you hide a window on Mutter, for example, the compositor never requests
new frames, which will cause Mesa to block forever in eglSwapBuffers to
satisfy the swap interval.
We now always set the swap interval to 0 and manage this ourselves, handing
the frame to Wayland when it requests a new one, and timing out at 10fps just
to keep apps moving if the compositor wants no frames at all.
My understanding is that other protocols are coming that might improve upon
this solution, but for now it solves the total hang.
Fixes #4335.
|
|
8e3ec34d
|
2021-04-20T12:40:40
|
|
wayland: Refactor toplevel mapping, implement HideWindow
|
|
a5825576
|
2021-04-21T13:39:31
|
|
Fix error handling of wayland message box
Zenity return a small integer on success which may be the same as EXIT_FAILURE. Use a bigger integer for error reporting from child process.
|
|
12dd412b
|
2021-04-21T13:31:15
|
|
Fix icon of wayland message box
Also add some comments and silence a warning.
Co-authored-by: Ethan Lee <flibitijibibo@gmail.com>
|
|
d0cf3b75
|
2021-04-20T18:26:02
|
|
Return correct button id
|
|
1fd95c53
|
2021-04-20T18:15:09
|
|
Disable pango markup in wayland massage box
Zenity support pango markup, add --no-markup to disable it.
|
|
0cd0e9ba
|
2021-04-20T17:49:21
|
|
Reimplement wayland message box function with execvp.
Previous version used 'popen' which required to sanitize user provided text. Not
sanitizing text could cause failure if user provided text included a " or command
injection with `cmd`.
|
|
509228c4
|
2021-04-18T22:26:27
|
|
wayland: Implement GetDisplayDPI
|
|
fcbfe33c
|
2021-04-18T09:45:22
|
|
wayland: Implement SetWindowModalFor
|
|
213bfc19
|
2021-04-18T09:36:54
|
|
wayland: Implement RestoreWindow for xdg/zxdg
|
|
0f518002
|
2021-04-18T09:33:57
|
|
wayland: Removed unused GetDisplayModes/SetDisplayMode functions
|
|
46df195b
|
2021-04-18T09:33:06
|
|
wayland: Implement GetDisplayBounds
|
|
ed24c345
|
2021-04-16T21:35:50
|
|
wayland: Implement basic window move events via wl_surface_listener.
This unearthed an unspeakably large amount of bugs in the wl_output enumerator,
notably the fact that the wl_output user pointer was to temporary memory!
This was "fixed" in e862856, and was then pointed out as a leak in 4183211,
which was undone in d9ba204. The busted fix was correct that the malloc was an
issue, but wrong about _why_; SDL_AddVideoDisplay copies by value and does not
reuse the pointer, so generally you want your VideoDisplay to be on the stack,
but of course the callbacks don't allow that, so a malloc was a workaround. But
we can do better and just host our temporary display inside WaylandOutputData
because that will be persistent while also not leaking.
Wait, wasn't I talking about move events? Right, that: wl_surface_listener does
at least give us the ability to know what monitor we're on, even though we have
no idea where we are on the monitor. All we need to do is check the wl_output
against the display list and then push a move event that both indicates the
correct display while also not being _too_ much of a lie (but enough of a lie
to where our event doesn't get discarded as "undefined" or whatever). The index
check for the video display is what spawned the great nightmare you see before
you; aside from the bugfix this is actually a really basic patch.
|
|
5c78df9c
|
2021-04-14T00:56:50
|
|
Support key composing (i.e. dead keys) in Wayland driver (#4296)
Based on an old patch by chw from the old Bugzilla issue tracker.
Authored-by: chw
Co-authored-by: Sam Lantinga <slouken@libsdl.org>
|
|
f88d91d5
|
2021-04-12T23:47:23
|
|
wayland: Minor whitespace fix
|
|
d785dab5
|
2021-04-12T23:37:53
|
|
wayland: Add unscaled resolutions to the display mode list
|
|
dfcd5fbc
|
2021-04-08T21:57:58
|
|
wayland: Set the keymap in keyboard_handle_modifiers
|
|
c59d4dcd
|
2021-04-08T15:32:33
|
|
wayland: Dramatically lower the timeout when reading/writing pipes
|
|
cf124963
|
2021-04-08T15:29:54
|
|
wayland: Fall back to clipboard source data if offer came up empty
|
|
282c0524
|
2021-04-08T14:59:04
|
|
wayland: Another strlen->SDL_strlen
|
|
bec133d7
|
2021-04-08T14:16:32
|
|
wayland: Use SDL_strlen instead of strlen
|
|
e28d9785
|
2021-04-08T14:16:21
|
|
wayland: Minor whitespace cleanup in clipboard.c
|
|
875f839d
|
2021-04-08T14:14:46
|
|
wayland: A bunch of clipboard safety fixes.
Also removed Wayland_get_data_device because it was a pointless getter function.
|
|
7510245a
|
2021-04-08T14:08:35
|
|
wayland: Create the data_device only after both device_manager and input exist.
There is no guarantee on what order the Wayland interfaces will come in, but the
callbacks were assuming that wl_data_device_manager would could before wl_seat.
This would cause certain desktops to not have any data_device to work with,
meaning certain features like the clipboard would silently no-op.
|
|
6fd37194
|
2021-04-07T16:03:41
|
|
wayland: Fix leaked zxdg_decoration_manager
|
|
f6a09ef1
|
2021-04-07T16:16:23
|
|
wayland: Drop support for kwin specific decoration management
KWin has supported the shared and formalised zxdg_decoration since
Plasma 5.16 which came out mid 2019.
Whilst it made sense to support them both for a while, it should not be
needed for future SDL releases.
|
|
a92cca1a
|
2021-04-07T16:44:10
|
|
wayland: Use the window's display to get wl_output rather than fullscreen_mode.
Because Wayland only supports FULLSCREEN_DESKTOP, fullscreen_mode never gets
assigned at all, meaning driverdata is always NULL! Depending on what the
compositor does this can lead to dramatically different results. GNOME was fine
without this, but Plasma would trip an event that unintentionally unset the
fullscreen mode and caused the game to fire a configure event _every frame_,
and of course the configure would send the fullscreen_mode output which was
still empty. The fix is to just use the SDL_VideoDisplay directly, which will
always have a valid wl_output.
|
|
c7e29a9e
|
2021-04-06T18:10:40
|
|
wayland: Fix toggling fullscreen with fixed-size windows
|
|
413a2306
|
2021-04-04T10:47:06
|
|
NULL passed to strcmp in Wayland_ShowMessageBox
|
|
dbdbae44
|
2021-04-02T14:35:11
|
|
linux: (de)initialize d-bus at init and quit.
Previously we had different subsystems quitting it, in conflict, and risked
multiple threads racing to init it at the same time.
Fixes #3643.
|
|
eeee7308
|
2021-03-29T16:57:03
|
|
wayland: Implement IME support.
Note that this is purely to make it possible to enter text that requires
composition - for example, before this commit Kanji input didn't work at all.
The big problem this still has is that we need the window position, and this is
still not implemented. Once we have this information we can do the equivalent
of XTranslateCoordinates to put the rectangle where we want it.
|
|
07ba13b7
|
2021-03-26T00:40:05
|
|
wayland: Pass --no-wrap to Zenity.
There seems to be a bug where it can wrap the text based on the minimum possible
window size, which can be worked around with --no-wrap. This technically uncaps
the width entirely, but this isn't wildly different from what other backends do.
|
|
54719a9d
|
2021-03-25T23:58:12
|
|
wayland: Assign output_len in ShowMessageBox
|
|
27b74d33
|
2021-03-25T23:25:34
|
|
Implement Wayland_ShowMessageBox using Zenity
|
|
57a927e8
|
2021-02-12T14:27:58
|
|
wayland: Explicitly set min/max size for xdg-shell
|
|
8c5b7af2
|
2021-02-25T19:30:47
|
|
Wayland: Fix mouse pointer hiding on Plasma Wayland
Unlike Mutter and Sway, KWin actually checks the serial passed in
wl_pointer_set_cursor(). The serial provided is supposed to be the
serial of the pointer enter event, but We were always passing 0.
This caused KWin to drop our requests to hide the cursor.
Thanks to the KDE folks for spotting this in my debug logs.
Fixes #3576
|
|
a99eec77
|
2021-02-12T14:31:43
|
|
wayland: Minor whitespace fix
|
|
cad67082
|
2021-02-04T19:04:56
|
|
wayland: Check for both _WAYLAND_CLIENT_H and WAYLAND_CLIENT_H
|
|
629334f2
|
2021-02-09T15:02:55
|
|
Fixed bug 5543 - Wayland: Fix waylandvideo.h warnings
wahil1976
This patch fixes the warnings seen when compiling the Wayland backend. This will also be required in the future to avoid issues with compilation.
|
|
d9ba2044
|
2021-02-08T16:55:01
|
|
Backed out changeset 852a7bdbdf4b
This causes a use-after-free memory error
|
|
4183211a
|
2021-02-08T16:01:37
|
|
free the 'display' after it was added to global list
|
|
ff297753
|
2021-02-04T10:46:34
|
|
Fixed compiler warning
|
|
e862856e
|
2021-02-01T08:57:39
|
|
wayland: Don't crash when the properties of already existing wl_output change
|
|
0ed16ced
|
2021-01-31T19:10:02
|
|
free 'outputs' in 'Wayland_DestroyWindow'
|
|
a4467846
|
2021-01-31T19:09:44
|
|
free the 'data_device_manager'
|
|
3ae2ec34
|
2021-01-31T19:06:37
|
|
wayland: Fix transform and scale handling when setting display mode
|
|
a0d3c6c6
|
2021-01-25T21:42:14
|
|
Rename SetWindowGrab() to SetWindowMouseGrab()
|
|
d133a5f6
|
2021-01-24T17:19:48
|
|
wayland: cancel key repeat when keyboard focus is lost
SDL_SetKeyboardFocus(NULL) will lift any keys still pressed when keyboard focus
leaves the window, but then key repeat comes behind our backs and presses the
key down again. This results in an infinite stream of SDL_KEYDOWN events when
focus leaves the window with a key down (particularly noticeable with Alt+Tab).
|
|
e1f73e64
|
2021-01-23T16:22:44
|
|
Refactor keyboard grab to be managed by the video core
This gives us flexibility to add others hints to control keyboard grab behavior
without having to touch all of the backends. It also allows us to possibly
expose keyboard grab separately from mouse grab for applications that want to
manage those independently.
|
|
e787282b
|
2021-01-23T15:40:22
|
|
Implement Wayland_SetWindowResizable
|
|
c16cfc0e
|
2021-01-23T11:22:35
|
|
waylandtouch: Don't export interface structs
These are explicitly written in C code rather than generated at build
time, so they weren't affected by changing how we invoke
wayland-scanner.
Signed-off-by: Simon McVittie <smcv@collabora.com>
|
|
bd553ea8
|
2021-01-20T21:17:20
|
|
Implement support for inhibiting the screensaver on Wayland
We support both the org.freedesktop.ScreenSaver D-Bus API (same as the X11
backend) and the Wayland idle_inhibit_unstable_v1 protocol.
Some Wayland compositors only support one or the other, so we need both to
for broad compatibility.
|
|
7ff3832e
|
2021-01-22T19:22:17
|
|
Fix continuous scrolling speed on Wayland
Wayland compositors seem to have standardized on 10 units per "wheel tick" for
continuous scroll events, so we need to convert these axis values to ticks by
dividing by 10 before reporting them in SDL_MOUSEWHEEL events.
|
|
19236b46
|
2021-01-21T21:49:13
|
|
Implement support for minimizing windows on Wayland
This required a bit of extra code to deal with the transition from minimized
back to fullscreen
|
|
cf84ec44
|
2021-01-20T23:19:24
|
|
Improve reliability of cursor hiding on GNOME Wayland
Hiding the cursor doesn't appear to work reliably on GNOME when another window
steals mouse focus right as we call SDL_ShowCursor(SDL_DISABLE). This can happen
when the keyboard shortcut inhibition permission prompt appears in response to a
call to SDL_SetRelativeMouseMode() with SDL_HINT_GRAB_KEYBOARD=1. The result is
that the default cursor is stuck locked in position and visible on screen
indefinitely.
By redrawing the cursor on pointer focus enter, the cursor now disappears upon
the first mouse motion event. It's not perfect but it's way better than the
current behavior.
|
|
d789ba83
|
2021-01-19T18:20:07
|
|
Implement keyboard grab support for Wayland
Use zwp_keyboard_shortcuts_inhibit_manager_v1 to allow SDL applications
to capture system keyboard shortcuts like Alt+Tab when keyboard grab is
enabled via SDL_HINT_GRAB_KEYBOARD.
|
|
6a342954
|
2021-01-14T14:42:53
|
|
Fixed bug 5451 - Can't create EGLSurface in Wayland from SDLWindow (no EGLNativeWindow pointer)
sashikknox
In some cases, need create EGLWindow with SDLWindow. In X11 i can get pointer to NativeWindow from **struct SDL_SysWMinfo wmInfo**
```C++
struct SDL_SysWMinfo wmInfo;
SDL_GetWindowWMInfo(ptSDLWindow, &wmInfo)
#if defined(__unix__) && defined(SDL_VIDEO_DRIVER_X11)
nativeWindow=(EGLNativeWindowType)wmInfo.info.x11.window;
nativeDisplay=(EGLNativeDisplayType)wmInfo.info.x11.display;
#endif
```
than i can create EGLSurface
```
eglCreateWindowSurface(nativeDisplay, EGL_CONFIG, nativeWindow, SURFACE_ATTRIBUTES);
```
in Wayland i can do it with same way, just need pointer to **EGLWindow**, we already have pointer to **wl_display** from **SDL_sysWMInfo**, need add to **wl** struct in SDL_SysWMInfo another pointer to **struct wl_egl_window *egl_window;**. And in wayland backend, in function **Wayland_GetWindowWMInfo** return pointer to **egl_window** from **SDL_WindowData**
Now i use patched statically built SDL2 in port of Quake 2 GLES2 for SailfishOS (it use QtWayland):
link to SDL2 commit and changed string for patch:
- https://github.com/savegame/lp-public/commit/6858a618cd179b766fe3cab36055f07cb03ad0ea
- https://github.com/savegame/lp-public/blob/b1e29e87b9d15780e47f04918b329ac15554fc69/SDL2/src/video/wayland/SDL_waylandwindow.c#L463
link to use in Quake2 port:
1. here i get pointer to EGLNativeWindowType: https://github.com/savegame/lp-public/blob/6d94fedb1b720da24999ae6286a1809cd3d55ff5/Engine/Sources/Compatibility/OpenGLES/EGLWrapper.c#L319
2. then use it for create EGLSurface: https://github.com/savegame/lp-public/blob/6d94fedb1b720da24999ae6286a1809cd3d55ff5/Engine/Sources/Compatibility/OpenGLES/EGLWrapper.c#L391
|
|
9130f7c3
|
2021-01-02T10:25:38
|
|
Updated copyright for 2021
|
|
cb361896
|
2020-12-09T07:16:22
|
|
Fixed bug 5235 - All internal sources should include SDL_assert.h
Ryan C. Gordon
We should really stick this in SDL_internal.h or something so it's always available.
|
|
f311e0a8
|
2020-10-19T17:29:16
|
|
Removed debug log message
|
|
93e14497
|
2020-10-14T15:50:04
|
|
SDL_waylanddatamanager.c (mime_data_list_add): constify the buffer param
Fixes -Wdiscarded-qualifiers warnings from Wayland_data_source_add_data()
|
|
76980e30
|
2020-10-08T16:42:20
|
|
Added events for dynamically connecting and disconnecting displays, with an iOS implementation
|
|
f31ad57f
|
2020-10-05T19:17:52
|
|
Implement keyboard repeat in wayland video driver
|
|
8709f67e
|
2020-09-08T08:42:30
|
|
Fixed bug 5215 - Fixing filenames passed to dlopen for OpenBSD
Brad Smith
Attached is a patch to use the proper filenames when trying to dlopen the respective shared libraries on OpenBSD.
|