diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2020-08-27 11:17:42 -0300 |
---|---|---|
committer | Robert Mader <robert.mader@posteo.de> | 2020-08-28 16:34:56 +0000 |
commit | 2b67030dbb918c46b5e8c6fae720cad8e2befb9e (patch) | |
tree | 942c47ea129351199ed07da19e879b75d4e5ff08 | |
parent | 7700dc904bfc24c67e0e9a7260d6994308f76a4f (diff) | |
download | mutter-2b67030dbb918c46b5e8c6fae720cad8e2befb9e.tar.gz |
streams: Don't bail out when cursor is outside the stream
PipeWire reuses buffers, and buffer metadatas, when streaming. When
the cursor is moved to outside the stream, the cursor meta also needs
to be updated, otherwise it'll use the cursor position of whatever is
in the buffer.
Don't bail out when cursor is outside the stream, and ensure to record
a metadata-only frame. This only applies to metadata streams.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1417
-rw-r--r-- | src/backends/meta-screen-cast-area-stream-src.c | 3 | ||||
-rw-r--r-- | src/backends/meta-screen-cast-monitor-stream-src.c | 3 | ||||
-rw-r--r-- | src/backends/meta-screen-cast-window-stream-src.c | 25 |
3 files changed, 0 insertions, 31 deletions
diff --git a/src/backends/meta-screen-cast-area-stream-src.c b/src/backends/meta-screen-cast-area-stream-src.c index c5521422c..584617753 100644 --- a/src/backends/meta-screen-cast-area-stream-src.c +++ b/src/backends/meta-screen-cast-area-stream-src.c @@ -172,9 +172,6 @@ sync_cursor_state (MetaScreenCastAreaStreamSrc *area_src) MetaScreenCastStreamSrc *src = META_SCREEN_CAST_STREAM_SRC (area_src); MetaScreenCastRecordFlag flags; - if (!is_cursor_in_stream (area_src)) - return; - if (is_redraw_queued (area_src)) return; diff --git a/src/backends/meta-screen-cast-monitor-stream-src.c b/src/backends/meta-screen-cast-monitor-stream-src.c index cb6e81b28..78aba0a95 100644 --- a/src/backends/meta-screen-cast-monitor-stream-src.c +++ b/src/backends/meta-screen-cast-monitor-stream-src.c @@ -206,9 +206,6 @@ sync_cursor_state (MetaScreenCastMonitorStreamSrc *monitor_src) MetaScreenCastStreamSrc *src = META_SCREEN_CAST_STREAM_SRC (monitor_src); MetaScreenCastRecordFlag flags; - if (!is_cursor_in_stream (monitor_src)) - return; - if (is_redraw_queued (monitor_src)) return; diff --git a/src/backends/meta-screen-cast-window-stream-src.c b/src/backends/meta-screen-cast-window-stream-src.c index d41b6c41c..8bb2dabd0 100644 --- a/src/backends/meta-screen-cast-window-stream-src.c +++ b/src/backends/meta-screen-cast-window-stream-src.c @@ -354,37 +354,12 @@ screen_cast_window_destroyed (MetaWindowActor *actor, window_src->screen_cast_window = NULL; } -static gboolean -is_cursor_in_stream (MetaScreenCastWindowStreamSrc *window_src) -{ - MetaBackend *backend = get_backend (window_src); - MetaCursorRenderer *cursor_renderer = - meta_backend_get_cursor_renderer (backend); - MetaCursorSprite *cursor_sprite; - graphene_point_t cursor_position; - MetaScreenCastWindow *screen_cast_window; - - cursor_sprite = meta_cursor_renderer_get_cursor (cursor_renderer); - - cursor_position = meta_cursor_renderer_get_position (cursor_renderer); - - screen_cast_window = window_src->screen_cast_window; - return meta_screen_cast_window_transform_cursor_position (screen_cast_window, - cursor_sprite, - &cursor_position, - NULL, - NULL); -} - static void sync_cursor_state (MetaScreenCastWindowStreamSrc *window_src) { MetaScreenCastStreamSrc *src = META_SCREEN_CAST_STREAM_SRC (window_src); MetaScreenCastRecordFlag flags; - if (!is_cursor_in_stream (window_src)) - return; - if (meta_screen_cast_window_has_damage (window_src->screen_cast_window)) return; |