From http://www.jwz.org/xscreensaver/xscreensaver-5.38.tar.gz
[xscreensaver] / hacks / glx / tangram.c
index c084af588b586fcab6af76f1972cbd11db9ee14d..c250f5455ea6d7176d91fdd037c21a870f2a70c2 100644 (file)
@@ -22,7 +22,7 @@
        "*titleFont2: -*-helvetica-medium-r-normal-*-*-120-*-*-*-*-*-*\n" \
        "*titleFont3: -*-helvetica-medium-r-normal-*-*-80-*-*-*-*-*-*\n"  \
 
-# define refresh_tangram 0
+# define free_tangram 0
 # define release_tangram 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -779,7 +779,14 @@ static void draw_shapes(ModeInfo * mi)
 
 ENTRYPOINT void reshape_tangram(ModeInfo * mi, int w, int h)
 {
-    glViewport(0, 0, w, h);
+  int y = 0;
+
+  if (w > h * 5) {   /* tiny window: show middle */
+    h = w;
+    y = -h/2;
+  }
+
+  glViewport(0, y, w, h);
 }
 
 static void set_camera(tangram_configuration *tp)
@@ -877,14 +884,7 @@ ENTRYPOINT void init_tangram(ModeInfo * mi)
 {
     tangram_configuration *tp;
 
-    if (!tps) {
-        tps = (tangram_configuration *)
-            calloc(MI_NUM_SCREENS(mi), sizeof(tangram_configuration));
-        if (!tps) {
-            fprintf(stderr, "%s: out of memory\n", progname);
-            exit(1);
-        }
-    }
+    MI_INIT (mi, tps);
 
     tp = &tps[MI_SCREEN(mi)];