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;
         
openSUSE Build Service is sponsored by