Free original pixbuf after scaling
This commit is contained in:
parent
ce8fe45cbf
commit
57d3b293a2
7
x.c
7
x.c
@ -405,17 +405,20 @@ static colored_layout *r_init_shared(cairo_t *c, notification *n)
|
|||||||
int h = gdk_pixbuf_get_height(pixbuf);
|
int h = gdk_pixbuf_get_height(pixbuf);
|
||||||
int larger = w > h ? w : h;
|
int larger = w > h ? w : h;
|
||||||
if (settings.max_icon_size && larger > settings.max_icon_size) {
|
if (settings.max_icon_size && larger > settings.max_icon_size) {
|
||||||
|
GdkPixbuf *scaled;
|
||||||
if (w >= h) {
|
if (w >= h) {
|
||||||
pixbuf = gdk_pixbuf_scale_simple(pixbuf,
|
scaled = gdk_pixbuf_scale_simple(pixbuf,
|
||||||
settings.max_icon_size,
|
settings.max_icon_size,
|
||||||
(int) ((double) settings.max_icon_size / w * h),
|
(int) ((double) settings.max_icon_size / w * h),
|
||||||
GDK_INTERP_BILINEAR);
|
GDK_INTERP_BILINEAR);
|
||||||
} else {
|
} else {
|
||||||
pixbuf = gdk_pixbuf_scale_simple(pixbuf,
|
scaled = gdk_pixbuf_scale_simple(pixbuf,
|
||||||
(int) ((double) settings.max_icon_size / h * w),
|
(int) ((double) settings.max_icon_size / h * w),
|
||||||
settings.max_icon_size,
|
settings.max_icon_size,
|
||||||
GDK_INTERP_BILINEAR);
|
GDK_INTERP_BILINEAR);
|
||||||
}
|
}
|
||||||
|
g_object_unref(pixbuf);
|
||||||
|
pixbuf = scaled;
|
||||||
}
|
}
|
||||||
|
|
||||||
cl->icon = gdk_pixbuf_to_cairo_surface(pixbuf);
|
cl->icon = gdk_pixbuf_to_cairo_surface(pixbuf);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user