mutter/src/wayland
Jonas Ådahl 02b1cfe08f onscreen/native: Handle unexpected scanout failures async
We test direct client buffer scanout using a TEST_ONLY commit on atomic,
and with various conditions in non-atomic, but if we end up failing to
actually commit despite this, handle the fallout asynchronously. What
this means is that we'll reschedule a new frame immediately.

For this to work, the same scanout buffer needs to be avoided for the
same CRTC. This is done by using the newly added signal on the
CoglScanout object to let the MetaWaylandBuffer object mark the current
buffer as non-working for the onsrceen that it failed on. This allows to
re-try buffers on the same onscreen when new ones are attached.

This queues a full damage, since we consumed the qeued redraw rect. The
redraw rect wasn't lost - it was accumulated to make sure the whole
primary plane was redrawed according to the damage region, whenever we
would end up no longer doing direct scanout, but this accumulation only
works when we're not intentionally stopping to scanout. For now, lets
just damage the whole view, it's just an graceful fallback in response
to an unexpected error anyway.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2854>
2023-03-01 23:57:32 +00:00
..
protocol wayland: Add X11 interop service client protocol 2023-02-13 15:34:24 +00:00
meta-cursor-sprite-wayland.c cursor-sprite: Register all cursor sprites with the cursor tracker 2021-12-22 16:22:08 +00:00
meta-cursor-sprite-wayland.h cursor-sprite: Register all cursor sprites with the cursor tracker 2021-12-22 16:22:08 +00:00
meta-pointer-confinement-wayland.c wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-pointer-confinement-wayland.h backends: Delegate pointer confinements to an impl object 2020-11-27 15:14:33 +00:00
meta-pointer-lock-wayland.c pointer-lock/wayland: Fix coding style 2022-12-18 13:17:49 +01:00
meta-pointer-lock-wayland.h backends: Delegate pointer confinements to an impl object 2020-11-27 15:14:33 +00:00
meta-selection-source-wayland-private.h wayland: Move MetaWaylandDataSourcePrimary to its own file 2020-04-17 00:46:23 +02:00
meta-selection-source-wayland.c wayland: Simplify MetaSelectionSourceWayland 2019-10-11 23:04:01 +02:00
meta-wayland-activation.c wayland: Add device/sequence out parameters getting wayland grab info 2023-01-30 10:56:29 +00:00
meta-wayland-activation.h wayland: Clean up xdg-activation state 2022-07-25 14:55:59 +00:00
meta-wayland-actor-surface.c wayland/actor-surface: Always schedule stage updates on frame callbacks 2023-02-28 12:01:17 +01:00
meta-wayland-actor-surface.h wayland/surface-role: Make geometry scale API return int 2022-06-13 18:38:50 +00:00
meta-wayland-buffer.c onscreen/native: Handle unexpected scanout failures async 2023-03-01 23:57:32 +00:00
meta-wayland-buffer.h onscreen/native: Handle unexpected scanout failures async 2023-03-01 23:57:32 +00:00
meta-wayland-client-private.h Introduce the 'service channel' D-Bus service 2023-02-13 15:34:24 +00:00
meta-wayland-client.c Introduce the 'service channel' D-Bus service 2023-02-13 15:34:24 +00:00
meta-wayland-cursor-surface.c build: Allow disabling xwayland 2023-01-03 20:45:04 +00:00
meta-wayland-cursor-surface.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-data-device-primary.c wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-data-device-primary.h wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-data-device.c compositor: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-data-device.h wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-data-offer-primary.c wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-data-offer-primary.h wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-data-offer.c wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-data-offer.h wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-data-source-primary.c wayland: Add support for wayland-protocols primary selection protocol 2020-05-13 18:27:46 +02:00
meta-wayland-data-source-primary.h wayland: Add support for wayland-protocols primary selection protocol 2020-05-13 18:27:46 +02:00
meta-wayland-data-source.c wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-data-source.h wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-dma-buf.c wayland: Check that the current backend is native before using DMA-BUF FDs 2023-01-31 11:08:26 +00:00
meta-wayland-dma-buf.h wayland/dma-buf: Add meta_wayland_dma_buf_create_source 2022-12-01 09:40:38 +01:00
meta-wayland-dnd-surface.c wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-dnd-surface.h wayland: Move DND surface role into its own file 2019-01-22 18:32:28 +01:00
meta-wayland-egl-stream.c wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-egl-stream.h wayland/egl-stream: Cache texture snippet 2020-01-10 16:01:21 +00:00
meta-wayland-filter-manager.c wayland: Add wl_global filter manager 2023-02-13 15:34:24 +00:00
meta-wayland-filter-manager.h wayland: Add wl_global filter manager 2023-02-13 15:34:24 +00:00
meta-wayland-gtk-shell.c wayland: Add device/sequence out parameters getting wayland grab info 2023-01-30 10:56:29 +00:00
meta-wayland-gtk-shell.h wayland: Add MetaWaylandGtkShell object 2018-11-27 15:34:13 +01:00
meta-wayland-inhibit-shortcuts-dialog.c cleanup: Use g_clear_signal_handler() where possible 2019-11-21 15:02:27 +00:00
meta-wayland-inhibit-shortcuts-dialog.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-inhibit-shortcuts.c cleanup: Use g_clear_signal_handler() where possible 2019-11-21 15:02:27 +00:00
meta-wayland-inhibit-shortcuts.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-input-device.c wayland/input-device: Add next serial helper 2016-10-11 22:51:50 +08:00
meta-wayland-input-device.h wayland/input-device: Add next serial helper 2016-10-11 22:51:50 +08:00
meta-wayland-keyboard.c wayland: Trigger full focus sync after keyboard focus surface is destroyed 2023-02-09 16:23:36 +01:00
meta-wayland-keyboard.h wayland: Add meta_wayland_compositor_is_grabbed() method 2023-01-30 10:56:29 +00:00
meta-wayland-legacy-xdg-foreign.c wayland/xdg-foreign: Fix race condition crash 2023-02-10 18:38:39 +00:00
meta-wayland-legacy-xdg-foreign.h wayland/xdg-foreign: Add support for xdg-foreign-v2 2022-12-17 20:38:23 +00:00
meta-wayland-outputs.c wayland/outputs: Fix potential crash when output has no monitor 2023-02-06 21:37:04 +08:00
meta-wayland-outputs.h wayland: Clean up output state 2022-07-25 14:55:59 +00:00
meta-wayland-pointer-constraints.c build: Allow disabling xwayland 2023-01-03 20:45:04 +00:00
meta-wayland-pointer-constraints.h wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-pointer-gesture-hold.c wayland/pointer-gestures: Fix crash in get_*_gesture after pointer is destroyed 2022-11-25 15:40:12 +00:00
meta-wayland-pointer-gesture-hold.h wayland: Add pointer gesture cancellation internal API 2022-09-29 12:36:43 +00:00
meta-wayland-pointer-gesture-pinch.c wayland/pointer-gestures: Fix crash in get_*_gesture after pointer is destroyed 2022-11-25 15:40:12 +00:00
meta-wayland-pointer-gesture-pinch.h wayland: Add pointer gesture cancellation internal API 2022-09-29 12:36:43 +00:00
meta-wayland-pointer-gesture-swipe.c wayland/pointer-gestures: Fix crash in get_*_gesture after pointer is destroyed 2022-11-25 15:40:12 +00:00
meta-wayland-pointer-gesture-swipe.h wayland: Add pointer gesture cancellation internal API 2022-09-29 12:36:43 +00:00
meta-wayland-pointer-gestures.c wayland/pointer-gestures: Implement hold gesture 2021-12-02 20:48:24 +00:00
meta-wayland-pointer-gestures.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-pointer.c wayland/pointer: Check for surface resource 2023-02-25 19:18:43 +01:00
meta-wayland-pointer.h wayland: Add meta_wayland_compositor_is_grabbed() method 2023-01-30 10:56:29 +00:00
meta-wayland-popup.c wayland: Drop redundant MetaDisplay grab op 2023-01-30 10:56:29 +00:00
meta-wayland-popup.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-presentation-time-private.h wayland: Clean up presentation-time state 2022-07-25 14:55:59 +00:00
meta-wayland-presentation-time.c clutter: Pass 'ClutterFrame' in all stage update signals 2023-01-23 15:57:50 +01:00
meta-wayland-private.h wayland: Add a prepare-shutdown signal 2023-01-03 20:45:04 +00:00
meta-wayland-region.c src: Stop using GSlice 2021-02-22 13:52:27 +01:00
meta-wayland-region.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-seat.c wayland: Add device/sequence out parameters getting wayland grab info 2023-01-30 10:56:29 +00:00
meta-wayland-seat.h wayland: Add device/sequence out parameters getting wayland grab info 2023-01-30 10:56:29 +00:00
meta-wayland-shell-surface.c backend: Get 'is-stage-views-scaled' from backend 2022-12-17 13:52:51 +00:00
meta-wayland-shell-surface.h wayland: Rework asynchronous window configuration 2019-12-09 10:09:40 +01:00
meta-wayland-single-pixel-buffer.c wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-single-pixel-buffer.h wayland: Add single pixel buffer support 2022-08-02 12:19:42 +00:00
meta-wayland-subsurface.c wayland/subsurface: Check ancestor instead of toplevel window for actor sync 2022-12-09 20:48:55 +00:00
meta-wayland-subsurface.h wayland/surface: Use transactions for all sub-surface hierarchy changes 2022-12-01 12:41:32 +01:00
meta-wayland-surface.c wayland: Don't overwrite surface offsets 2023-02-14 10:29:00 -05:00
meta-wayland-surface.h wayland/surface: Add getter for MetaWaylandCompositor 2023-02-13 15:34:24 +00:00
meta-wayland-tablet-cursor-surface.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-tablet-cursor-surface.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-tablet-manager.c wayland: Clean up tablet manager state 2022-07-25 14:55:59 +00:00
meta-wayland-tablet-manager.h wayland: Clean up tablet manager state 2022-07-25 14:55:59 +00:00
meta-wayland-tablet-pad-group.c src: Stop using GSlice 2021-02-22 13:52:27 +01:00
meta-wayland-tablet-pad-group.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-tablet-pad-ring.c src: Stop using GSlice 2021-02-22 13:52:27 +01:00
meta-wayland-tablet-pad-ring.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-tablet-pad-strip.c src: Stop using GSlice 2021-02-22 13:52:27 +01:00
meta-wayland-tablet-pad-strip.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-tablet-pad.c wayland: Setup and use ownership chains 2022-12-17 15:13:48 +01:00
meta-wayland-tablet-pad.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-tablet-seat.c wayland: Fix thinko in paired tablet loop filter 2022-08-13 00:39:54 +02:00
meta-wayland-tablet-seat.h wayland: Replace ClutterDeviceManager usage in favor of ClutterSeat 2020-01-30 18:02:34 +01:00
meta-wayland-tablet-tool.c core,wayland,compositor,x11: Migrate to MetaWindowDrag 2023-01-30 10:56:29 +00:00
meta-wayland-tablet-tool.h backends: Replace MetaCursorSprite::prepare-at with in-place function 2021-12-07 20:04:08 +00:00
meta-wayland-tablet.c src: Stop using GSlice 2021-02-22 13:52:27 +01:00
meta-wayland-tablet.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-text-input.c wayland/surface: Prepare for decoupled surface & resource lifetimes 2022-12-01 12:41:32 +01:00
meta-wayland-text-input.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-wayland-touch.c wayland/surface: Prepare for decoupled surface & resource lifetimes 2022-12-01 12:41:32 +01:00
meta-wayland-touch.h wayland: Simplify wl_touch.frame handling 2020-10-23 18:48:18 +00:00
meta-wayland-transaction.c wayland/transaction: Don't free queue node on tear down 2023-01-25 13:53:11 +00:00
meta-wayland-transaction.h wayland/xdg-shell: Defer meta_wayland_xdg_positioner_to_placement call 2022-12-01 12:41:32 +01:00
meta-wayland-types.h Introduce the 'service channel' D-Bus service 2023-02-13 15:34:24 +00:00
meta-wayland-versions.h wayland: Add X11 interop service client protocol 2023-02-13 15:34:24 +00:00
meta-wayland-viewporter.c wayland/surface: Prepare for decoupled surface & resource lifetimes 2022-12-01 12:41:32 +01:00
meta-wayland-viewporter.h wayland/surface: Add support for wp_viewporter 2019-02-06 12:24:03 +00:00
meta-wayland-window-configuration.c window/wayland: Calculate position also for acked fullscreen configs 2022-10-10 18:16:51 +00:00
meta-wayland-window-configuration.h window/wayland: Calculate position also for acked fullscreen configs 2022-10-10 18:16:51 +00:00
meta-wayland-x11-interop.c wayland: Add X11 interop service client protocol 2023-02-13 15:34:24 +00:00
meta-wayland-x11-interop.h wayland: Add X11 interop service client protocol 2023-02-13 15:34:24 +00:00
meta-wayland-xdg-foreign-private.h wayland/xdg-foreign: Add support for xdg-foreign-v2 2022-12-17 20:38:23 +00:00
meta-wayland-xdg-foreign.c wayland/xdg-foreign: Fix race condition crash 2023-02-10 18:38:39 +00:00
meta-wayland-xdg-foreign.h wayland: Add support for the xdg-foreign protocol 2016-08-22 21:03:41 +08:00
meta-wayland-xdg-shell.c core: Pass device/sequence on meta_window_begin_grab_op() 2023-01-30 10:56:29 +00:00
meta-wayland-xdg-shell.h wayland: Add support for stable xdg-shell 2018-02-23 18:57:53 +08:00
meta-wayland.c wayland: Add X11 interop service client protocol 2023-02-13 15:34:24 +00:00
meta-wayland.h wayland: Add wl_global filter manager 2023-02-13 15:34:24 +00:00
meta-window-wayland.c window-wayland: Remove unused API 2023-03-01 09:48:14 +00:00
meta-window-wayland.h window-wayland: Remove unused API 2023-03-01 09:48:14 +00:00
meta-window-xwayland.c window/xwayland: Relayout when fullscreen client update emulated RandR mode 2023-02-20 16:55:36 +00:00
meta-window-xwayland.h window: Move surface property to it subclasses 2022-11-17 11:30:56 +00:00
meta-xwayland-dnd-private.h wayland: Reduce MetaXWaylandSelection to just DnD 2019-05-02 16:31:45 +02:00
meta-xwayland-dnd.c wayland: Do not use GDK functions on XDnD implementation 2023-02-10 20:43:11 +00:00
meta-xwayland-grab-keyboard.c wayland: Add wl_global filter manager 2023-02-13 15:34:24 +00:00
meta-xwayland-grab-keyboard.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-xwayland-private.h wayland: Add a prepare-shutdown signal 2023-01-03 20:45:04 +00:00
meta-xwayland-surface.c wayland/surface: Overhaul handling of buffer use count 2022-12-01 17:23:34 +01:00
meta-xwayland-surface.h xwayland: Move out surface role related logic 2020-02-19 22:34:28 +00:00
meta-xwayland.c wayland: Add wl_global filter manager 2023-02-13 15:34:24 +00:00
meta-xwayland.h xwayland: Add API to send signal to the Xwayland process 2022-05-31 12:00:55 +00:00