From http://www.jwz.org/xscreensaver/xscreensaver-5.27.tar.gz
[xscreensaver] / hacks / glx / jigglypuff.c
index 67c2c4b19e42c41274512260d8ddda9701ae3b81..d23b82171b8b8f8fa3beb4bdf6e3f8743de2cef8 100644 (file)
@@ -286,10 +286,12 @@ static inline void vector_scale(vector v, coord s)
     v[2] *= s;
 }
 
+/*
 static inline coord dot(vector v1, vector v2)
 {
     return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2];
 }
+*/
 
 static inline void cross(vector v1, vector v2, vector v)
 {
@@ -872,11 +874,11 @@ static int parse_color(jigglystruct *js)
 
 static void randomize_parameters(jigglystruct *js) {
     do_tetrahedron = random() & 1;
-# ifndef HAVE_JWZGLES
+# ifndef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */
     js->do_wireframe = !(random() & 3);
 # endif
     js->color_style = random() % 5;
-# ifdef HAVE_JWZGLES  /* SPHERE_MAP unimplemented */
+# ifdef HAVE_JWZGLES  /* #### SPHERE_MAP unimplemented */
     while (js->color_style == COLOR_STYLE_CHROME)
       js->color_style = random() % 5;;
 # endif
@@ -990,7 +992,11 @@ ENTRYPOINT void draw_jigglypuff(ModeInfo *mi)
            js->axis -= 2*M_PI;
        }
     }
+
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate(js->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     if(js->color_style == COLOR_STYLE_CYCLE) {
        int i;