From http://www.jwz.org/xscreensaver/xscreensaver-5.38.tar.gz
[xscreensaver] / hacks / glx / lament.c
index bfc6ce4db2bbe8f76ff94dbd736cae42b1626f06..777a5c648722f1c75c59b469efa5fca6df3d330f 100644 (file)
 
 #define DEFAULTS       "*delay:        20000   \n"     \
                        "*showFPS:      False   \n"     \
-                       "*wireframe:    False   \n"
-# define refresh_lament 0
+                       "*wireframe:    False   \n"     \
+                       "*suppressRotationAnimation: True\n" \
+
+# define free_lament 0
 # define release_lament 0
 #include "xlockmore.h"
 
@@ -323,10 +325,13 @@ scale_for_window (ModeInfo *mi)
   if (MI_WIDTH(mi) > MI_HEIGHT(mi))
     scale /= MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi);
 
+  /* If the window is super wide, make it bigger. */
+  if (scale < 8) scale = 8;
+
   /* Constrain it to roughly life-sized on the screen, not huge.
    */
-# ifdef USE_IPHONE
-  if (size > 768)  /* iPad retina */
+# ifdef HAVE_MOBILE
+  if (size > 768)  /* iPad retina / iPhone 6 */
     target_size *= 1.5;
   else
 # endif
@@ -453,8 +458,8 @@ leviathan (ModeInfo *mi, GLfloat ratio, GLfloat alpha, Bool top_p)
       int j = (i + 1) % countof(p);
 /*      if (top_p)*/
         do_normal (z, 0, 0,
-                   0, p[i].y, p[i].z,
-                   0, p[j].y, p[j].z);
+                   0, p[i].x, p[i].y,
+                   0, p[j].x, p[j].y);
 /*
       else
         do_normal (z, 0, 0,
@@ -913,6 +918,10 @@ draw (ModeInfo *mi)
     case LAMENT_LID_CLOSE:
     case LAMENT_LID_ZOOM:
       {
+        GLfloat d = 0.21582;
+        int i;
+        const int lists[4] = { OBJ_LID_A, OBJ_LID_B, OBJ_LID_C, OBJ_LID_D };
+
         lc->facing_p = facing_screen_p (mi);
 
         if (lc->anim_z < 0.5)
@@ -920,9 +929,6 @@ draw (ModeInfo *mi)
         else
           glTranslatef (8 * (0.5 - (lc->anim_z - 0.5)), 0, 0);
 
-        GLfloat d = 0.21582;
-        int i;
-        const int lists[4] = { OBJ_LID_A, OBJ_LID_B, OBJ_LID_C, OBJ_LID_D };
         glCallList (lc->dlists[OBJ_LID_BASE]);
         mi->polygon_count += lc->polys[OBJ_LID_BASE];
         for (i = 0; i < countof(lists); i++)
@@ -1702,16 +1708,7 @@ init_lament (ModeInfo *mi)
 {
   lament_configuration *lc;
   int i;
-  if (!lcs)
-    {
-      lcs = (lament_configuration *)
-       calloc(MI_NUM_SCREENS(mi), sizeof (lament_configuration));
-      if (!lcs)
-       {
-         fprintf(stderr, "%s: out of memory\n", progname);
-         exit(1);
-       }
-    }
+  MI_INIT (mi, lcs);
 
   lc = &lcs[MI_SCREEN(mi)];