summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2020-08-27 11:17:42 -0300
committerRobert Mader <robert.mader@posteo.de>2020-08-28 16:34:56 +0000
commit2b67030dbb918c46b5e8c6fae720cad8e2befb9e (patch)
tree942c47ea129351199ed07da19e879b75d4e5ff08
parent7700dc904bfc24c67e0e9a7260d6994308f76a4f (diff)
downloadmutter-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.c3
-rw-r--r--src/backends/meta-screen-cast-monitor-stream-src.c3
-rw-r--r--src/backends/meta-screen-cast-window-stream-src.c25
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;