summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Jon McCann <jmccann@redhat.com>2008-04-19 01:28:27 -0400
committerWilliam Jon McCann <jmccann@redhat.com>2008-04-19 01:28:27 -0400
commit5d62baaba55a1777b60284802d83d3e9befe60c9 (patch)
tree58713dd805e71e4416223a6edff2f4d766001fe5
parent5dbbfa91469135f59351cf3bffcf2d51b40f912f (diff)
make sure to add all override parameters
-rw-r--r--src/ck-session-leader.c30
-rwxr-xr-xsrc/test-open-session-with-parameters2
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)))