Simon Ser
0fc532f8de
cursor: remove wlr_cursor_set_image()
...
Superseded by wlr_cursor_set_buffer().
1 year ago
Simon Ser
18bafbfc57
xcursor-manager: drop wlr_xcursor_manager_set_cursor_image()
1 year ago
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.
1 year ago
Simon Ser
bb91787b5f
cursor: stop using set_image() in wlr_cursor_unset_image()
...
set_image() will go away.
1 year ago
Manuel Stoeckl
bbd53b3b46
screencopy-v1: fix logical->physical region transform
...
This now matches the transformations used for e.g. cursor scissor
regions and damage.
1 year ago
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.
1 year ago
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.
1 year ago
Alexander Orzechowski
9613b3bc8a
wlr_scene: Wrap render_list nodes in struct
...
We will be able to add more state here
1 year ago
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
1 year ago
Simon Ser
d5581e42d4
cursor: add cursor_update_outputs()
...
Sets the cursor image for each output depending on the wlr_cursor
state.
1 year ago
Simon Ser
d1d6cd9008
cursor: keep track of XCursor manager and name
...
Will be useful to apply the current cursor to new outputs.
1 year ago
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.
1 year ago
Simon Ser
c46fabe45c
cursor: use wlr_cursor_unset_image() in wlr_cursor_set_surface()
1 year ago
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.
1 year ago
Alexander Orzechowski
8243399385
output: Set output mode during main commit
...
Removes duplication across all the backends to finally apply the mode
to the output.
1 year ago
Alexander Orzechowski
ea3c6fde3a
wlr_scene: Add opaque region blend mode optimization
...
If we are only rendering within a region of the surface that is
advertised as opaque, we can choose no blending
1 year ago
Kirill Primak
71b57b8d27
fullscreen-shell: set surface role
1 year ago
Simon Ser
be05097968
output: add wlr_output_state_init()
...
This changes the semantics of wlr_output_state. Instead of having
fields with uninitialized memory when missing from the committed
bitflag, all fields are always initialized (and maybe NULL/empty),
just like we do in wlr_surface_state. This reduces the chances of
footguns when reading a field, and removes the need to check for
the committed bitfield everywhere.
A new wlr_output_state_init() function takes care of initializing
the Pixman region.
1 year ago
Simon Ser
8a5b5e6f28
compositor: listen to role_resource destroy signal
...
Call wlr_surface_destroy_role_object() when the role_resource is
destroyed.
1 year ago
Simon Ser
89cb484220
compositor: replace role_data with role_resource
...
This increases type safety, makes it more obvious that role_data
must represent the role object, and will allow for automatic
cleanup when the resource is destroyed.
1 year ago
Simon Ser
00f1870d35
input-method-v2: add popup_surface_from_resource()
...
This checks the resource type before casting its user data pointer.
1 year ago
Kirill Primak
fc9b58e84d
compositor: don't call role unmap hook without an object
1 year ago
Kirill Primak
0f67580aab
compositor: introduce wlr_surface_set_role_object()
1 year ago
Kirill Primak
0040c78c0b
compositor: fix wlr_surface_set_role() error messages
1 year ago
Simon Ser
d59749aa44
cursor: add support for animated XCursor
1 year ago
Simon Ser
6dd8b092e9
output/swapchain: fix error return value types
...
This function returns a bool, not a pointer.
1 year ago
Alexander Orzechowski
b5eaa47049
scene: Use wlr_output_state_copy for direct scanout path
1 year ago
Alexander Orzechowski
4b7c526578
output: Introduce wlr_output_state_copy()
1 year ago
Simon Ser
1e68e1f661
seat: fix keyboard/pointer/touch resource destroy
...
We need to always unlink the resource, even if it's already inert.
seat_client_destroy_*() may be called multiple times on the same
resource.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3638
1 year ago
Simon Ser
c4d4409deb
output: stop using wlr_output.back_buffer in output_ensure_buffer()
...
This allows us to use the new render pass API, and drops some
implicit state usage.
1 year ago
Simon Ser
b625a13156
output: attach buffer to state in output_ensure_buffer()
1 year ago
Alexander Orzechowski
2ac31fc630
wlr_scene: Introduce wlr_scene_buffer_set_filter_mode
1 year ago
Alexander Orzechowski
64c0272f81
output_state: Gamma lut should be freed only if committed
...
We consider state that is not committed to be uninitialized.
1 year ago
Simon Ser
220402b717
cursor: add wlr_cursor_unset_image()
...
It's pretty awkward to call wlr_cursor_set_image() with 6 zeroes.
Hide that awkwardness in wlroots.
1 year ago
Simon Ser
da04b066ea
cursor: add wlr_cursor_set_xcursor()
...
This keeps track of the last set XCursor. If it hasn't changed,
skip the texture upload.
In the future, support for animated XCursors can be added.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3436
1 year ago
Alexander Orzechowski
58a2f8bd5c
wlr_scene: Clear damage ring on transform change
1 year ago
Alexander Orzechowski
61667404ce
wlr_scene: Clear damage ring on scale change
...
If we were trying to change the scale in wlr_scene_output_build_state,
we would be using incorrect damage
1 year ago
Alexander Orzechowski
96b95bf775
wlr_scene: Reset damage ring bounds every frame
...
This fixes damage issues when a output state attempts to change
the transformed size in some way
1 year ago
Alexander Orzechowski
4391845910
wlr_damage_ring_set_bounds: Ignore duplicate size requests
1 year ago
Alexander Orzechowski
3896b6b107
wlr_scene: Fix transforms with non 1 scale
...
wlr_region_transform / wlr_box_transform want unscaled coordinates here
1 year ago
Kirill Primak
753f3cc4fa
compositor: add wlr_surface_role.no_object
...
This commit allows to make a role as not represented by an object,
which fixes calling role commit handlers for roles like cursor
surfaces.
Fixes: 099b9de752
1 year ago
Simon Ser
670915eeea
output: add wlr_output_state_set_layers()
1 year ago
Alexander Orzechowski
0925a500d1
wlr_scene: Don't use direct scanout if trying to commit a new render_format
...
Found by inspection.
1 year ago
Alexander Orzechowski
a09bb1314d
wlr_output_state: Consider gamma_lut uninitialized if not committed
1 year ago
Alexander Orzechowski
b80e67d6e6
wlr_output_state: Consider buffer uninitialized if not committed
1 year ago
Simon Ser
6e8fb5509f
cursor: only reset the cursor when the surface changes
...
If the set_cursor request is used with the same surface, don't call
cursor_output_cursor_reset_image(). That function sends
wl_surface.leave and can cause an infinite feedback loop with some
clients (submitting a LoDPI cursor when the surface leaves an HiDPI
output).
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3669
1 year ago
Alexander Orzechowski
05dd08afe5
scene: introduce wlr_scene_output_build_state()
1 year ago
Alexander Orzechowski
7e67b8152b
scene: Don't rely on output current state during rendering
...
In the next commit, state such as scale, transform, width/height that
we gather from the output might be outdated and incorrect.
1 year ago
Alexander Orzechowski
ae7bad86dd
output: introduce wlr_output_state_set_damage()
1 year ago
Simon Ser
36376e2ddf
gamma-control-v1: stop applying gamma LUTs implicitly
...
Make the compositor responsible for doing that, so that they can
properly integrate with their output commit sequence.
1 year ago