wlroots/types
Simon Ser a0345f2854 output: add wlr_output_state.allow_artifacts
When starting up, the compositor might call wlr_output_set_mode()
with a mode which is already the current one. wlroots will detect
this and make the wlr_output_set_mode() call a no-op. During the
next wlr_output_commit() call, wlroots will perform an atomic
commit without the ALLOW_MODESET flag.

This is an issue, because some drivers need ALLOW_MODESET even if
the mode is the same. For instance, if the FB stride or modifier
changed, some drivers require a modeset.

Add a new flag "allow_artifacts" which is set when the compositor
calls mode-setting functions. Use this flag to figure out whether
we want to perform atomic commits with ALLOW_MODESET.

(The name "allow_artifacts" is picked because ALLOW_MODESET is a
misnomer, see [1].)

[1]: https://patchwork.freedesktop.org/patch/505107/

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3499
2022-09-30 10:58:17 +00:00
..
buffer buffer: split into multiple files 2022-09-16 18:32:22 +02:00
data_device Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
output output: add wlr_output_state.allow_artifacts 2022-09-30 10:58:17 +00:00
scene wlr_scene: Clarify surface commit frame events 2022-09-05 08:24:50 +00:00
seat util/array: unclutter 2022-08-29 13:48:42 +00:00
tablet_v2 util/set: overhaul 2022-08-29 13:48:42 +00:00
xdg_shell xdg-toplevel: validate resize_edge 2022-09-17 08:20:24 +00:00
meson.build buffer: split into multiple files 2022-09-16 18:32:22 +02:00
wlr_compositor.c subcompositor: move+rename subsurface_parent_commit() 2022-09-12 18:44:36 +00:00
wlr_cursor.c cursor: Don't warp to (0,0) when last output is disconnected 2022-09-21 14:25:09 -04:00
wlr_damage_ring.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_data_control_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_drm_lease_v1.c wlr_drm_lease_v1: Fix use-after-free in backend_destroy() 2022-09-15 21:24:05 -04:00
wlr_drm.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_export_dmabuf_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_foreign_toplevel_management_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_fullscreen_shell_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_gamma_control_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_idle_inhibit_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_idle.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_input_device.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_input_inhibitor.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_input_method_v2.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_keyboard_group.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_keyboard_shortcuts_inhibit_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_keyboard.c util/array: unclutter 2022-08-29 13:48:42 +00:00
wlr_layer_shell_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_linux_dmabuf_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_matrix.c matrix: remove wlr_matrix_projection() 2022-06-08 19:27:36 +00:00
wlr_output_damage.c output: fix back buffer checks 2022-09-21 16:18:16 +02:00
wlr_output_layout.c output-layout: improve wlr_output_layout_output_in_direction() 2022-08-30 19:26:23 +03:00
wlr_output_management_v1.c wlr-output-management: fix broken asserts 2022-08-25 00:51:32 +02:00
wlr_output_power_management_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_pointer_constraints_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_pointer_gestures_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_pointer.c wlr_input_device: remove anon union field 2022-06-21 18:42:07 +00:00
wlr_presentation_time.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_primary_selection_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_primary_selection.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_region.c region: stabilize interface 2021-07-05 09:25:25 -04:00
wlr_relative_pointer_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_screencopy_v1.c screencopy-v1: use wlr_buffer APIs 2022-09-22 18:01:52 +00:00
wlr_server_decoration.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_session_lock_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_single_pixel_buffer_v1.c single-pixel-buffer-v1: new protocol implementation 2022-08-03 10:35:23 +00:00
wlr_subcompositor.c subcompositor: consider mapping after adding 2022-09-12 18:44:36 +00:00
wlr_switch.c wlr_input_device: remove anon union field 2022-06-21 18:42:07 +00:00
wlr_tablet_pad.c wlr_input_device: remove anon union field 2022-06-21 18:42:07 +00:00
wlr_tablet_tool.c wlr_input_device: remove anon union field 2022-06-21 18:42:07 +00:00
wlr_text_input_v3.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_touch.c wlr_input_device: remove anon union field 2022-06-21 18:42:07 +00:00
wlr_viewporter.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_virtual_keyboard_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_virtual_pointer_v1.c wlr_virtual_pointer_v1: fix discrete scrolling 2022-09-08 05:33:28 +02:00
wlr_xcursor_manager.c Make wlr_xcursor_manager_load() return a bool 2020-05-18 16:48:44 +02:00
wlr_xdg_activation_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_xdg_decoration_v1.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_xdg_foreign_registry.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_xdg_foreign_v1.c xdg-foreign-v1: s/unmap/destroy 2022-09-11 09:20:08 +03:00
wlr_xdg_foreign_v2.c xdg-foreign-v2: s/unmap/destroy 2022-09-11 09:20:08 +03:00
wlr_xdg_output_v1.c types/wlr_xdg_output_v1: Fix wl_output.done bug. 2022-08-19 14:22:23 +00:00