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 /src/ck-session-leader.c | |
parent | 5dbbfa91469135f59351cf3bffcf2d51b40f912f (diff) |
make sure to add all override parameters
Diffstat (limited to 'src/ck-session-leader.c')
-rw-r--r-- | src/ck-session-leader.c | 30 |
1 files changed, 22 insertions, 8 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 */ |