diff options
Diffstat (limited to 'libbackground')
-rw-r--r-- | libbackground/ChangeLog | 9 | ||||
-rw-r--r-- | libbackground/preferences.c | 23 |
2 files changed, 22 insertions, 10 deletions
diff --git a/libbackground/ChangeLog b/libbackground/ChangeLog index 0698f431a..93dc2e601 100644 --- a/libbackground/ChangeLog +++ b/libbackground/ChangeLog @@ -1,3 +1,12 @@ +2006-08-23 Kjartan Maraas <kmaraas@gnome.org> + + * preferences.c: (bg_preferences_load), + (bg_preferences_merge_entry), (read_wptype_from_string), + (read_orientation_from_string): Make read_orientation_from_string() + and read_wptype_from_string() behave like read_color_from_string() + and adjust all callers. Avoids some excess strduping too I guess. + Closes bug #352252. + 2006-08-21 Rodney Dawes <dobey@novell.com> * preferences.c (bg_preferences_load): Revert previous leak fix from diff --git a/libbackground/preferences.c b/libbackground/preferences.c index 84eda13c9..864f6e5c4 100644 --- a/libbackground/preferences.c +++ b/libbackground/preferences.c @@ -42,8 +42,8 @@ static void bg_preferences_class_init (BGPreferencesClass *class); static void bg_preferences_finalize (GObject *object); static GdkColor *read_color_from_string (const gchar *string); -static orientation_t read_orientation_from_string (gchar *string); -static wallpaper_type_t read_wptype_from_string (gchar *string); +static orientation_t read_orientation_from_string (const gchar *string); +static wallpaper_type_t read_wptype_from_string (const gchar *string); static GEnumValue _bg_wptype_values[] = { { WPTYPE_TILED, "WPTYPE_TILED", "wallpaper"}, @@ -272,13 +272,18 @@ bg_preferences_load (BGPreferences *prefs) if (prefs->opacity >= 100 || prefs->opacity < 0) prefs->adjust_opacity = FALSE; - prefs->orientation = read_orientation_from_string (gconf_client_get_string (client, BG_PREFERENCES_COLOR_SHADING_TYPE, &error)); + tmp = gconf_client_get_string (client, BG_PREFERENCES_COLOR_SHADING_TYPE, &error); + prefs->orientation = read_orientation_from_string (tmp); + g_free (tmp); + if (prefs->orientation == ORIENTATION_SOLID) prefs->gradient_enabled = FALSE; else prefs->gradient_enabled = TRUE; - prefs->wallpaper_type = read_wptype_from_string (gconf_client_get_string (client, BG_PREFERENCES_PICTURE_OPTIONS, &error)); + tmp = gconf_client_get_string (client, BG_PREFERENCES_PICTURE_OPTIONS, &error); + prefs->wallpaper_type = read_wptype_from_string (tmp); + g_free (tmp); if (prefs->wallpaper_type == WPTYPE_UNSET) { prefs->wallpaper_enabled = FALSE; @@ -305,7 +310,7 @@ bg_preferences_merge_entry (BGPreferences *prefs, g_return_if_fail (IS_BG_PREFERENCES (prefs)); if (!strcmp (entry->key, BG_PREFERENCES_PICTURE_OPTIONS)) { - wallpaper_type_t wallpaper_type = read_wptype_from_string (g_strdup (gconf_value_get_string (value))); + wallpaper_type_t wallpaper_type = read_wptype_from_string (gconf_value_get_string (value)); if (wallpaper_type == WPTYPE_UNSET) { prefs->wallpaper_enabled = FALSE; } else { @@ -350,7 +355,7 @@ bg_preferences_merge_entry (BGPreferences *prefs, prefs->adjust_opacity = FALSE; } else if (!strcmp (entry->key, BG_PREFERENCES_COLOR_SHADING_TYPE)) { - prefs->orientation = read_orientation_from_string (g_strdup (gconf_value_get_string (value))); + prefs->orientation = read_orientation_from_string (gconf_value_get_string (value)); if (prefs->orientation == ORIENTATION_SOLID) prefs->gradient_enabled = FALSE; @@ -371,7 +376,7 @@ bg_preferences_merge_entry (BGPreferences *prefs, } static wallpaper_type_t -read_wptype_from_string (gchar *string) +read_wptype_from_string (const gchar *string) { wallpaper_type_t type = WPTYPE_UNSET; @@ -387,14 +392,13 @@ read_wptype_from_string (gchar *string) } else if (!strncmp (string, "zoom", sizeof ("zoom"))) { type = WPTYPE_ZOOM; } - g_free (string); } return type; } static orientation_t -read_orientation_from_string (gchar *string) +read_orientation_from_string (const gchar *string) { orientation_t type = ORIENTATION_SOLID; @@ -404,7 +408,6 @@ read_orientation_from_string (gchar *string) } else if (!strncmp (string, "horizontal-gradient", sizeof ("horizontal-gradient"))) { type = ORIENTATION_HORIZ; } - g_free (string); } return type; |