From http://www.jwz.org/xscreensaver/xscreensaver-5.38.tar.gz
[xscreensaver] / hacks / discrete.c
index ecf4ce5c959f5a8816141410d7d6e3f3f52ac78c..bfb4459a233324d31a0b45d8cb2c332d3498c7e0 100644 (file)
@@ -39,11 +39,12 @@ static const char sccsid[] = "@(#)discrete.c        5.00 2000/11/01 xlockmore";
                                        "*ncolors: 100 \n" \
                                        "*fpsSolid: true \n" \
                                    "*ignoreRotation: True \n" \
+                                   "*lowrez: True \n" \
 
 # define SMOOTH_COLORS
 # define release_discrete 0
+# define discrete_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
-# include "erase.h"
 #else /* STANDALONE */
 # include "xlock.h"            /* in xlockmore distribution */
 #endif /* STANDALONE */
@@ -56,7 +57,7 @@ ENTRYPOINT ModeSpecOpt discrete_opts =
 #ifdef USE_MODULES
 ModStruct   discrete_description =
 {"discrete", "init_discrete", "draw_discrete", (char *) NULL,
- "refresh_discrete", "init_discrete", (char *) NULL, &discrete_opts,
+ "refresh_discrete", "init_discrete", "free_discrete", &discrete_opts,
  1000, 4096, 2500, 1, 64, 1.0, "",
  "Shows various discrete maps", 0, NULL};
 
@@ -102,23 +103,17 @@ typedef struct {
 
     int sqrt_sign, std_sign;
 
-#ifdef STANDALONE
-  eraser_state *eraser;
-#endif
-
 } discretestruct;
 
 static discretestruct *discretes = (discretestruct *) NULL;
 
-static void free_discrete(ModeInfo * mi);
-
 ENTRYPOINT void
 init_discrete (ModeInfo * mi)
 {
        double      range;
        discretestruct *hp;
 
-       MI_INIT (mi, discretes, free_discrete);
+       MI_INIT (mi, discretes);
        hp = &discretes[MI_SCREEN(mi)];
 
        hp->maxx = MI_WIDTH(mi);
@@ -247,10 +242,8 @@ init_discrete (ModeInfo * mi)
                /* if fails will check later */
        }
 
-#ifndef STANDALONE
        /* Clear the background. */
        MI_CLEARWINDOW(mi);
-#endif
 
        XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_WHITE_PIXEL(mi));
        hp->count = 0;
@@ -403,20 +396,13 @@ draw_discrete (ModeInfo * mi)
   int cycles = MI_CYCLES(mi);
   int i;
 
-  if (hp->eraser) {
-    hp->eraser = erase_window (MI_DISPLAY(mi), MI_WINDOW(mi), hp->eraser);
-    if (!hp->eraser)
-      init_discrete(mi);
-    return;
-  }
-
   for (i = 0; i < 10; i++) {
     draw_discrete_1 (mi);
     hp->count++;
   }
 
   if (hp->count > cycles) {
-    hp->eraser = erase_window (MI_DISPLAY(mi), MI_WINDOW(mi), hp->eraser);
+    init_discrete(mi);
   }
 }
 
@@ -430,7 +416,7 @@ reshape_discrete(ModeInfo * mi, int width, int height)
   XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
 }
 
-static void
+ENTRYPOINT void
 free_discrete(ModeInfo * mi)
 {
        discretestruct *hp = &discretes[MI_SCREEN(mi)];
@@ -441,25 +427,13 @@ free_discrete(ModeInfo * mi)
        }
 }
 
+#ifndef STANDALONE
 ENTRYPOINT void
 refresh_discrete(ModeInfo * mi)
 {
        MI_CLEARWINDOW(mi);
 }
-
-ENTRYPOINT Bool
-discrete_handle_event (ModeInfo *mi, XEvent *event)
-{
-  discretestruct *hp = &discretes[MI_SCREEN(mi)];
-  if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
-    {
-      hp->count = MI_CYCLES(mi);
-      return True;
-    }
-  return False;
-}
-
-
+#endif
 
 XSCREENSAVER_MODULE ("Discrete", discrete)