Commit Graph

6598 Commits

Author SHA1 Message Date
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
Simon Ser f8d70fbece cursor: remove usage of wlr_output_cursor_set_image()
Stop using wlr_output_cursor_set_image() because it's getting
dropped. Instead, use wlr_output_cursor_set_buffer().

This mirrors what wlr_output_cursor_set_image() is doing
under-the-hood.
2023-07-03 09:45:34 +02:00
Simon Ser 0fc532f8de cursor: remove wlr_cursor_set_image()
Superseded by wlr_cursor_set_buffer().
2023-07-02 22:42:37 +00:00
Simon Ser 18bafbfc57 xcursor-manager: drop wlr_xcursor_manager_set_cursor_image() 2023-07-02 22:42:37 +00:00
Simon Ser 71c87ff4b8 cursor: add wlr_cursor_set_buffer()
A saner replacement for wlr_cursor_set_image():

- Takes a wlr_buffer instead of numerous parameters and a hardcoded
  format.
- The scale is not used to filter outputs.
- A ref to the buffer is kept to apply it to new outputs.
2023-07-02 22:42:37 +00:00
Simon Ser bb91787b5f cursor: stop using set_image() in wlr_cursor_unset_image()
set_image() will go away.
2023-07-02 22:42:37 +00:00
Manuel Stoeckl bbd53b3b46 screencopy-v1: fix logical->physical region transform
This now matches the transformations used for e.g. cursor scissor
regions and damage.
2023-07-01 10:05:30 -04:00
Alexander Orzechowski 57a0313779 wlr_scene: Don't recompute node location during rendering
We already compute it during the render list creation, we should cache
it and re-use the value.
2023-07-01 09:48:25 +00:00
Alexander Orzechowski 48f2a7a3a1 wlr_scene: Simplify direct scanout handling
By adding a sent_feedback bool into the list entry that we can mutate
we no longer need to maintain this `sent_direct_scanout_feedback` variable.

sent_feedback will also be useful for output layers.
2023-07-01 09:48:25 +00:00
Alexander Orzechowski 9613b3bc8a wlr_scene: Wrap render_list nodes in struct
We will be able to add more state here
2023-07-01 09:48:25 +00:00
Simon Ser 9c2c906518 examples/pointer: use wlr_cursor_set_xcursor() 2023-06-30 17:24:44 +00:00
Simon Ser 53b07b5b72 cursor: set image for new outputs
When an output is added to wlr_cursor, update its cursor image.

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/2119
2023-06-30 17:24:44 +00:00
Simon Ser d5581e42d4 cursor: add cursor_update_outputs()
Sets the cursor image for each output depending on the wlr_cursor
state.
2023-06-30 17:24:44 +00:00
Simon Ser d1d6cd9008 cursor: keep track of XCursor manager and name
Will be useful to apply the current cursor to new outputs.
2023-06-30 17:24:44 +00:00
Simon Ser 69c44de22f cursor: track surface globally, instead of per-output
Most of the surface-related state does not need to be per-output.
Move it to wlr_cursor_state.
2023-06-30 17:24:44 +00:00
Simon Ser c46fabe45c cursor: use wlr_cursor_unset_image() in wlr_cursor_set_surface() 2023-06-30 17:24:44 +00:00
Simon Ser f0b8a68654 cursor: store wlr_cursor inline in wlr_cursor_state
Removes one allocation, makes this a bit more consistent with the
rest of wlroots.
2023-06-30 17:24:44 +00:00
Clayton Craft aca48124ad
backend/drm: use panel_orientation if it is set
This fixes an issue where the panel_orientation parameter was set but wlroots was ignoring it and
returning OUTPUT_TRANSFORM_NORMAL.

Fixes 2e12de96
2023-06-30 09:34:28 -07:00
Simon Ser aa1055134d backend/drm: handle output layer damage 2023-06-30 04:31:50 +00:00
Simon Ser 7811f22250 backend/wayland: handle output layer damage 2023-06-30 04:31:50 +00:00
Simon Ser 13f096b0ac output-layer: add wlr_output_layer_state.damage
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3593
2023-06-30 04:31:50 +00:00
Simon Ser 6eff8651d3 contributing: add instructions for forking 2023-06-29 17:50:44 +00:00
Evyatar Stalinsky 21e96c459d util/log: fix buffer overflow 2023-06-29 15:58:56 +03:00
Alexander Orzechowski c68c9f1685 wlr_scene_buffer: Publicize some state
The sway scene port relies on this to create a copy of the buffer for
saved surface purposes.
2023-06-27 17:25:06 -04:00
Simon Ser f4ee5eae93 backend/headless: leave new outputs disabled by default 2023-06-27 16:26:30 +00:00
Simon Ser e1bdc62c38 backend/x11: leave new outputs disabled by default 2023-06-27 16:26:30 +00:00
Simon Ser 1f716f4bc0 backend/wayland: mark new outputs as disabled
Leave it up to the compositor to enable new outputs (just like the
DRM backend does).
2023-06-27 16:26:30 +00:00
Simon Ser 2aabaf8809 examples: enable new outputs 2023-06-27 16:26:30 +00:00