Commit graph

6839 commits

Author SHA1 Message Date
Simon Ser
98c708618e backend/wayland: populate pointer axis relative direction 2024-01-23 08:37:29 +00:00
Simon Ser
7a58f41416 backend/libinput: populate pointer axis relative direction 2024-01-23 08:37:29 +00:00
Simon Ser
00bb1b0f84 seat/pointer: add support for axis_relative_direction event 2024-01-23 08:37:29 +00:00
Simon Ser
88b16bac54 pointer: add support for axis relative direction 2024-01-23 08:37:29 +00:00
Simon Ser
b80337a8f2 xdg-shell: assert that configure events carry positive or zero sizes
Negative values here would indicate a compositor bug. For xdg_popup,
zero values are not allowed.
2024-01-22 17:49:38 +01:00
Kirill Primak
be1c48cbfb layer-shell: forbid set_size with values ≥INT32_MAX 2024-01-22 19:01:57 +03:00
Kirill Primak
0b090c83fb single-pixel-buffer: send wl_buffer.release 2024-01-18 21:20:32 +03:00
Kirill Primak
58bb49a00b security-context-v1: fix possible leaks on wl_client_create() and state copying errors 2024-01-17 15:44:37 +00:00
Kirill Primak
d18670b922 xwayland: close pipe fds on set_cloexec() error 2024-01-17 15:44:37 +00:00
Kirill Primak
db69dcf767 backend/x11: handle touchpoint allocation failure 2024-01-17 15:44:37 +00:00
Kirill Primak
20b99ed854 render/drm_format_set: fix possible leak on realloc error 2024-01-17 15:44:37 +00:00
Kirill Primak
3eb89e5325 render/vulkan: fix possible double free 2024-01-17 15:44:37 +00:00
Isaac Freund
7129eaa1f2 keyboard: fix type of wlr_keyboard_modifiers.group
This isn't a breaking change since both of these typedefs are uint32_t
but this should make things a bit less confusing for readers.
2024-01-17 11:00:52 +03:00
Kirill Primak
ce89f49b7a tinywl: depend on the server xdg-shell header 2024-01-09 21:39:02 +03:00
MaxVerevkin
48721bca65 fix outdated comment in wlr_output.h 2024-01-07 00:03:27 +02:00
Simon Ser
a0b1329ee6 Fix bool return types
This makes wlroots build in C23 mode.

C23 is more strict and rejects implicit conversions from bool to a
pointer.
2024-01-04 22:24:06 +01:00
Simon Ser
2f2a55ebd3 render: stop auto-creating wl_drm
wl_drm is a legacy interface superseded by the linux-dmabuf
protocol. All clients should migrate.

As a first step, stop creating the wl_drm global by default.
This should let us discover any remaining issues in clients.
Compositors can still manually create the global if they want to.
As a second step, we can completely drop our implementation.
2024-01-03 20:52:34 +00:00
Simon Ser
d0da76fbf6 wl_drm: add deprecation notice 2024-01-03 20:52:34 +00:00
Simon Ser
57d7d79982 region: add docs for wlr_region_scale_xy() and wlr_region_confine() 2024-01-03 21:19:41 +03:00
Simon Ser
f81c3d93cd backend/drm: save current refresh rate
wlr_output.refresh is populated by core wlr_output, and thus will
be zero for a custom mode with an unset refresh rate.

