I was able to reproduce this on a Ubuntu 12.10 Live CD (amd64). It can
be seen in the ltrace below that gdk_pixbuf_apply_embedded_orientation()
is called but returns the same pixbuf (no transformation done). In
Ubuntu 12.04 the same function returns a new pixbuf and we can see the
width and length are swapped.

I suspect the image loading module, which should set the "orientation"
pixbuf property, to be at fault. But I would need to run a debug build
on 12.10 to confirm that.

ubuntu@ubuntu:~$ ldd /usr/bin/xscreensaver-getimage | grep pixbuf-
        libgdk_pixbuf-2.0.so.0 => 
/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f1f1d5bf000)

ubuntu@ubuntu:~$ ltrace -l /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 
xscreensaver-getimage -verbose -root -file /tmp/dsc_8639.jpg 
xscreensaver-getimage: grabDesktopImages:  True
xscreensaver-getimage: grabVideoFrames:    False
xscreensaver-getimage: chooseRandomImages: False
xscreensaver-getimage: imageDirectory:     /tmp/dsc_8639.jpg
xscreensaver-getimage: loading "/tmp/dsc_8639.jpg"
gdk_pixbuf_new_from_file(0x7fff2cda2503, 0x7fff2cd9fff0, 0x8875e0, 8, 3)      = 
0x8d64a0
gdk_pixbuf_get_width(0x8d64a0, 0xffffffff, 0, 0x7fbea7206748, 0x7fbea8760800) = 
4928
gdk_pixbuf_get_height(0x8d64a0, 0xffffffff, 0x8d5250, 0x7fbea7206748, 
0x7fbea8760800) = 3264
gdk_pixbuf_apply_embedded_orientation(0x8d64a0, 0xffffffff, 0x8d5250, 
0x7fbea7206748, 0x7fbea8760800) = 0x8d64a0
gdk_pixbuf_unref(0x8d64a0, 0x886fb8, 1, 80, 0x896210)                         = 
2
gdk_pixbuf_get_width(0x8d64a0, 0x886fb8, 1, 0, 0x896210)                      = 
4928
gdk_pixbuf_get_height(0x8d64a0, 0x886fb8, 0x8d5250, 0, 0x896210)              = 
3264
xscreensaver-getimage: scaling image by 27% (4928x3264 -> 1358x900)
xscreensaver-getimage: displaying 1358x900 image at 41,0 in 1440x900.
gdk_pixbuf_scale_simple(0x8d64a0, 1358, 900, 2, 0x7fbea8760800)               = 
0x8d64f0
gdk_pixbuf_unref(0x8d64a0, 1, 0x7fbea7206798, 1, 0x7fbea7206790)              = 
3
+++ exited (status 0) +++

ubuntu@ubuntu:~$ dpkg -S /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0
libgdk-pixbuf2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0

ubuntu@ubuntu:~$ apt-cache policy libgdk-pixbuf2.0-0:amd64
libgdk-pixbuf2.0-0:
  Installed: 2.26.4-0ubuntu1
  Candidate: 2.26.4-0ubuntu1
  Version table:
 *** 2.26.4-0ubuntu1 0
        500 http://archive.ubuntu.com/ubuntu/ quantal/main amd64 Packages
        100 /var/lib/dpkg/status


For comparison, the same run on Ubuntu 12.04:

$ ldd /usr/bin/xscreensaver-getimage|grep pixbuf-
        libgdk_pixbuf-2.0.so.0 => 
/usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0 (0xb76dc000)

$ ltrace -l /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0 
xscreensaver-getimage -root -verbose -file /tmp/dsc_8639.jpg 
xscreensaver-getimage: grabDesktopImages:  True
xscreensaver-getimage: grabVideoFrames:    False
xscreensaver-getimage: chooseRandomImages: False
xscreensaver-getimage: imageDirectory:     /tmp/dsc_8639.jpg
xscreensaver-getimage: loading "/tmp/dsc_8639.jpg"
gdk_pixbuf_new_from_file(0xbfb05521, 0xbfb03c90, 0xbfb03c94, 0xbfb03c98, 
0xbfb03c9c)                               = 0x84ad040
gdk_pixbuf_get_width(0x84ad040, 0xbfb03c90, 0xbfb03c94, 0xbfb03c98, 0xbfb03c9c) 
                                   = 4928
gdk_pixbuf_get_height(0x84ad040, 0xbfb03c90, 0xbfb03c94, 0xbfb03c98, 
0xbfb03c9c)                                   = 3264
gdk_pixbuf_apply_embedded_orientation(0x84ad040, 0xbfb03c90, 0xbfb03c94, 
0xbfb03c98, 0xbfb03c9c)                   = 0x84ad078
gdk_pixbuf_unref(0x84ad040, 0xbfb03c90, 0xbfb03c94, 0xbfb03c98, 0xbfb03c9c)     
                                   = 3
gdk_pixbuf_get_width(0x84ad078, 0xbfb03c90, 0xbfb03c94, 0xbfb03c98, 0xbfb03c9c) 
                                   = 3264
gdk_pixbuf_get_height(0x84ad078, 0xbfb03c90, 0xbfb03c94, 0xbfb03c98, 
0xbfb03c9c)                                   = 4928
xscreensaver-getimage: rotated 4928x3264 to 3264x4928
xscreensaver-getimage: scaling image by 21% (3264x4928 -> 695x1050)
xscreensaver-getimage: displaying 695x1050 image at 492,0 in 1680x1050.
gdk_pixbuf_scale_simple(0x84ad078, 695, 1050, 2, 0xbfb03c98)                    
                                   = 0x84ad0b0
gdk_pixbuf_unref(0x84ad078, 695, 1050, 2, 0xbfb03c98)                           
                                   = 3
+++ exited (status 0) +++

$ dpkg -S /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0
libgdk-pixbuf2.0-0: /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0

$ apt-cache policy libgdk-pixbuf2.0-0
libgdk-pixbuf2.0-0:
  Installed: 2.26.1-1
  Candidate: 2.26.1-1
  Version table:
 *** 2.26.1-1 0
        500 http://ch.archive.ubuntu.com/ubuntu/ precise/main i386 Packages
        100 /var/lib/dpkg/status


** Changed in: xscreensaver (Ubuntu)
       Status: New => Confirmed

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1077186

Title:
  glslideshow ignores EXIF rotation data from Nikon cameras

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/xscreensaver/+bug/1077186/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to