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:
committed by
Alexander Larsson
parent
7b2f60831c
commit
f081552da1
@ -3721,12 +3721,12 @@ icon_info_ensure_scale_and_pixbuf (GtkIconInfo *icon_info,
|
|||||||
if (icon_info->forced_size)
|
if (icon_info->forced_size)
|
||||||
icon_info->scale = -1;
|
icon_info->scale = -1;
|
||||||
else if (icon_info->dir_type == ICON_THEME_DIR_FIXED)
|
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)
|
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 &&
|
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)
|
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)
|
else if (icon_info->dir_size > 0)
|
||||||
icon_info->scale =(gdouble) scaled_desired_size / (icon_info->dir_size * icon_info->dir_scale);
|
icon_info->scale =(gdouble) scaled_desired_size / (icon_info->dir_size * icon_info->dir_scale);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user