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 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'src/ck-session-leader.c') 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 */ -- cgit