icontheme: Make sure icon_info->scale doesn't end up 0

GdkPixbuf will fail returning %NULL if we try to scale a pixbuf to (0, 0),
which will then trigger an assertion in gtk_icon_info_load_icon_finish();
we never want a scale of 0, so ensure it is at least 1.

https://bugzilla.gnome.org/show_bug.cgi?id=708384
This commit is contained in:
Florian Müllner
2013-09-17 22:37:06 +02:00
committed by Alexander Larsson
parent 7b2f60831c
commit f081552da1

View File

@ -3721,12 +3721,12 @@ icon_info_ensure_scale_and_pixbuf (GtkIconInfo *icon_info,
if (icon_info->forced_size)
icon_info->scale = -1;
else if (icon_info->dir_type == ICON_THEME_DIR_FIXED)
icon_info->scale = round((gdouble) scaled_desired_size / (icon_info->dir_size * icon_info->dir_scale));
icon_info->scale = MAX(round((gdouble) scaled_desired_size / (icon_info->dir_size * icon_info->dir_scale)), 1.0);
else if (icon_info->dir_type == ICON_THEME_DIR_THRESHOLD)
{
if (scaled_desired_size >= (icon_info->dir_size - icon_info->threshold) * icon_info->dir_scale &&
scaled_desired_size <= (icon_info->dir_size + icon_info->threshold) * icon_info->dir_scale)
icon_info->scale = round((gdouble) scaled_desired_size / (icon_info->dir_size * icon_info->dir_scale));
icon_info->scale = MAX(round((gdouble) scaled_desired_size / (icon_info->dir_size * icon_info->dir_scale)), 1.0);
else if (icon_info->dir_size > 0)
icon_info->scale =(gdouble) scaled_desired_size / (icon_info->dir_size * icon_info->dir_scale);
}