Commit Graph

6625 Commits

Author SHA1 Message Date
JiDe Zhang 61903ed66b wlr_output_cursor: assert renderer isn't NULL
When a wlr_output add to wlr_output_layout, wlr_cursor will create
wlr_buffer of xcursor for the wlr_output, this behavior depends
wlr_renderer of wlr_output, using assert to ensure renderer is
initialized before wlr_output_layout_add and wlr_cursor_set_buffer/
wlr_cursor_set_xcursor.
2023-08-03 02:13:00 +00:00
Simon Ser d40bcfe2c1 xwayland: avoid calling xwm_get_atom_name() when debug logs are off
xwm_get_atom_name() performs a roundtrip to the X11 server. Avoid
calling this blocking function if debug logs are turned off.
2023-07-28 14:21:37 +02:00
Simon Zeni 60ca6f17eb types/wlr_drm_lease_v1: downgrade DRM backend error message to debug
Downgrades the error message printed out when no DRM backend is given from `WLR_ERROR` to
`WLR_DEBUG`
2023-07-27 22:14:46 -04:00
q234rty 061f5fafbd render/vulkan: use renamed glslang binary by default
glslang 12.3.0 renamed glslangValidator to glslang,
use that by default and use the old name as a fallback.

References: https://github.com/KhronosGroup/glslang/blob/main/CHANGES.md?plain=1#L14
2023-07-27 16:06:49 +08:00
Kirill Primak 42a5b6f62a compositor: add "mapped" flag doc 2023-07-26 20:39:03 +00:00
Kirill Primak 7df11ada5e Unmap wlr_surface before making its role object inert 2023-07-26 20:39:03 +00:00
Kirill Primak 529f1b82ee xwayland/shell: don't listen to wlr_surface.events.destroy
The wlr_xwayland_surface_v1 will be destroyed automatically
from xwl_surface_role_destroy().
2023-07-26 20:31:03 +00:00
Simon Ser 307720d501 backend/drm: restore custom modes
We were only restoring fixed modes here. The DRM backend no longer
creates fixed modes when the compositor sets a custom mode, so we
need to handle this situation when restoring.

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3698
2023-07-26 17:08:47 +00:00
rewine 2f859f5bec
wlr_output: add comments for signal parameters 2023-07-26 13:55:34 +08:00
Leonardo Hernández Hernández e8d545a977
xdg-shell: add support for v6
This adds the suspended toplevel state
2023-07-23 20:30:43 -06:00
Simon Ser 04e4e06986 cursor-shape-v1: new protocol implementation
References: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/194
2023-07-24 01:00:19 +00:00
Alexander Orzechowski fd540f6d07 wlr_scene: Don't damage when setting opaque region
Opaque region is a optimization hint, (bugs outstanding) it will not
change the output contents, therefore damage does not need to be submitted.

However, we still need to update the visibility state of the other
nodes in the tree. To do this call scene_update_region() by ourselves
but not `scene_node_update()` which will damage the outputs.
2023-07-22 19:23:36 -04:00
Alexander Orzechowski a32180afa7 wlr_scene: Fix damage tracking with non atomic opaque region configuration
We need to intersect the opaque region with the node size or else we'll
get damage tracking effects with compositors attempting to use
wlr_scene_buffer_set_opaque_region() along with resizing the buffer
at the same time in a certain order.

Consider this: I have a new buffer that I want to commit to my scene buffer
that is smaller than the old one. However, I still have the old opaque
region that is the size of the old larger buffer, so that means that
for the small moment between when we reconfigure the opaque region for the
new buffer the opaque region will be oversized. Scene logic will then
try to apply occluding optimizations outside of the node boundaries
causing damage artifacts.
2023-07-22 19:23:36 -04:00
Rouven Czerwinski 63f5851b6f session-lock: add missing lock_surface_destroy
Add the missing lock_surface_destroy which was removed in dc7686c114
("session-lock: don't remove inert role resource"). Otherwise we never
remove the surface from our internal state, leading to us killing the
locking daemon with a protocol error that is totally our fault.
2023-07-21 18:56:14 +02:00
rewine f3cf830e9a wlr_idle_inhibit_manager_v1: add comments for signal parameters 2023-07-21 02:35:48 +00:00
Brett Ernst 7ce4d557c5 backend/x11: log output test failure reasons 2023-07-18 15:27:44 -07:00
Brett Ernst 49c7fcdfb1 backend/wayland: log output test failure reasons 2023-07-18 15:26:54 -07:00
Rose Hudson 71daec9441 export-dmabuf, screencopy: schedule_frame -> needs_frame
needs_frame is for backends to trigger frames for reasons that
compositors couldn't see coming. schedule_frame is freaky and I want to
remove it. These protocols aren't backends but in this case they're
close enough, so switch to needs_frame.

CC #3664
2023-07-18 12:01:16 +01:00
Kirill Primak 7791ffe058 data-device: remove undefined grab interface decls 2023-07-17 16:24:05 +00:00
Kirill Primak c6603288fb xdg-shell: update stale docs 2023-07-17 19:12:02 +03:00
Simon Ser 000081db19 cursor, output: apply viewport to cursor
Instead of passing the scale, pass the source and destination
boxes.

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3676
2023-07-17 14:55:22 +00:00
John Lindgren 657ca2205f wlr_gamma_control: add missing forward declarations
Fixes an error seen in labwc CI builds with -Werror:

    ../subprojects/wlroots/include/wlr/types/wlr_gamma_control_v1.h:44:16:
    error: ‘struct wlr_output_state’ declared inside parameter list
    will not be visible outside of this definition or declaration [-Werror]
       44 |         struct wlr_output_state *output_state);
          |                ^~~~~~~~~~~~~~~~
