mutter/src/backends
Jonas Ådahl 53b52e26f5 screen-cast/monitor: Always use clutter_stage_paint_to_framebuffer()
'screen-cast/monitor-src: Use clutter_stage_paint_to_buffer'
(6c818cd8d5) made the non-dma-buf path use
clutter_stage_paint_to_buffer() to avoid running into direct scanout
issues. At a glance, the dma-buf paths didn't have the same issue since
it explicitly handled dma-bufs by blitting them.

What it also did was move the recording to an idle callback, to avoid
paint reentry issues. A side effect of this, however, is that it also
broke the dma-buf paths, as they rely on the back buffer existing, and
the stage view direct scanout already being setup, which it isn't in an
idle callback.

Fix this by using the dma-buf variant of
clutter_stage_paint_to_buffer(): clutter_stage_paint_to_framebuffer().
This has some negative performance impact, but we can't use
cogl_blit_framebuffer() when using an idle callback for recording.

Potential performance improvements to make things work more as they did
before is to enhance 'cogl_blit_framebuffer()' a bit, making it a vfunc
that could be implemented by MetaOnscreenNative. A flag to say whether
to look at the back or front buffer would let MetaOnscreenNative know
whether to use the already committed-to-KMS buffer, or the current back
buffer.

Fixes: 6c818cd8d5
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2282
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2462>
2022-06-28 09:54:40 +00:00
..
native pointer-constraints: Move min edge distance from backend to Wayland 2022-06-13 18:38:50 +00:00
x11 x11/clutter-backend: Remove unused XSynchronize() call 2022-06-03 13:43:26 +00:00
edid-parse.c
edid.h
gsm-inhibitor-flag.h
meta-backend-private.h backends: Add private call to update MetaBackend from a device 2022-02-08 14:34:47 +00:00
meta-backend-types.h virtual-monitor: Split out mode info into separate struct 2022-03-04 18:13:45 +00:00
meta-backend.c Name unnamed sources 2022-03-04 10:10:05 +03:00
meta-barrier-private.h barrier: Remove _ prefix in various places 2022-04-29 18:58:38 +00:00
meta-barrier.c barrier: Remove _ prefix in various places 2022-04-29 18:58:38 +00:00
meta-crtc-mode.c
meta-crtc-mode.h crtc-mode-info: Add vblank duration field 2021-07-13 08:09:42 +00:00
meta-crtc.c
meta-crtc.h
meta-cursor-renderer.c backends: Remove superfluous intermediate variable 2021-12-07 20:04:08 +00:00
meta-cursor-renderer.h cursor-renderer: Remove meta_cursor_renderer_is_overlay_visible 2021-09-20 14:00:08 +00:00
meta-cursor-sprite-xcursor.c cursor-sprite: Register all cursor sprites with the cursor tracker 2021-12-22 16:22:08 +00:00
meta-cursor-sprite-xcursor.h cursor-sprite: Register all cursor sprites with the cursor tracker 2021-12-22 16:22:08 +00:00
meta-cursor-tracker-private.h cursor-sprite: Register all cursor sprites with the cursor tracker 2021-12-22 16:22:08 +00:00
meta-cursor-tracker.c cursor-tracker: Add missing annotation to meta_cursor_tracker_get_pointer 2022-04-05 14:05:22 +02:00
meta-cursor.c cursor: Hold reference to cursor tracker 2021-12-22 19:37:16 +01:00
meta-cursor.h backends: Replace MetaCursorSprite::prepare-at with in-place function 2021-12-07 20:04:08 +00:00
meta-dbus-session-watcher.c
meta-dbus-session-watcher.h
meta-display-config-shared.h
meta-dnd-private.h dnd: Notify about events during compositor grab from event filter 2022-03-02 15:12:23 +00:00
meta-egl-ext.h
meta-egl.c egl: Fix number of configs returned in meta_egl_choose_all_configs 2022-03-03 08:18:56 +00:00
meta-egl.h egl: Add eglQueryDisplayAttribEXT() helper 2022-01-05 16:36:48 +00:00
meta-gles3-table.h
meta-gles3.c
meta-gles3.h
meta-gpu.c
meta-gpu.h
meta-idle-manager.c context: Move 'replace-current-wm' tracking to the context 2021-07-15 11:34:37 +02:00
meta-idle-manager.h backends: Introduce MetaIdleManager 2021-05-18 13:19:36 +00:00
meta-idle-monitor-private.h backends: Introduce MetaIdleManager 2021-05-18 13:19:36 +00:00
meta-idle-monitor.c Name unnamed sources 2022-03-04 10:10:05 +03:00
meta-input-device-private.h backends: Add MetaInputDevice derivable class 2020-03-24 18:07:31 +00:00
meta-input-device.c
meta-input-mapper-private.h
meta-input-mapper.c backends: Do not exclude devices from an output based on capability 2021-12-07 14:59:57 +00:00
meta-input-settings-dummy.c input-settings: Make set_matrix() vfunc take const float array pointer 2021-04-14 19:16:22 +00:00
meta-input-settings-dummy.h
meta-input-settings-private.h backends: Move MetaKeyboardA11yFlags to a public header 2022-06-14 18:04:05 +02:00
meta-input-settings.c backends: Update MetaInputSettings to apply settings based on capabilities 2022-03-30 12:06:52 +00:00
meta-keymap-utils.c
meta-keymap-utils.h
meta-logical-monitor.c
meta-logical-monitor.h
meta-monitor-config-manager.c monitor-transform: Add function to compute from orientation 2021-09-04 10:04:01 +02:00
meta-monitor-config-manager.h monitor-config-store: Add way to define config store loading policy 2022-01-25 16:25:48 +00:00
meta-monitor-config-migration.c monitor-manager: Pass the Logical mode when computing the monitor scale 2021-07-22 13:14:01 +02:00
meta-monitor-config-migration.h
meta-monitor-config-store.c monitor-config-store: Allow changing D-Bus configuration policy 2022-01-25 16:25:48 +00:00
meta-monitor-config-store.h monitor-config-store: Allow changing D-Bus configuration policy 2022-01-25 16:25:48 +00:00
meta-monitor-manager-dummy.c monitor-manager: Pass the Logical mode when computing the monitor scale 2021-07-22 13:14:01 +02:00
meta-monitor-manager-dummy.h
meta-monitor-manager-private.h monitor-manager: Ensure monitors settings after backend has been updated 2022-05-11 18:13:46 +00:00
meta-monitor-manager.c monitor-manager: Make warning message less confusing 2022-06-02 17:19:42 +00:00
meta-monitor-transform.c monitor-transform: Add function to compute from orientation 2021-09-04 10:04:01 +02:00
meta-monitor-transform.h monitor-transform: Add function to compute from orientation 2021-09-04 10:04:01 +02:00
meta-monitor.c monitor: Add support to privacy screen 2022-01-25 07:31:19 +00:00
meta-monitor.h monitor: Add support to privacy screen 2022-01-25 07:31:19 +00:00
meta-orientation-manager.c backend: Check if the gsettings scheme exists 2022-05-17 11:24:07 +02:00
meta-orientation-manager.h tests: Add MetaOrientationManager tests via SensorsProxy mock 2021-09-04 10:04:00 +02:00
meta-output.c virtual-monitor: Add way to change virtual monitor mode 2022-03-04 18:13:45 +00:00
meta-output.h virtual-monitor: Add way to change virtual monitor mode 2022-03-04 18:13:45 +00:00
meta-pointer-constraint.c pointer-constraints: Move min edge distance from backend to Wayland 2022-06-13 18:38:50 +00:00
meta-pointer-constraint.h pointer-constraints: Move min edge distance from backend to Wayland 2022-06-13 18:38:50 +00:00
meta-profiler.c
meta-profiler.h
meta-remote-access-controller-private.h
meta-remote-access-controller.c
meta-remote-desktop-session.c remote-desktop: Check pipe fd before assuming existing read() operation 2021-07-28 15:26:04 +00:00
meta-remote-desktop-session.h
meta-remote-desktop.c remote-desktop: Close sessions on prepare-shutdown 2021-05-11 16:18:13 +00:00
meta-remote-desktop.h
meta-renderer-view.c backends: Rename ClutterStage[View]Cogl API and types 2021-07-16 19:08:06 +02:00
meta-renderer-view.h backends: Excise MetaStageView to its own file 2021-07-16 19:08:06 +02:00
meta-renderer.c renderer: Cleanup views in dispose 2021-05-05 19:52:04 +00:00
meta-renderer.h
meta-screen-cast-area-stream-src.c screen-cast: Always wait for an update before sending cursor-only frames 2022-04-29 20:51:25 +00:00
meta-screen-cast-area-stream-src.h
meta-screen-cast-area-stream.c remote-desktop/session: Handle unable to transform coordinate gracefully 2021-03-12 15:09:45 +00:00
meta-screen-cast-area-stream.h
meta-screen-cast-monitor-stream-src.c screen-cast/monitor: Always use clutter_stage_paint_to_framebuffer() 2022-06-28 09:54:40 +00:00
meta-screen-cast-monitor-stream-src.h
meta-screen-cast-monitor-stream.c screencast: Fix transform_position(), when using fractional scaling 2021-05-17 16:11:47 +02:00
meta-screen-cast-monitor-stream.h
meta-screen-cast-session.c screen-cast-session: Add is-active tracking 2021-12-07 19:23:52 +00:00
meta-screen-cast-session.h screen-cast-session: Add is-active tracking 2021-12-07 19:23:52 +00:00
meta-screen-cast-stream-src.c screen-cast/src: Avoid undefined behavior with GSource 2022-05-11 15:01:31 +00:00
meta-screen-cast-stream-src.h remote-desktop/virtual: Drop absolute events if not active 2022-03-04 18:13:45 +00:00
meta-screen-cast-stream.c ScreenCast: Allow recording new streams on active sessions 2021-12-07 19:23:52 +00:00
meta-screen-cast-stream.h remote-desktop/session: Handle unable to transform coordinate gracefully 2021-03-12 15:09:45 +00:00
meta-screen-cast-virtual-stream-src.c screen-cast: Always wait for an update before sending cursor-only frames 2022-04-29 20:51:25 +00:00
meta-screen-cast-virtual-stream-src.h screen-cast/session: Introduce RecordVirtual D-Bus API 2021-03-12 15:09:45 +00:00
meta-screen-cast-virtual-stream.c remote-desktop/virtual: Drop absolute events if not active 2022-03-04 18:13:45 +00:00
meta-screen-cast-virtual-stream.h screen-cast/session: Introduce RecordVirtual D-Bus API 2021-03-12 15:09:45 +00:00
meta-screen-cast-window-stream-src.c screen-cast: Always wait for an update before sending cursor-only frames 2022-04-29 20:51:25 +00:00
meta-screen-cast-window-stream-src.h
meta-screen-cast-window-stream.c remote-desktop/session: Handle unable to transform coordinate gracefully 2021-03-12 15:09:45 +00:00
meta-screen-cast-window-stream.h
meta-screen-cast-window.c
meta-screen-cast-window.h
meta-screen-cast.c screen-cast: Remove stray newline 2022-04-29 18:58:38 +00:00
meta-screen-cast.h screen-cast/session: Introduce RecordVirtual D-Bus API 2021-03-12 15:09:45 +00:00
meta-settings-private.h backend/native: Only disable dmabuf screen cast when not hw accelerated 2022-02-07 19:16:45 +00:00
meta-settings.c backend/native: Only disable dmabuf screen cast when not hw accelerated 2022-02-07 19:16:45 +00:00
meta-stage-impl-private.h stage-impl: Change the backend pointer to MetaBackend 2022-01-17 09:48:51 +01:00
meta-stage-impl.c stage-impl: Change the backend pointer to MetaBackend 2022-01-17 09:48:51 +01:00
meta-stage-private.h tests: Add reference test framework 2021-03-12 15:09:45 +00:00
meta-stage-view-private.h backends: Excise MetaStageView to its own file 2021-07-16 19:08:06 +02:00
meta-stage-view.c backends: Excise MetaStageView to its own file 2021-07-16 19:08:06 +02:00
meta-stage.c
meta-viewport-info.c main: Move rect related macro to util-private.h 2021-05-17 16:08:42 +00:00
meta-viewport-info.h backends: Store whether views are scaled in MetaViewportInfo 2021-04-13 10:32:14 +00:00
meta-virtual-monitor.c virtual-monitor: Add way to change virtual monitor mode 2022-03-04 18:13:45 +00:00
meta-virtual-monitor.h virtual-monitor: Add way to change virtual monitor mode 2022-03-04 18:13:45 +00:00