summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Ferrandis <ludovic.ferrandis@intel.com>2013-10-01 15:44:19 +0200
committerMark Ryan <mark.d.ryan@intel.com>2013-10-03 11:54:10 +0200
commite10c86649ddf4efa7d9dd8fabc73ae5d6d4b7135 (patch)
treeb900c517a090fcfd655e94229bd052de7d13c47c
parent812a3e4fe624f4c855d18fb734aebacccfd96fe0 (diff)
downloaddleyna-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.txt4
-rw-r--r--libdleyna/renderer/manager.c48
-rw-r--r--libdleyna/renderer/prop-defs.h1
-rw-r--r--libdleyna/renderer/server.c2
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"'"