Save the refresh rate from the drmModeModeInfo in wlr_drm_connector
instead.

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3791
2023-12-30 20:06:33 +01:00
Simon Ser
ab924064f2 scene: drop wlr_scene_set_presentation() 2023-12-27 13:41:20 +01:00
Simon Ser
d68ba9d6c2 presentation-time: drop wlr_presentation arg
There can only be a single presentation-time global advertised to
clients, this it's unnecessary to pass around the wlr_presentation
pointer.
2023-12-27 13:41:01 +01:00
Simon Ser
1968ada213 tearing-control-v1: synchronize state with surface 2023-12-25 18:55:30 +01:00
Simon Ser
0ea6b6e2cc session-lock-v1: use wlr_surface_synced 2023-12-25 18:55:21 +01:00
Simon Ser
aa32d1a127 session-lock-v1: drop negative buffer size checks
The buffer size will never be negative, and the negative checks
are distracting from the real checks here.
2023-12-25 18:54:11 +01:00
Simon Ser
dc3b2b9439 content-type-v1: use wlr_surface_synced 2023-12-25 11:47:15 +01:00
Simon Ser
90e12fb978 pointer-constraints-v1: use wlr_surface_synced 2023-12-25 11:47:15 +01:00
Simon Ser
a6122c3ec5 layer-shell-v1: use wlr_surface_synced 2023-12-25 11:47:15 +01:00
Simon Ser
0e3d2222c2 xdg-decoration: use wlr_surface_synced for toplevel 2023-12-25 11:47:15 +01:00
Simon Ser
96aec06b0a subcompositor: use wlr_surface_synced 2023-12-25 11:47:15 +01:00
Simon Ser
1c3c24825f presentation-time: use wlr_surface_synced 2023-12-25 11:47:15 +01:00
Simon Ser
4b3553409a xdg-shell: use wlr_surface_synced for popups 2023-12-25 11:47:15 +01:00
Simon Ser
9201431c29 xdg-shell: use wlr_surface_synced for toplevel 2023-12-25 11:47:15 +01:00
Simon Ser
69d9a4e2cb xdg-shell: use wlr_surface_synced for wlr_xdg_surface 2023-12-25 11:47:15 +01:00
Simon Ser
7e1ae5548c compositor: add wlr_surface_role.client_commit 2023-12-25 11:47:15 +01:00
Simon Ser
d847516765 compositor: add wlr_surface_synced
A lot of protocols extend the wl_surface state. Such protocols need
to synchronize their extended state with wl_surface.commit and
cached states. Add a new utility for this purpose.
2023-12-25 11:47:15 +01:00
Simon Ser
34d5af4172 compositor: add wlr_surface_state_has_buffer() 2023-12-25 11:47:15 +01:00
Simon Ser
43734f7c62 compositor: fix wlr_surface_has_buffer() doc comment
The function does not check whether the upload succeeded: it does
not check the wlr_client_buffer.
2023-12-25 11:47:14 +01:00
Simon Ser
66b6c349e7 compositor: remove unnecessary wlr_surface.has_buffer
No need to store this bit, we can infer it from buffer_width and
buffer_height.
2023-12-25 11:43:41 +01:00
Simon Ser
cd157a0bd9 compositor: adjust surface_state_move() comment 2023-12-25 11:43:41 +01:00
Simon Ser
da5f53b461 pointer-constraints-v1: reset committed on commit
Knowing which fields changed in the last commit is more useful than
knowing which fields were ever set on the surface.
2023-12-25 10:36:26 +00:00
Simon Ser
85f44f3684 pointer-constraints-v1: add cursor_hint.enabled
This allows compositors to check whether the cursor hint is set.
2023-12-25 10:36:26 +00:00
Simon Ser
df27b29d49 compositor: reset wlr_surface.current.committed on commit
Knowing which fields changed in the last commit is more useful than
knowing which fields were ever set on the surface.
2023-12-25 10:36:26 +00:00
Sergei Trofimovich
f3e1f7b2a7 backend: fix build against upcoming gcc-14 (-Werror=calloc-transposed-args)
`gcc-14` added a new `-Wcalloc-transposed-args` warning recently. It
detected minor infelicity in `calloc()` API usage in `wlroots`:

    ../backend/libinput/tablet_pad.c: In function 'add_pad_group_from_libinput':
    ../backend/libinput/tablet_pad.c:36:38: error: 'calloc' sizes specified with 'sizeof' in the earlier argument and not in the later argument [-Werror=calloc-transposed-args]
       36 |         group->rings = calloc(sizeof(unsigned int), group->ring_count);
          |                                      ^~~~~~~~
    ../backend/libinput/tablet_pad.c:36:38: note: earlier argument should specify number of elements, later size of each element
2023-12-21 21:06:20 +00:00
Simon Ser
11e3c376e7 output-layout: fix missing global for outputs with a custom mode
Before we were populating wlr_output.current_mode with a generated
fixed mode when a custom mode was committed in the DRM backend. But
that's no longer the case: now a custom mode behaves the same under
the DRM backend and other backends.

wlr_output_layout was still assuming that an output without a
current_mode was disabled. Fix that assumption.

Fixes: 5567aefb1c ("backend/drm: Don't add pollute fixed modes list with custom modes")
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3743
2023-12-21 11:28:58 +01:00
Guido Günther
b032161785 input-method: Simplify resetting of input state
We have current and pending state and the code uses struct
assignments between them and resets and frees in multiple places.

Introduce a reset() function so we can unify that.
2023-12-18 16:21:48 +01:00
pastel raschke
3bf9000a52 input-method-v2: validate commit serial 2023-12-18 11:15:51 +01:00
pastel raschke
6ee5bd9eee input-method-v2: free current strings on commit 2023-12-18 11:14:41 +01:00
Simon Ser
81f5607ad9 input-method-v2: drop unnecessary variable and cast 2023-12-18 11:14:08 +01:00
Simon Ser
d6998d36ed xcursor: fix duplicate cursor check check in load_callback()
wlr_xcursor_theme_get_cursor() now does some fallback logic. We
don't want that for checking whether a cursor has already been
loaded.

Fixes: dbedcdb418 ("xcursor: add fallbacks for legacy names")
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3783
2023-12-12 19:45:17 +00:00