diff options
author | William Jon McCann <jmccann@redhat.com> | 2008-04-19 01:28:27 -0400 |
---|---|---|
committer | William Jon McCann <jmccann@redhat.com> | 2008-04-19 01:28:27 -0400 |
commit | 5d62baaba55a1777b60284802d83d3e9befe60c9 (patch) | |
tree | 58713dd805e71e4416223a6edff2f4d766001fe5 | |
parent | 5dbbfa91469135f59351cf3bffcf2d51b40f912f (diff) | |
download | ConsoleKit2-5d62baaba55a1777b60284802d83d3e9befe60c9.tar.gz |
make sure to add all override parameters
-rw-r--r-- | src/ck-session-leader.c | 30 | ||||
-rwxr-xr-x | 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))) |