summaryrefslogtreecommitdiff
path: root/libdleyna
diff options
context:
space:
mode:
authorSébastien Bianti <sebastien.bianti@linux.intel.com>2013-04-08 16:08:07 +0200
committerMark Ryan <mark.d.ryan@intel.com>2013-04-18 15:47:48 +0200
commit0a0871c6cc24e1d543ae422d5fa8a678ef4fb642 (patch)
tree163d3ad35d1777672e5785997e562bd7d4d91575 /libdleyna
parent4f1fb6e61ae3c4586dc51f0572e206923be401c5 (diff)
downloaddleyna-renderer-0a0871c6cc24e1d543ae422d5fa8a678ef4fb642.tar.gz
[Bug] Add a Rescan method to Manager interface
- Resolves bug #2 - Make use of new API gupnp_context_manager_rescan_control_points() - Documentation updated. Signed-off-by: Sébastien Bianti <sebastien.bianti@linux.intel.com>
Diffstat (limited to 'libdleyna')
-rw-r--r--libdleyna/renderer/server.c10
-rw-r--r--libdleyna/renderer/task.c11
-rw-r--r--libdleyna/renderer/task.h3
-rw-r--r--libdleyna/renderer/upnp.c7
-rw-r--r--libdleyna/renderer/upnp.h2
5 files changed, 33 insertions, 0 deletions
diff --git a/libdleyna/renderer/server.c b/libdleyna/renderer/server.c
index c28952e..514b649 100644
--- a/libdleyna/renderer/server.c
+++ b/libdleyna/renderer/server.c
@@ -51,6 +51,7 @@
#define DLR_INTERFACE_GET_VERSION "GetVersion"
#define DLR_INTERFACE_GET_SERVERS "GetServers"
+#define DLR_INTERFACE_RESCAN "Rescan"
#define DLR_INTERFACE_RELEASE "Release"
#define DLR_INTERFACE_FOUND_SERVER "FoundServer"
@@ -123,6 +124,8 @@ static const gchar g_root_introspection[] =
" <arg type='as' name='"DLR_INTERFACE_SERVERS"'"
" direction='out'/>"
" </method>"
+ " <method name='"DLR_INTERFACE_RESCAN"'>"
+ " </method>"
" <signal name='"DLR_INTERFACE_FOUND_SERVER"'>"
" <arg type='s' name='"DLR_INTERFACE_PATH"'/>"
" </signal>"
@@ -392,6 +395,11 @@ static void prv_process_sync_task(dlr_task_t *task)
dlr_task_complete(task);
dleyna_task_queue_task_completed(task->atom.queue_id);
break;
+ case DLR_TASK_RESCAN:
+ dlr_upnp_rescan(g_context.upnp);
+ dlr_task_complete(task);
+ dleyna_task_queue_task_completed(task->atom.queue_id);
+ break;
case DLR_TASK_RAISE:
case DLR_TASK_QUIT:
error = g_error_new(DLEYNA_SERVER_ERROR,
@@ -612,6 +620,8 @@ static void prv_dlr_method_call(dleyna_connector_id_t conn,
task = dlr_task_get_version_new(invocation);
else if (!strcmp(method, DLR_INTERFACE_GET_SERVERS))
task = dlr_task_get_servers_new(invocation);
+ else if (!strcmp(method, DLR_INTERFACE_RESCAN))
+ task = dlr_task_rescan_new(invocation);
else
goto finished;
diff --git a/libdleyna/renderer/task.c b/libdleyna/renderer/task.c
index a18014a..575261a 100644
--- a/libdleyna/renderer/task.c
+++ b/libdleyna/renderer/task.c
@@ -26,6 +26,17 @@
#include "async.h"
#include "server.h"
+dlr_task_t *dlr_task_rescan_new(dleyna_connector_msg_id_t invocation)
+{
+ dlr_task_t *task = g_new0(dlr_task_t, 1);
+
+ task->type = DLR_TASK_RESCAN;
+ task->invocation = invocation;
+ task->synchronous = TRUE;
+
+ return task;
+}
+
dlr_task_t *dlr_task_get_version_new(dleyna_connector_msg_id_t invocation)
{
dlr_task_t *task = g_new0(dlr_task_t, 1);
diff --git a/libdleyna/renderer/task.h b/libdleyna/renderer/task.h
index f78f21a..e1eaf1f 100644
--- a/libdleyna/renderer/task.h
+++ b/libdleyna/renderer/task.h
@@ -32,6 +32,7 @@
enum dlr_task_type_t_ {
DLR_TASK_GET_VERSION,
DLR_TASK_GET_SERVERS,
+ DLR_TASK_RESCAN,
DLR_TASK_RAISE,
DLR_TASK_QUIT,
DLR_TASK_SET_PROP,
@@ -109,6 +110,8 @@ struct dlr_task_t_ {
} ut;
};
+dlr_task_t *dlr_task_rescan_new(dleyna_connector_msg_id_t invocation);
+
dlr_task_t *dlr_task_get_version_new(dleyna_connector_msg_id_t invocation);
dlr_task_t *dlr_task_get_servers_new(dleyna_connector_msg_id_t invocation);
diff --git a/libdleyna/renderer/upnp.c b/libdleyna/renderer/upnp.c
index 5d691b9..f1c4959 100644
--- a/libdleyna/renderer/upnp.c
+++ b/libdleyna/renderer/upnp.c
@@ -813,3 +813,10 @@ void dlr_upnp_unsubscribe(dlr_upnp_t *upnp)
DLEYNA_LOG_DEBUG("Exit");
}
+
+void dlr_upnp_rescan(dlr_upnp_t *upnp)
+{
+ DLEYNA_LOG_DEBUG("re-scanning control points");
+
+ gupnp_context_manager_rescan_control_points(upnp->context_manager);
+}
diff --git a/libdleyna/renderer/upnp.h b/libdleyna/renderer/upnp.h
index 9e19163..4345040 100644
--- a/libdleyna/renderer/upnp.h
+++ b/libdleyna/renderer/upnp.h
@@ -100,4 +100,6 @@ void dlr_upnp_lost_client(dlr_upnp_t *upnp, const gchar *client_name);
void dlr_upnp_unsubscribe(dlr_upnp_t *upnp);
+void dlr_upnp_rescan(dlr_upnp_t *upnp);
+
#endif /* DLR_UPNP_H__ */