summaryrefslogtreecommitdiff
path: root/src/backends/meta-screen-cast-session.c
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2020-04-21 17:25:23 +0200
committerJonas Ådahl <jadahl@gmail.com>2020-07-31 10:41:38 +0200
commit34579d71ccfaa432fd9069e1085f5ff4d7f18c8f (patch)
tree753dcd143876f16fc403a9130b80358fced307c7 /src/backends/meta-screen-cast-session.c
parent153357cd3634e8e5bae217f93c140e794ced1ad3 (diff)
downloadmutter-34579d71ccfaa432fd9069e1085f5ff4d7f18c8f.tar.gz
remote-access-handle: Add 'is-recording' property
Will be TRUE if it is a screen cast session where all streams have the 'is-recording' set to TRUE. For other screen casts or remote desktop sessions, it'll be FALSE. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1377
Diffstat (limited to 'src/backends/meta-screen-cast-session.c')
-rw-r--r--src/backends/meta-screen-cast-session.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/backends/meta-screen-cast-session.c b/src/backends/meta-screen-cast-session.c
index d89ef4690..10c37ee88 100644
--- a/src/backends/meta-screen-cast-session.c
+++ b/src/backends/meta-screen-cast-session.c
@@ -677,12 +677,37 @@ meta_screen_cast_session_class_init (MetaScreenCastSessionClass *klass)
object_class->finalize = meta_screen_cast_session_finalize;
}
+static gboolean
+meta_screen_cast_session_is_recording (MetaScreenCastSession *session)
+{
+ GList *l;
+
+ if (!session->streams)
+ return FALSE;
+
+ for (l = session->streams; l; l = l->next)
+ {
+ MetaScreenCastStream *stream = l->data;
+ MetaScreenCastFlag flags;
+
+ flags = meta_screen_cast_stream_get_flags (stream);
+ if (!(flags & META_SCREEN_CAST_FLAG_IS_RECORDING))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
static MetaScreenCastSessionHandle *
meta_screen_cast_session_handle_new (MetaScreenCastSession *session)
{
MetaScreenCastSessionHandle *handle;
+ gboolean is_recording;
- handle = g_object_new (META_TYPE_SCREEN_CAST_SESSION_HANDLE, NULL);
+ is_recording = meta_screen_cast_session_is_recording (session);
+ handle = g_object_new (META_TYPE_SCREEN_CAST_SESSION_HANDLE,
+ "is-recording", is_recording,
+ NULL);
handle->session = session;
return handle;