File xfdesktop-wallpaper-scaling.patch of Package xfdesktop.10252
From: Maurizio Galli <maurizio.galli@gmail.com>
Date: 2019-05-17 15:22:16.346318979 +0800
Subject: Fixes wallpaper scaling fails if image contains EXIF markup for rotation
References: boo#1134125
Upstream: merged
===================================================================
diff -rub a/src/xfce-backdrop.c b/src/xfce-backdrop.c
--- a/src/xfce-backdrop.c 2017-06-26 21:48:02.000000000 +0800
+++ b/src/xfce-backdrop.c 2019-05-07 11:43:37.000000000 +0800
@@ -1749,6 +1749,7 @@
gint dx, dy, xo, yo;
gdouble xscale, yscale;
GdkInterpType interp;
+ gboolean rotated = FALSE;
TRACE("entering");
@@ -1763,6 +1764,8 @@
image = gdk_pixbuf_loader_get_pixbuf(loader);
if(image) {
+ gint iw_orig = gdk_pixbuf_get_width(image);
+
/* If the image is supposed to be rotated, do that now */
GdkPixbuf *temp = gdk_pixbuf_apply_embedded_orientation (image);
/* Do not unref image, gdk_pixbuf_loader_get_pixbuf is transfer none */
@@ -1770,6 +1773,8 @@
iw = gdk_pixbuf_get_width(image);
ih = gdk_pixbuf_get_height(image);
+
+ rotated = (iw_orig != iw);
}
if(backdrop->priv->width == 0 || backdrop->priv->height == 0) {
@@ -1878,7 +1883,9 @@
dy = yo;
gdk_pixbuf_composite(image, final_image, dx, dy,
- iw * xscale, ih * yscale, xo, yo, 1, 1,
+ iw * xscale, ih * yscale, xo, yo,
+ rotated ? xscale : 1,
+ rotated ? yscale : 1,
interp, 255);
break;