summaryrefslogtreecommitdiff
path: root/libdleyna
diff options
context:
space:
mode:
authorLudovic Ferrandis <ludovic.ferrandis@intel.com>2013-07-18 11:55:46 +0200
committerRegis Merlino <regis.merlino@intel.com>2013-07-18 12:58:07 +0200
commitc8ffb0e53ef364951fb552fddfe7adbfa59e585c (patch)
tree45d8f702bbf641e7b432a48025eac5a41be4652e /libdleyna
parent11b34ca222a44f202eb411bd78f8a506e5dcdf1d (diff)
downloaddleyna-renderer-c8ffb0e53ef364951fb552fddfe7adbfa59e585c.tar.gz
[API] Issue #94: Add new SetUri API to Player
Fix issue #94: <https://github.com/01org/dleyna-renderer/issues/94> Do the same as OpenUriEx, except it doesn't excecute the Play command. Signed-off-by: Ludovic Ferrandis <ludovic.ferrandis@intel.com>
Diffstat (limited to 'libdleyna')
-rw-r--r--libdleyna/renderer/device.c3
-rw-r--r--libdleyna/renderer/server.c10
-rw-r--r--libdleyna/renderer/task.c17
-rw-r--r--libdleyna/renderer/task.h4
4 files changed, 34 insertions, 0 deletions
diff --git a/libdleyna/renderer/device.c b/libdleyna/renderer/device.c
index 675f3f8..63c1060 100644
--- a/libdleyna/renderer/device.c
+++ b/libdleyna/renderer/device.c
@@ -2518,6 +2518,9 @@ static void prv_open_uri_cb(GUPnPServiceProxy *proxy,
prv_reset_transport_speed_props(cb_data->device);
+ DLEYNA_LOG_DEBUG("Task: %s", (cb_data->task.type == DLR_TASK_OPEN_URI)
+ ? "OPEN URI" : "SET URI");
+
if (cb_data->task.type == DLR_TASK_OPEN_URI) {
cb_data->action =
gupnp_service_proxy_begin_action(
diff --git a/libdleyna/renderer/server.c b/libdleyna/renderer/server.c
index d2b407f..fdbe611 100644
--- a/libdleyna/renderer/server.c
+++ b/libdleyna/renderer/server.c
@@ -91,6 +91,7 @@
#define DLR_INTERFACE_STOP "Stop"
#define DLR_INTERFACE_OPEN_URI "OpenUri"
#define DLR_INTERFACE_OPEN_URI_EX "OpenUriEx"
+#define DLR_INTERFACE_SET_URI "SetUri"
#define DLR_INTERFACE_SEEK "Seek"
#define DLR_INTERFACE_SET_POSITION "SetPosition"
#define DLR_INTERFACE_GOTO_TRACK "GotoTrack"
@@ -213,6 +214,12 @@ static const gchar g_server_introspection[] =
" <arg type='s' name='"DLR_INTERFACE_METADATA"'"
" direction='in'/>"
" </method>"
+ " <method name='"DLR_INTERFACE_SET_URI"'>"
+ " <arg type='s' name='"DLR_INTERFACE_URI"'"
+ " direction='in'/>"
+ " <arg type='s' name='"DLR_INTERFACE_METADATA"'"
+ " direction='in'/>"
+ " </method>"
" <method name='"DLR_INTERFACE_SEEK"'>"
" <arg type='x' name='"DLR_INTERFACE_OFFSET"'"
" direction='in'/>"
@@ -495,6 +502,7 @@ static void prv_process_async_task(dlr_task_t *task)
prv_async_task_complete);
break;
case DLR_TASK_OPEN_URI:
+ case DLR_TASK_SET_URI:
dlr_upnp_open_uri(g_context.upnp, task,
prv_async_task_complete);
break;
@@ -786,6 +794,8 @@ static void prv_dlr_player_method_call(dleyna_connector_id_t conn,
task = dlr_task_open_uri_new(invocation, object, parameters);
else if (!strcmp(method, DLR_INTERFACE_OPEN_URI_EX))
task = dlr_task_open_uri_ex_new(invocation, object, parameters);
+ else if (!strcmp(method, DLR_INTERFACE_SET_URI))
+ task = dlr_task_set_uri_new(invocation, object, parameters);
else if (!strcmp(method, DLR_INTERFACE_SEEK))
task = dlr_task_seek_new(invocation, object, parameters);
else if (!strcmp(method, DLR_INTERFACE_SET_POSITION))
diff --git a/libdleyna/renderer/task.c b/libdleyna/renderer/task.c
index 784bae9..6058a41 100644
--- a/libdleyna/renderer/task.c
+++ b/libdleyna/renderer/task.c
@@ -102,6 +102,7 @@ static void prv_dlr_task_delete(dlr_task_t *task)
g_variant_unref(task->ut.set_prop.params);
break;
case DLR_TASK_OPEN_URI:
+ case DLR_TASK_SET_URI:
g_free(task->ut.open_uri.uri);
g_free(task->ut.open_uri.metadata);
break;
@@ -291,6 +292,22 @@ dlr_task_t *dlr_task_open_uri_ex_new(dleyna_connector_msg_id_t invocation,
return task;
}
+dlr_task_t *dlr_task_set_uri_new(dleyna_connector_msg_id_t invocation,
+ const gchar *path, GVariant *parameters)
+{
+ dlr_task_t *task;
+
+ task = prv_device_task_new(DLR_TASK_SET_URI, invocation, path,
+ NULL);
+
+ g_variant_get(parameters, "(ss)",
+ &task->ut.open_uri.uri, &task->ut.open_uri.metadata);
+ g_strstrip(task->ut.open_uri.uri);
+ g_strstrip(task->ut.open_uri.metadata);
+
+ return task;
+}
+
dlr_task_t *dlr_task_host_uri_new(dleyna_connector_msg_id_t invocation,
const gchar *path,
const gchar *sender,
diff --git a/libdleyna/renderer/task.h b/libdleyna/renderer/task.h
index 3aa8c8b..c69e917 100644
--- a/libdleyna/renderer/task.h
+++ b/libdleyna/renderer/task.h
@@ -45,6 +45,7 @@ enum dlr_task_type_t_ {
DLR_TASK_NEXT,
DLR_TASK_PREVIOUS,
DLR_TASK_OPEN_URI,
+ DLR_TASK_SET_URI,
DLR_TASK_SEEK,
DLR_TASK_SET_POSITION,
DLR_TASK_GOTO_TRACK,
@@ -171,6 +172,9 @@ dlr_task_t *dlr_task_open_uri_new(dleyna_connector_msg_id_t invocation,
dlr_task_t *dlr_task_open_uri_ex_new(dleyna_connector_msg_id_t invocation,
const gchar *path, GVariant *parameters);
+dlr_task_t *dlr_task_set_uri_new(dleyna_connector_msg_id_t invocation,
+ const gchar *path, GVariant *parameters);
+
dlr_task_t *dlr_task_host_uri_new(dleyna_connector_msg_id_t invocation,
const gchar *path, const gchar *sender,
GVariant *parameters);