diff options
author | Regis Merlino <regis.merlino@intel.com> | 2013-02-26 14:54:07 +0100 |
---|---|---|
committer | Ludovic Ferrandis <ludovic.ferrandis@intel.com> | 2013-02-26 18:01:13 +0100 |
commit | 81b9f7c89e4836fa1514d7b7264822ea2f692ed3 (patch) | |
tree | 22b7b6036f115c994a3f69bd9d6572e9be4c791a | |
parent | 5acfdc473af4ac99f37fc3f4fd5685dca67c6473 (diff) | |
download | dleyna-core-81b9f7c89e4836fa1514d7b7264822ea2f692ed3.tar.gz |
[Connector - Control Point] Add new APIs
- Add a disconnect function in connector
- Add a finalize function in control point
Signed-off-by: Regis Merlino <regis.merlino@intel.com>
-rw-r--r-- | src/connector.h | 2 | ||||
-rw-r--r-- | src/control-point.h | 2 | ||||
-rw-r--r-- | src/main-loop.c | 14 |
3 files changed, 17 insertions, 1 deletions
diff --git a/src/connector.h b/src/connector.h index 24c5cbd..d9599a6 100644 --- a/src/connector.h +++ b/src/connector.h @@ -42,6 +42,7 @@ typedef void (*dleyna_connector_connect_t)( const gchar *server_name, dleyna_connector_connected_cb_t connected_cb, dleyna_connector_disconnected_cb_t disconnected_cb); +typedef void (*dleyna_connector_disconnect_t)(void); typedef void (*dleyna_connector_client_new_cb_t)(const gchar *client_name); typedef void (*dleyna_connector_client_lost_cb_t)(const gchar *client_name); @@ -99,6 +100,7 @@ struct dleyna_connector_t_ { dleyna_connector_initialize_t initialize; dleyna_connector_shutdown_t shutdown; dleyna_connector_connect_t connect; + dleyna_connector_disconnect_t disconnect; dleyna_connector_watch_client_t watch_client; dleyna_connector_unwatch_client_t unwatch_client; dleyna_connector_set_client_lost_cb_t set_client_lost_cb; diff --git a/src/control-point.h b/src/control-point.h index eeca47d..cd0c7c7 100644 --- a/src/control-point.h +++ b/src/control-point.h @@ -33,6 +33,7 @@ typedef void (*dleyna_control_point_initialize_t)( const dleyna_connector_t *connector, dleyna_task_processor_t *processor, dleyna_settings_t *settings); +typedef void (*dleyna_control_point_finalize_t)(void); typedef void (*dleyna_control_point_free_t)(void); typedef const gchar *(*dleyna_control_point_server_name_t)(void); @@ -45,6 +46,7 @@ typedef gboolean (*dleyna_control_point_start_service_t)( typedef struct dleyna_control_point_t_ dleyna_control_point_t; struct dleyna_control_point_t_ { dleyna_control_point_initialize_t initialize; + dleyna_control_point_finalize_t finalize; dleyna_control_point_free_t free; dleyna_control_point_server_name_t server_name; dleyna_control_point_server_introspection_t server_introspection; diff --git a/src/main-loop.c b/src/main-loop.c index 9105c91..899f4f2 100644 --- a/src/main-loop.c +++ b/src/main-loop.c @@ -44,11 +44,23 @@ struct dleyna_daemon_context_t_ { static dleyna_daemon_context_t g_context; +static gboolean prv_context_mainloop_quit_cb(gpointer user_data) +{ + DLEYNA_LOG_DEBUG("Main loop quit"); + + g_main_loop_quit(g_context.main_loop); + + return FALSE; +} + static gboolean prv_context_quit_cb(gpointer user_data) { DLEYNA_LOG_DEBUG("Quitting"); - g_main_loop_quit(g_context.main_loop); + g_context.connector->disconnect(); + g_context.control_point->finalize(); + + g_timeout_add_seconds(1, prv_context_mainloop_quit_cb, NULL); return FALSE; } |