From http://www.jwz.org/xscreensaver/xscreensaver-5.16.tar.gz
[xscreensaver] / hacks / glx / carousel.c
index 9b512646e2fcf0d5154d6ebcab2d4f1823563f99..2a2a0ceeb3f08bdd26f04f07c7902adbdcfd7bd3 100644 (file)
@@ -1,4 +1,4 @@
-/* carousel, Copyright (c) 2005-2011 Jamie Zawinski <jwz@jwz.org>
+/* carousel, Copyright (c) 2005-2012 Jamie Zawinski <jwz@jwz.org>
  * Loads a sequence of images and rotates them around.
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
@@ -285,15 +285,14 @@ image_loaded_cb (const char *filename, XRectangle *geom,
     free (frame->loading.title);
   frame->loading.title = (filename ? strdup (filename) : 0);
 
-# if 0 /* xscreensaver-getimage returns paths relative to the image directory
-          now, so leave the sub-directory part in.
-        */
-  if (frame->loading.title)   /* strip filename to part after last /. */
-    {
+  /* xscreensaver-getimage returns paths relative to the image directory
+     now, so leave the sub-directory part in.  Unless it's an absolute path.
+  */
+  if (frame->loading.title && frame->loading.title[0] == '/')
+    {    /* strip filename to part after last /. */
       char *s = strrchr (frame->loading.title, '/');
       if (s) strcpy (frame->loading.title, s+1);
     }
-# endif /* 0 */
 
   if (debug_p)
     fprintf (stderr, "%s:   loaded %4d x %-4d  %4d x %-4d  \"%s\"\n",
@@ -517,11 +516,12 @@ loading_msg (ModeInfo *mi, int n)
   glMatrixMode(GL_PROJECTION);
   glPushMatrix();
   glLoadIdentity();
+  glRotatef(current_device_rotation(), 0, 0, 1);
 
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
   glLoadIdentity();
-  gluOrtho2D(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi));
+  glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1);
 
   glTranslatef ((MI_WIDTH(mi)  - ss->loading_sw) / 2,
                 (MI_HEIGHT(mi) - ss->loading_sh) / 2,
@@ -868,6 +868,7 @@ draw_carousel (ModeInfo *mi)
   {
     double x, y, z;
     gltrackball_rotate (ss->trackball);
+    glRotatef(current_device_rotation(), 0, 0, 1);
 
     /* Tilt the tube up or down by up to 30 degrees */
     get_position (ss->rot, &x, &y, &z, !ss->button_down_p);