diff options
author | Ludovic Ferrandis <ludovic.ferrandis@intel.com> | 2013-10-01 15:44:19 +0200 |
---|---|---|
committer | Mark Ryan <mark.d.ryan@intel.com> | 2013-10-03 11:54:10 +0200 |
commit | e10c86649ddf4efa7d9dd8fabc73ae5d6d4b7135 (patch) | |
tree | b900c517a090fcfd655e94229bd052de7d13c47c | |
parent | 812a3e4fe624f4c855d18fb734aebacccfd96fe0 (diff) | |
download | dleyna-renderer-e10c86649ddf4efa7d9dd8fabc73ae5d6d4b7135.tar.gz |
[Property] Add 'Never Quit' property to Manager
It is now possible to manage the 'Never Quit' option via
the Set() methode.
Signed-off-by: Ludovic Ferrandis <ludovic.ferrandis@intel.com>
-rw-r--r-- | doc/server/dbus/API.txt | 4 | ||||
-rw-r--r-- | libdleyna/renderer/manager.c | 48 | ||||
-rw-r--r-- | libdleyna/renderer/prop-defs.h | 1 | ||||
-rw-r--r-- | libdleyna/renderer/server.c | 2 |
4 files changed, 53 insertions, 2 deletions
diff --git a/doc/server/dbus/API.txt b/doc/server/dbus/API.txt index bd22a84..99207e9 100644 --- a/doc/server/dbus/API.txt +++ b/doc/server/dbus/API.txt @@ -82,6 +82,10 @@ of d-Bus properties. These properties are described below: |------------------------------------------------------------------------------| | Name | Type |m/o*| Description | |------------------------------------------------------------------------------| +| NeverQuit | b | m | True if the service always stay in | +| | | | memory running. False if the service | +| | | | quit when the last client disconnects. | +|------------------------------------------------------------------------------| | WhiteListEntries | as | m | The list of entries that compose the | | | | | white list used to filter the networks. | | | | | An Entry could be an interface name | diff --git a/libdleyna/renderer/manager.c b/libdleyna/renderer/manager.c index a99399c..613847c 100644 --- a/libdleyna/renderer/manager.c +++ b/libdleyna/renderer/manager.c @@ -53,6 +53,11 @@ static GVariant *prv_build_wl_entries(dleyna_settings_t *settings) static void prv_add_all_props(dleyna_settings_t *settings, GVariantBuilder *vb) { + g_variant_builder_add(vb, "{sv}", DLR_INTERFACE_PROP_NEVER_QUIT, + g_variant_new_boolean( + dleyna_settings_is_never_quit( + settings))); + g_variant_builder_add(vb, "{sv}", DLR_INTERFACE_PROP_WHITE_LIST_ENABLED, g_variant_new_boolean( dleyna_settings_is_white_list_enabled( @@ -69,7 +74,11 @@ static GVariant *prv_get_prop(dleyna_settings_t *settings, const gchar *prop) gchar *prop_str; #endif - if (!strcmp(prop, DLR_INTERFACE_PROP_WHITE_LIST_ENABLED)) + if (!strcmp(prop, DLR_INTERFACE_PROP_NEVER_QUIT)) + retval = g_variant_ref_sink(g_variant_new_boolean( + dleyna_settings_is_never_quit( + settings))); + else if (!strcmp(prop, DLR_INTERFACE_PROP_WHITE_LIST_ENABLED)) retval = g_variant_ref_sink(g_variant_new_boolean( dleyna_settings_is_white_list_enabled( settings))); @@ -214,6 +223,37 @@ void dlr_manager_get_prop(dlr_manager_t *manager, DLEYNA_LOG_DEBUG("Exit"); } +static void prv_set_prop_never_quit(dlr_manager_t *manager, + dleyna_settings_t *settings, + gboolean never_quit, + GError **error) +{ + GVariant *prop_val; + gboolean old_val; + + DLEYNA_LOG_DEBUG("Enter %d", never_quit); + + old_val = dleyna_settings_is_never_quit(settings); + + if (old_val == never_quit) + goto exit; + + /* If no error, the white list will be updated in the reload callack + */ + dleyna_settings_set_never_quit(settings, never_quit, error); + + if (*error == NULL) { + prop_val = g_variant_new_boolean(never_quit); + prv_wl_notify_prop(manager, + DLR_INTERFACE_PROP_NEVER_QUIT, + prop_val); + } + +exit: + DLEYNA_LOG_DEBUG("Exit"); + return; +} + static void prv_set_prop_wl_enabled(dlr_manager_t *manager, dleyna_settings_t *settings, gboolean enabled, @@ -308,7 +348,11 @@ void dlr_manager_set_prop(dlr_manager_t *manager, goto exit; } - if (!strcmp(name, DLR_INTERFACE_PROP_WHITE_LIST_ENABLED)) + if (!strcmp(name, DLR_INTERFACE_PROP_NEVER_QUIT)) + prv_set_prop_never_quit(manager, settings, + g_variant_get_boolean(param), + &error); + else if (!strcmp(name, DLR_INTERFACE_PROP_WHITE_LIST_ENABLED)) prv_set_prop_wl_enabled(manager, settings, g_variant_get_boolean(param), &error); diff --git a/libdleyna/renderer/prop-defs.h b/libdleyna/renderer/prop-defs.h index ca7efc6..9230c47 100644 --- a/libdleyna/renderer/prop-defs.h +++ b/libdleyna/renderer/prop-defs.h @@ -30,6 +30,7 @@ #define DLR_INTERFACE_PROPERTIES_CHANGED "PropertiesChanged" /* Manager Properties */ +#define DLR_INTERFACE_PROP_NEVER_QUIT "NeverQuit" #define DLR_INTERFACE_PROP_WHITE_LIST_ENTRIES "WhiteListEntries" #define DLR_INTERFACE_PROP_WHITE_LIST_ENABLED "WhiteListEnabled" diff --git a/libdleyna/renderer/server.c b/libdleyna/renderer/server.c index e4ffc86..b241a4f 100644 --- a/libdleyna/renderer/server.c +++ b/libdleyna/renderer/server.c @@ -157,6 +157,8 @@ static const gchar g_root_introspection[] = " <signal name='"DLR_INTERFACE_LOST_RENDERER"'>" " <arg type='o' name='"DLR_INTERFACE_PATH"'/>" " </signal>" + " <property type='as' name='"DLR_INTERFACE_PROP_NEVER_QUIT"'" + " access='readwrite'/>" " <property type='as' name='"DLR_INTERFACE_PROP_WHITE_LIST_ENTRIES"'" " access='readwrite'/>" " <property type='b' name='"DLR_INTERFACE_PROP_WHITE_LIST_ENABLED"'" |