2023-07-17 10:10:06 -04:00
Ronan Pigott b18c76642a scene: apply rounding when translating buffer damage
Without a round in this case the damage region is translated to truncated coordinates, potentially
misplacing it relative to the actual position of that region in the output buffer.
2023-07-16 02:55:09 -07:00
Leonardo Hernández Hernández 4de9c9c47f scene: send wl_surface.preferred_buffer_scale 2023-07-15 10:28:25 +00:00
Simon Ser 37ef9d7356 backend/drm: stop checking for wlr_client_buffer
wlr_client_buffer is a bad indicator for direct scan-out.
Compositors might use the underlying wlr_buffer instead.
2023-07-14 15:20:35 +02:00
Simon Ser 67447d6cb4 presentation-time: add separate helper for zero-copy
The backend is not able to tell whether a surface is being
presented via direct scan-out or not. The backend will set
ZERO_COPY if the buffer submitted via the output commit was
presented in a zero-copy fashion, but will no know whether the
buffer comes from the compositor or the client.
2023-07-14 15:20:35 +02:00
Simon Ser fe84bfc8d9 scene: add wlr_scene_output_sample_event
This contains the output and a bool indicating direct scan-out.
2023-07-14 15:16:12 +02:00
Simon Ser 88942d43fd scene: rename output_present event to output_sample
Using "present" is confusing here: the event is emitted when the
buffer is being sampled to be displayed on an output, not when it's
being presented on-screen.

Rename to match the presentation-time terminology.
2023-07-14 15:06:13 +02:00
Alexander Orzechowski d8585d661c wlr_scene: Fix buffer damage for output state
We would transform the damage based on output state which might be
out of date.
2023-07-12 17:20:12 +00:00
Brett Ernst cb5d9abf10 add minimalist cairo example 2023-07-12 10:18:36 +00:00
Simon Ser 1205f03ec9 render/gles2: wrap timer setup in push_gles2_debug()
With this, errors should be properly wrapped in the debug scope.
2023-07-12 06:38:02 +00:00
Simon Ser 4811d9fb18 render: document wlr_buffer_pass_options.timer 2023-07-11 18:19:03 +00:00
Simon Ser b7dca21c2b render: constify struct wlr_buffer_pass_options
Let's not allow renderer implementations to mutate the passed in
options.
2023-07-11 18:19:03 +00:00
Simon Ser fe06e5f49a Use wl_container_of() instead of casts
This slightly improves type safety.

The culprits were found with:

    git grep -E '\([a-z0-9_ ]+ \*\)\W?[a-z]'
2023-07-11 20:16:17 +02:00
Simon Ser c2c536de03 render/gles2: drop unnecessary cast
We can just refer to the struct field here.
2023-07-11 20:15:45 +02:00
Rose Hudson 214df8eda0 scene_output: optionally record and report timings 2023-07-10 09:57:02 +00:00
Kirill Primak f4eaab12a0 input-method-v2: don't remove inert role resource 2023-07-10 10:03:24 +02:00
Kirill Primak fce7cb249f xwayland-shell: don't remove inert role resource 2023-07-10 10:03:24 +02:00
Kirill Primak dc7686c114 session-lock: don't remove inert role resource 2023-07-10 10:03:24 +02:00
Kirill Primak 7f2ed1e62c layer-shell: don't remove inert role resource 2023-07-10 10:03:24 +02:00
Kirill Primak 7d176b6237 subcompositor: don't remove inert role resource
Now that role objects are stored as resources, we can distinguish
the inert object case from it being destroyed by the client:

- When the resource is destroyed by the client, role_resource == NULL
- When the resource is made inert, role_resource != NULL but its
  user_data is NULL
2023-07-10 10:03:08 +02:00
Simon Ser 27edd024f8 xwayland: pass NULL as event data
This is more extensible: in the future we can introduce event
structs if we need to.
2023-07-09 12:18:49 +02:00
Simon Ser 76e2a74282 xwayland: use initializer for struct wlr_xwayland_resize_event
Ensures there are no fields with uninitialized memory.

Also remove an outdated TODO: Xwayland only supports a single seat.
2023-07-09 12:18:49 +02:00
Simon Ser 5bb0057794 xwayland: document event data 2023-07-09 11:48:51 +02:00
Simon Ser 19ba3f0c2a xwayland: drop struct wlr_xwayland_move_event
This only contains the xsurface, which isn't particularly useful.
2023-07-09 11:48:16 +02:00
Simon Ser 972c5f0c11 xwayland: document associate/dissociate events 2023-07-09 11:47:05 +02:00
Simon Ser 7a9f8d8d6b Use struct initializers instead of memset()
This is a bit more type-safe.
2023-07-07 17:31:11 +02:00
Kirill Primak 4966857f21 viewporter: check for an existing viewport 2023-07-07 12:49:06 +03:00
Simon Ser 77d5631e42 license: add copyright line for all contributors
Recently it has come up that someone wants to re-use part of
wlroots in their own project. The standard procedure is to copy
over the license text and copyright lines.

Let's make it clear that the wlroots copyright is held by all
wlroots contributors, and that the license file comes from the
wlroots project.

See [1] for more details.

[1]: https://www.linuxfoundation.org/blog/blog/copyright-notices-in-open-source-software-projects
2023-07-05 10:27:50 +02:00
Simon Ser 6f8287128b output: drop wlr_output_cursor_set_image()
This function takes a pointer to memory with a hardcoded format
and many parameters to describe the pixel buffer.
wlr_output_cursor_set_buffer() can be used instead.
2023-07-03 09:46:54 +02:00