diff options
Diffstat (limited to 'libdleyna/server/manager.c')
-rw-r--r-- | libdleyna/server/manager.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/libdleyna/server/manager.c b/libdleyna/server/manager.c index c1afc96..1c32a02 100644 --- a/libdleyna/server/manager.c +++ b/libdleyna/server/manager.c @@ -167,6 +167,37 @@ void dls_manager_get_prop(dls_manager_t *manager, DLEYNA_LOG_DEBUG("Exit"); } +static void prv_set_prop_never_quit(dls_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, + DLS_INTERFACE_PROP_NEVER_QUIT, + prop_val); + } + +exit: + DLEYNA_LOG_DEBUG("Exit"); + return; +} + static void prv_set_prop_wl_enabled(dls_manager_t *manager, dleyna_settings_t *settings, gboolean enabled, @@ -263,7 +294,11 @@ void dls_manager_set_prop(dls_manager_t *manager, goto exit; } - if (!strcmp(name, DLS_INTERFACE_PROP_WHITE_LIST_ENABLED)) + if (!strcmp(name, DLS_INTERFACE_PROP_NEVER_QUIT)) + prv_set_prop_never_quit(manager, settings, + g_variant_get_boolean(param), + &error); + else if (!strcmp(name, DLS_INTERFACE_PROP_WHITE_LIST_ENABLED)) prv_set_prop_wl_enabled(manager, settings, g_variant_get_boolean(param), &error); |