From http://www.jwz.org/xscreensaver/xscreensaver-5.30.tar.gz
[xscreensaver] / hacks / discrete.c
index 34c17671cc9534901ad693620e42f1d57a45e543..9b0cf597f52912bbc19a570706beafa54bbb8f0e 100644 (file)
@@ -38,10 +38,9 @@ static const char sccsid[] = "@(#)discrete.c 5.00 2000/11/01 xlockmore";
                                        "*cycles: 2500 \n" \
                                        "*ncolors: 100 \n" \
                                        "*fpsSolid: true \n" \
+                                   "*ignoreRotation: True \n" \
 
 # define SMOOTH_COLORS
-# define reshape_discrete 0
-# define discrete_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # include "erase.h"
 #else /* STANDALONE */
@@ -423,6 +422,15 @@ draw_discrete (ModeInfo * mi)
 }
 
 
+ENTRYPOINT void
+reshape_discrete(ModeInfo * mi, int width, int height)
+{
+  discretestruct *hp = &discretes[MI_SCREEN(mi)];
+  hp->maxx = width;
+  hp->maxy = height;
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+}
+
 ENTRYPOINT void
 release_discrete(ModeInfo * mi)
 {
@@ -448,6 +456,20 @@ 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;
+}
+
+
+
 XSCREENSAVER_MODULE ("Discrete", discrete)
 
 #endif /* MODE_discrete */