From 5d62baaba55a1777b60284802d83d3e9befe60c9 Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Sat, 19 Apr 2008 01:28:27 -0400 Subject: make sure to add all override parameters --- src/ck-session-leader.c | 30 ++++++++++++++++++++++-------- src/test-open-session-with-parameters | 2 +- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/ck-session-leader.c b/src/ck-session-leader.c index b0faf89..322b7fd 100644 --- a/src/ck-session-leader.c +++ b/src/ck-session-leader.c @@ -192,12 +192,10 @@ add_param_string (GPtrArray *parameters, } static gboolean -maybe_add_override_parameter (CkSessionLeader *leader, - const char *prop_name, - GPtrArray *parameters) +have_override_parameter (CkSessionLeader *leader, + const char *prop_name) { gpointer data; - gpointer data_copy; if (leader->priv->override_parameters == NULL) { return FALSE; @@ -212,10 +210,18 @@ maybe_add_override_parameter (CkSessionLeader *leader, return FALSE; } + return TRUE; +} + +static void +add_to_parameters (gpointer key, + gpointer data, + GPtrArray *parameters) +{ + gpointer data_copy; + data_copy = g_boxed_copy (CK_TYPE_PARAMETER_STRUCT, data); g_ptr_array_add (parameters, data_copy); - - return TRUE; } typedef void (* CkAddParamFunc) (GPtrArray *arr, @@ -252,6 +258,7 @@ parse_output (CkSessionLeader *leader, parameters = g_ptr_array_sized_new (10); + /* first add generated params */ for (i = 0; lines[i] != NULL; i++) { char **vals; @@ -261,7 +268,8 @@ parse_output (CkSessionLeader *leader, continue; } - if (maybe_add_override_parameter (leader, vals[0], parameters)) { + /* we're going to override this anyway so just shortcut out */ + if (have_override_parameter (leader, vals[0])) { g_strfreev (vals); continue; } @@ -274,9 +282,13 @@ parse_output (CkSessionLeader *leader, } g_strfreev (vals); } - g_strfreev (lines); + /* now overlay the overrides */ + g_hash_table_foreach (leader->priv->override_parameters, + (GHFunc)add_to_parameters, + parameters); + return parameters; } @@ -339,6 +351,8 @@ save_parameters (CkSessionLeader *leader, continue; } + g_debug ("Setting override parameters for: %s", prop_name); + data_copy = g_boxed_copy (CK_TYPE_PARAMETER_STRUCT, data); /* takes ownership */ diff --git a/src/test-open-session-with-parameters b/src/test-open-session-with-parameters index 123718a..1032a30 100755 --- a/src/test-open-session-with-parameters +++ b/src/test-open-session-with-parameters @@ -16,7 +16,7 @@ manager = dbus.Interface (manager_obj, 'org.freedesktop.ConsoleKit.Manager') params = dbus.Array ([], signature = "(sv)") params.append (("unix-user", dbus.Int32 (730, variant_level=1))) -params.append (("session-type", dbus.String ("gnome-session", variant_level=1))) +params.append (("session-type", dbus.String ("Unknown", variant_level=1))) #params.append (("x11-display", dbus.String (":0.0", variant_level=1))) params.append (("display-device", dbus.String ("/dev/tty8", variant_level=1))) params.append (("is-local", dbus.Boolean (True, variant_level=1))) -- cgit