mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
support remote sources
Watch client object-manager and keep the remote source object in a SourceProvider object. Keep a list of all sources in the daemon. Handle the Client CreateSourceOutput by calling the method on a registered source in the daemon. Pass GDBusObject in the subscription signal so that we can get to more details.
This commit is contained in:
parent
752494621c
commit
93c246c4ce
14 changed files with 531 additions and 70 deletions
|
|
@ -92,6 +92,28 @@ pv_source_set_property (GObject *_object,
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
handle_create_source_output (PvSource1 *interface,
|
||||
GDBusMethodInvocation *invocation,
|
||||
GVariant *arg_properties,
|
||||
gpointer user_data)
|
||||
{
|
||||
PvSource *source = user_data;
|
||||
PvSourcePrivate *priv = source->priv;
|
||||
PvSourceOutput *output;
|
||||
const gchar *object_path;
|
||||
|
||||
output = pv_source_create_source_output (source, arg_properties, priv->object_path);
|
||||
|
||||
object_path = pv_source_output_get_object_path (output);
|
||||
|
||||
pv_source1_complete_create_source_output (interface,
|
||||
invocation,
|
||||
object_path);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
source_register_object (PvSource *source)
|
||||
{
|
||||
|
|
@ -103,6 +125,7 @@ source_register_object (PvSource *source)
|
|||
PvSource1 *iface;
|
||||
|
||||
iface = pv_source1_skeleton_new ();
|
||||
g_signal_connect (iface, "handle-create-source-output", (GCallback) handle_create_source_output, source);
|
||||
g_dbus_object_skeleton_add_interface (skel, G_DBUS_INTERFACE_SKELETON (iface));
|
||||
g_object_unref (iface);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue