[mutter/gnome-3-38] screen-cast/area-src: Handle monitors changes here too
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/gnome-3-38] screen-cast/area-src: Handle monitors changes here too
- Date: Fri, 29 Jan 2021 17:51:04 +0000 (UTC)
commit d881fcdece6087b32cee725c1879a3278ceee9b6
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Thu Jan 28 23:21:12 2021 +0100
screen-cast/area-src: Handle monitors changes here too
Like with the monitor source, we need to reattach to the new views after
monitor changes, otherwise the screen cast will get stuck.
(cherry picked from commit 893c0cd2f93a0d10a211af32d26be167e9656cd7)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1694>
src/backends/meta-screen-cast-area-stream-src.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
---
diff --git a/src/backends/meta-screen-cast-area-stream-src.c b/src/backends/meta-screen-cast-area-stream-src.c
index e7d42d432a..7cc70dc07f 100644
--- a/src/backends/meta-screen-cast-area-stream-src.c
+++ b/src/backends/meta-screen-cast-area-stream-src.c
@@ -316,12 +316,29 @@ add_view_painted_watches (MetaScreenCastAreaStreamSrc *area_src,
}
}
+static void
+on_monitors_changed (MetaMonitorManager *monitor_manager,
+ MetaScreenCastAreaStreamSrc *area_src)
+{
+ MetaStage *stage = META_STAGE (get_stage (area_src));
+ GList *l;
+
+ for (l = area_src->watches; l; l = l->next)
+ meta_stage_remove_watch (stage, l->data);
+ g_clear_pointer (&area_src->watches, g_list_free);
+
+ add_view_painted_watches (area_src,
+ META_STAGE_WATCH_AFTER_ACTOR_PAINT);
+}
+
static void
meta_screen_cast_area_stream_src_enable (MetaScreenCastStreamSrc *src)
{
MetaScreenCastAreaStreamSrc *area_src =
META_SCREEN_CAST_AREA_STREAM_SRC (src);
MetaBackend *backend = get_backend (area_src);
+ MetaMonitorManager *monitor_manager =
+ meta_backend_get_monitor_manager (backend);
MetaCursorTracker *cursor_tracker = meta_backend_get_cursor_tracker (backend);
ClutterStage *stage;
MetaScreenCastStream *stream;
@@ -354,6 +371,10 @@ meta_screen_cast_area_stream_src_enable (MetaScreenCastStreamSrc *src)
break;
}
+ g_signal_connect_object (monitor_manager, "monitors-changed-internal",
+ G_CALLBACK (on_monitors_changed),
+ area_src, 0);
+
clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]