diff --git a/src/client/pv-context.c b/src/client/pv-context.c index 732ba0c7e..645b1ecae 100644 --- a/src/client/pv-context.c +++ b/src/client/pv-context.c @@ -614,18 +614,3 @@ pv_context_get_error (PvContext *context) return priv->error; } - -GDBusProxy * -pv_context_find_source (PvContext *context, const gchar *name, GVariant *props) -{ - PvContextPrivate *priv; - - g_return_val_if_fail (PV_IS_CONTEXT (context), NULL); - priv = context->priv; - - if (priv->sources == NULL) - return NULL; - - return priv->sources->data; -} - diff --git a/src/client/pv-private.h b/src/client/pv-private.h index 08688c4af..e97d32376 100644 --- a/src/client/pv-private.h +++ b/src/client/pv-private.h @@ -44,6 +44,3 @@ struct _PvContextPrivate GDBusObjectManagerServer *server_manager; }; - -GDBusProxy * pv_context_find_source (PvContext *context, const gchar *name, GVariant *props); - diff --git a/src/client/pv-stream.c b/src/client/pv-stream.c index 90bd15852..2493944be 100644 --- a/src/client/pv-stream.c +++ b/src/client/pv-stream.c @@ -37,7 +37,6 @@ struct _PvStreamPrivate GError *error; gchar *source_output_path; - GDBusProxy *source; GVariant *spec; GDBusProxy *source_output; @@ -380,7 +379,7 @@ on_source_output_created (GObject *source_object, g_assert (g_main_context_get_thread_default () == priv->context->priv->context); - ret = g_dbus_proxy_call_finish (priv->source, res, &error); + ret = g_dbus_proxy_call_finish (context->priv->client, res, &error); if (ret == NULL) goto create_failed; @@ -412,12 +411,15 @@ static gboolean do_connect_capture (PvStream *stream) { PvStreamPrivate *priv = stream->priv; + PvContext *context = priv->context; g_assert (g_main_context_get_thread_default () == priv->context->priv->context); - g_dbus_proxy_call (priv->source, + g_dbus_proxy_call (context->priv->client, "CreateSourceOutput", - g_variant_new ("(@a{sv})", priv->spec), + g_variant_new ("(o@a{sv})", + (priv->target ? priv->target : "/"), + priv->spec), G_DBUS_CALL_FLAGS_NONE, -1, NULL, /* GCancellable *cancellable */ @@ -454,12 +456,6 @@ pv_stream_connect_capture (PvStream *stream, g_return_val_if_fail (pv_context_get_state (context) == PV_CONTEXT_STATE_READY, FALSE); priv->target = g_strdup (source); - - priv->source = pv_context_find_source (context, priv->target, NULL); - if (priv->source == NULL) { - g_warning ("can't find source"); - return FALSE; - } priv->spec = spec; stream_set_state (stream, PV_STREAM_STATE_CONNECTING); @@ -481,7 +477,7 @@ on_source_output_removed (GObject *source_object, g_assert (g_main_context_get_thread_default () == priv->context->priv->context); - ret = g_dbus_proxy_call_finish (priv->source, res, &error); + ret = g_dbus_proxy_call_finish (priv->source_output, res, &error); if (ret == NULL) { priv->error = error; stream_set_state (stream, PV_STREAM_STATE_ERROR); diff --git a/src/client/pv-stream.h b/src/client/pv-stream.h index ca5a7a9ee..c6f1e8f3b 100644 --- a/src/client/pv-stream.h +++ b/src/client/pv-stream.h @@ -104,6 +104,9 @@ gboolean pv_stream_connect_capture (PvStream *stream, const gchar *source, PvStreamFlags flags, GVariant *spec); +gboolean pv_stream_connect_provide (PvStream *stream, + PvStreamFlags flags, + GVariant *spec); gboolean pv_stream_disconnect (PvStream *stream); gboolean pv_stream_start (PvStream *stream, PvStreamMode mode); @@ -111,6 +114,8 @@ gboolean pv_stream_stop (PvStream *stream); gboolean pv_stream_capture_buffer (PvStream *stream, PvBufferInfo *info); +gboolean pv_stream_provide_buffer (PvStream *stream, + PvBufferInfo *info); G_END_DECLS diff --git a/src/dbus/org.pulsevideo.xml b/src/dbus/org.pulsevideo.xml index 86b859965..faeaa68c2 100644 --- a/src/dbus/org.pulsevideo.xml +++ b/src/dbus/org.pulsevideo.xml @@ -51,6 +51,18 @@ Disconnect the client from the server. --> + + + + + + - - - -