From c02bff50cd465683c7680b5309d7f28ac906fde8 Mon Sep 17 00:00:00 2001 From: George Kiagiadakis <george.kiagiadakis@collabora.com> Date: Thu, 7 May 2020 16:48:06 +0300 Subject: [PATCH] si-standard-link: add options to use different port contexts --- modules/module-si-standard-link.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/modules/module-si-standard-link.c b/modules/module-si-standard-link.c index f972332f..925e323c 100644 --- a/modules/module-si-standard-link.c +++ b/modules/module-si-standard-link.c @@ -22,6 +22,8 @@ struct _WpSiStandardLink WpSiStream *out_stream; WpSiStream *in_stream; + gchar *out_stream_port_context; + gchar *in_stream_port_context; gboolean manage_lifetime; GPtrArray *node_links; @@ -81,6 +83,8 @@ si_standard_link_reset (WpSessionItem * item) self->manage_lifetime = FALSE; self->out_stream = NULL; self->in_stream = NULL; + g_clear_pointer (&self->out_stream_port_context, g_free); + g_clear_pointer (&self->in_stream_port_context, g_free); wp_session_item_clear_flag (item, WP_SI_FLAG_CONFIGURED); } @@ -97,6 +101,12 @@ si_standard_link_get_configuration (WpSessionItem * item) "out-stream", g_variant_new_uint64 ((guint64) self->out_stream)); g_variant_builder_add (&b, "{sv}", "in-stream", g_variant_new_uint64 ((guint64) self->in_stream)); + g_variant_builder_add (&b, "{sv}", + "out-stream-port-context", + g_variant_new_string (self->out_stream_port_context)); + g_variant_builder_add (&b, "{sv}", + "in-stream-port-context", + g_variant_new_string (self->in_stream_port_context)); g_variant_builder_add (&b, "{sv}", "manage-lifetime", g_variant_new_boolean (self->manage_lifetime)); return g_variant_builder_end (&b); @@ -134,6 +144,11 @@ si_standard_link_configure (WpSessionItem * item, GVariant * args) self->out_stream = WP_SI_STREAM (out_stream); self->in_stream = WP_SI_STREAM (in_stream); + g_variant_lookup (args, "out-stream-port-context", "s", + &self->out_stream_port_context); + g_variant_lookup (args, "in-stream-port-context", "s", + &self->in_stream_port_context); + /* manage-lifetime == TRUE means that this si-standard-link item is * responsible for self-destructing if either * - one of the streams is deactivated @@ -378,9 +393,9 @@ si_standard_link_activate_execute_step (WpSessionItem * item, g_autoptr (GVariant) in_ports = NULL; out_ports = wp_si_port_info_get_ports (WP_SI_PORT_INFO (self->out_stream), - NULL); + self->out_stream_port_context); in_ports = wp_si_port_info_get_ports (WP_SI_PORT_INFO (self->in_stream), - NULL); + self->in_stream_port_context); if (!create_links (self, transition, out_ports, in_ports)) { wp_transition_return_error (transition, g_error_new (WP_DOMAIN_LIBRARY, @@ -473,6 +488,10 @@ wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args) WP_SI_CONFIG_OPTION_WRITEABLE | WP_SI_CONFIG_OPTION_REQUIRED, NULL); g_variant_builder_add (&b, "(ssymv)", "in-stream", "t", WP_SI_CONFIG_OPTION_WRITEABLE | WP_SI_CONFIG_OPTION_REQUIRED, NULL); + g_variant_builder_add (&b, "(ssymv)", "out-stream-port-context", "s", + WP_SI_CONFIG_OPTION_WRITEABLE, NULL); + g_variant_builder_add (&b, "(ssymv)", "in-stream-port-context", "s", + WP_SI_CONFIG_OPTION_WRITEABLE, NULL); g_variant_builder_add (&b, "(ssymv)", "manage-lifetime", "b", WP_SI_CONFIG_OPTION_WRITEABLE, NULL); -- GitLab