weston/libweston
Leandro Ribeiro 6d8e3c569c drm: drop disable_planes being false as a condition to support writeback
In 2d70bdfdcd "drm-backend: add support to
output capture writeback source" we've ensured that disable_planes
should be false in order to support writeback capture tasks.

But this was wrong; disable_planes is transient (it is true when
there's some sort of content recording happening), and we enable/disable
that during compositor's lifetime.

This is dangerous and may result in a crash. Imagine the following
sequence:

        1. screen recording starts, disable_planes is set to true.

        2. for whatever reason the output size changes, and we end up
        not updating capture info because we think that writeback is not
        supported by the device.

        3. screen recording stops, disable_planes is set to false.

        4. user tries to take a writeback screenshot, and the
        DRM-backend will pull a writeback capture task with
        weston_output_pull_capture_task().

        5. this function has an assert to ensure that the DRM-backend
        did not forget to update the capture info, and we hit that
        assert.

With this patch we drop disable_planes being false as a condition to
support writeback. So now we keep the capture info up-to-date even when
screen recording is happening, and we gracefully fail writeback tasks.

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
2023-06-05 07:51:27 +00:00
..
backend-drm drm: drop disable_planes being false as a condition to support writeback 2023-06-05 07:51:27 +00:00
backend-headless libweston: pass backend to weston_windowed_output_api::create_head() 2023-04-17 09:38:50 +02:00
backend-pipewire backend-pipewire: remove unused fields from pipewire_frame_data 2023-05-23 10:41:25 +02:00
backend-rdp libweston: consolidate 'Using GL/Pixman renderer' log message 2023-05-04 14:47:49 +02:00
backend-vnc libweston: consolidate 'Using GL/Pixman renderer' log message 2023-05-04 14:47:49 +02:00
backend-wayland backend-wayland: fix --fullscreen 2023-05-30 08:35:23 +02:00
backend-x11 libweston: consolidate 'Using GL/Pixman renderer' log message 2023-05-04 14:47:49 +02:00
color-lcms color-lcms: print curve sets on pipeline optimizer debug scope 2023-05-26 10:31:34 +00:00
desktop libweston-desktop: implement tablet tool grab 2023-03-31 12:10:26 +00:00
renderer-gl gl-renderer: Get rid of begin fence sync 2023-04-03 09:52:36 +02:00
shell-utils libweston: Convert struct weston_subsurface to weston_coord 2023-02-24 18:44:19 +00:00
animation.c Fix indentation all through the project 2021-07-31 15:28:20 +00:00
auth.c libweston: Add user authentication support via PAM 2022-11-23 16:58:48 +01:00
backend.h input: add weston grab interfaces for tablet tools 2023-03-31 12:10:26 +00:00
bindings.c input: Fix uint/enum declaration mismatch 2023-04-11 11:44:34 +00:00
clipboard.c libweston: correct argument name in the handler of wl_data_source.accept 2022-04-14 12:05:57 +00:00
color-noop.c libweston: add HDR metadata to weston_output 2022-05-27 10:30:35 +00:00
color.c color-lcms: add debug scope for color tranformations 2023-04-12 10:03:32 +00:00
color.h color-lcms: add debug scope for color tranformations 2023-04-12 10:03:32 +00:00
compositor.c libweston: consolidate 'Using GL/Pixman renderer' log message 2023-05-04 14:47:49 +02:00
content-protection.c content-protection: Don't leak update timer on shutdown 2021-12-08 13:38:18 +00:00
data-device.c libweston: Use weston_coord in surface committed handler 2023-02-24 18:44:19 +00:00
dbus.c dbus: Don't return value from void function 2019-06-11 11:31:04 +01:00
dbus.h Rename compositor.h to libweston/libweston.h 2019-04-18 12:31:46 +03:00
drm-formats.c drm-formats: add weston_drm_format_array_count_pairs() 2021-11-25 10:47:45 -03:00
git-version.h.meson Add Meson build system 2018-12-09 14:50:54 +02:00
gl-borders.c libweston, backends: move GL renderer interface into weston_renderer 2023-01-16 20:40:34 +01:00
gl-borders.h libweston, backends: move GL renderer interface into weston_renderer 2023-01-16 20:40:34 +01:00
input.c libweston/input: Use WESTON_ACTIVATE_FLAG_FULLSCREEN in activation logic 2023-05-25 12:07:03 +03:00
launcher-impl.h launchers: Remove --tty option 2022-03-03 17:00:15 -06:00
launcher-libseat.c libweston: Enable logging for libseat launcher 2022-03-10 17:13:16 +02:00
launcher-logind.c libweston, backends: pass backend parameter to weston_backend functions 2023-01-13 18:55:59 +01:00
launcher-util.c launchers: Remove --tty option 2022-03-03 17:00:15 -06:00
launcher-util.h launchers: Remove --tty option 2022-03-03 17:00:15 -06:00
libinput-device.c libinput: hook up tablet events 2023-03-31 12:10:26 +00:00
libinput-device.h libinput: hook up tablet events 2023-03-31 12:10:26 +00:00
libinput-seat.c libweston: Use weston_coord in struct weston_pointer 2023-02-17 13:51:23 +00:00
libinput-seat.h Rename compositor.h to libweston/libweston.h 2019-04-18 12:31:46 +03:00
libweston-internal.h tablet: Add binding to activate surfaces using the tablet tool 2023-03-31 12:10:26 +00:00
linux-dmabuf.c helpers: Add a u64 from 2 u32 helper 2022-10-27 08:13:30 +00:00
linux-dmabuf.h linux-dmabuf: add missing includes and declarations 2022-12-16 15:05:10 +02:00
linux-explicit-synchronization.c libweston: Advertise minor version 2 of zwp_linux_explicit_synchronization_v1 2019-08-02 15:00:08 +00:00
linux-explicit-synchronization.h libweston: Support zwp_surface_synchronization_v1.set_acquire_fence 2019-02-06 12:21:56 +00:00
linux-sync-file-uapi.h libweston: Introduce an internal linux sync file API 2019-02-06 12:21:56 +00:00
linux-sync-file.c libweston: export weston_linux_sync_file_read_timestamp() 2019-04-18 12:50:55 +03:00
linux-sync-file.h libweston: export weston_linux_sync_file_read_timestamp() 2019-04-18 12:50:55 +03:00
log.c libweston: Add weston_log_paced() 2022-11-08 08:32:26 -06:00
meson.build libweston,shared/meson:build Add xkbcommon missing depends 2023-05-18 19:23:12 +03:00
noop-renderer.c pixman-renderer: set renderbuffer via new repaint_output parameter 2023-01-23 20:05:21 +00:00
output-capture.c drm: allow to skip composition if pending capture is writeback 2023-03-31 10:36:31 +00:00
output-capture.h drm: allow to skip composition if pending capture is writeback 2023-03-31 10:36:31 +00:00
pixel-formats.c pixel-formats: add pixel_format_get_array() 2023-01-29 14:47:03 +01:00
pixel-formats.h pixel-formats: add pixel_format_get_array() 2023-01-29 14:47:03 +01:00
pixman-renderer.c pixman-renderer: hold a reference for renderbuffers on the output state list 2023-03-03 07:36:32 +00:00
pixman-renderer.h pixman-renderer: use pixel_format_info instead of pixman_format_code_t 2023-01-28 12:59:16 +00:00
plugin-registry.c Rename plugin-registry.h to libweston/plugin-registry.h 2019-04-18 12:31:46 +03:00
screenshooter.c screenshooter: Add SHM buffer destroy listener to avoid invalid memcpy 2022-10-03 16:52:16 +02:00
spring-tool.c Rename compositor.h to libweston/libweston.h 2019-04-18 12:31:46 +03:00
timeline.c libweston: fix typos 2021-02-24 10:01:17 -05:00
timeline.h libweston: move TYPEVERIFY macro into shared 2021-02-17 12:52:33 +00:00
touch-calibration.c libweston: Use weston_coord space conversion functions 2023-02-01 07:27:05 -06:00
vertex-clipping.c clipping: Use struct weston_coord in vertex clipping code 2023-02-09 12:12:40 +00:00
vertex-clipping.h clipping: Use struct weston_coord in vertex clipping code 2023-02-09 12:12:40 +00:00
weston-direct-display.c libweston: Add weston-direct-display server side implementation 2019-11-18 19:33:09 +02:00
weston-log-file.c weston-log: destroy subscriptions with destruction of subscribers 2020-02-10 10:53:50 +00:00
weston-log-flight-rec.c weston-log-flight-rec: Map ring buffer using memset() 2023-03-10 11:35:04 +01:00
weston-log-internal.h weston-log-wayland: make stream_destroy() use weston_log_subscriber_release() 2020-02-10 10:53:50 +00:00
weston-log-wayland.c Fix indentation all through the project 2021-07-31 15:28:20 +00:00
weston-log.c libweston/weston-log: Add a iterator helper for debug scope 2023-05-30 11:05:14 +00:00