From http://www.jwz.org/xscreensaver/xscreensaver-5.30.tar.gz
[xscreensaver] / hacks / glx / sproingies.c
index e5446f700716e7b62c9e1aa31901f51c97c40815..42ccf2ba454b3641983665910afdc69067a0a2ea 100644 (file)
@@ -36,9 +36,7 @@ static const char sccsid[] = "@(#)sproingies.c        4.04 97/07/28 xlockmore";
 
 #ifdef USE_GL
 
-#ifdef HAVE_COCOA
-# include <OpenGL/glu.h>
-#else
+#ifndef HAVE_COCOA
 # include <GL/glu.h>
 #endif
 
@@ -510,8 +508,10 @@ RenderSproingie(int t, sp_instance * si)
 {
        GLfloat     scale, pointsize, mat_color[4] =
        {0.0, 0.0, 0.0, 1.0};
+#ifndef HAVE_JWZGLES
        GLdouble    clipplane[4] =
        {0.0, 1.0, 0.0, 0.0};
+#endif
        struct sPosColor *thisSproingie = &(si->positions[t]);
 
        if (thisSproingie->life < 1)
@@ -536,9 +536,14 @@ RenderSproingie(int t, sp_instance * si)
                             (GLfloat) (thisSproingie->y) +
                             ((GLfloat) (thisSproingie->frame) / 9.0),
                             (GLfloat) (thisSproingie->z));
+
+#ifndef HAVE_JWZGLES
+        /* OpenGLES doesn't have this but it doesn't seem to matter */
                clipplane[3] = ((GLdouble) (thisSproingie->frame) / 9.0) +
                        (si->wireframe ? 0.0 : 0.1);
                glClipPlane(GL_CLIP_PLANE0, clipplane);
+#endif
+
 /**            glCallList(si->sproingies[0]);*/
 /**/   renderList(si->sproingies[0], si->wireframe);
                glDisable(GL_CLIP_PLANE0);
@@ -546,7 +551,11 @@ RenderSproingie(int t, sp_instance * si)
                glTranslatef((GLfloat) (thisSproingie->x) + 0.5,
                             (GLfloat) (thisSproingie->y) + 0.5,
                             (GLfloat) (thisSproingie->z) - 0.5);
-               scale = (GLfloat) (1 << (thisSproingie->frame - BOOM_FRAME));
+               {
+                       int boom_scale = thisSproingie->frame - BOOM_FRAME;
+                       if (boom_scale >= 31) boom_scale = 31;
+                       scale = (GLfloat) (1 << boom_scale);
+               }
                glScalef(scale, scale, scale);
                if (!si->wireframe) {
                        if (!si->mono)