From http://www.jwz.org/xscreensaver/xscreensaver-5.38.tar.gz
[xscreensaver] / hacks / vines.c
index a816d736a405f86bdd6391754aa8736518289f13..7f519b4b57b0049531be88ba89d06bd4a8f34626 100644 (file)
@@ -44,28 +44,30 @@ static const char sccsid[] = "@(#)vines.c   5.00 2000/11/01 xlockmore";
  */
 
 #ifdef STANDALONE
-#define MODE_vines
-#define PROGCLASS "Vines"
-#define HACK_INIT init_vines
-#define HACK_DRAW draw_vines
-#define vines_opts xlockmore_opts
-#define DEFAULTS "*delay: 200000 \n" \
- "*count: 0 \n" \
- "*ncolors: 64 \n"
-#include "xlockmore.h"         /* in xscreensaver distribution */
-#include "erase.h"
+# define MODE_vines
+# define DEFAULTS      "*delay: 200000 \n" \
+                                       "*count: 0 \n" \
+                                       "*ncolors: 64 \n" \
+                                       "*fpsSolid: true \n" \
+                                   "*lowrez: True \n" \
+
+# include "xlockmore.h"                /* in xscreensaver distribution */
+# define free_vines 0
+# define release_vines 0
+# define reshape_vines 0
+# define vines_handle_event 0
 #else /* STANDALONE */
-#include "xlock.h"             /* in xlockmore distribution */
+# include "xlock.h"            /* in xlockmore distribution */
 #endif /* STANDALONE */
 
 #ifdef MODE_vines
 
-ModeSpecOpt vines_opts =
+ENTRYPOINT ModeSpecOpt vines_opts =
 {0, (XrmOptionDescRec *) NULL, 0, (argtype *) NULL, (OptionStruct *) NULL};
 
 #ifdef USE_MODULES
 ModStruct   vines_description =
-{"vines", "init_vines", "draw_vines", "release_vines",
+{"vines", "init_vines", "draw_vines", (char *) NULL,
  "refresh_vines", "init_vines", (char *) NULL, &vines_opts,
  200000, 0, 1, 1, 64, 1.0, "",
  "Shows fractals", 0, NULL};
@@ -89,23 +91,20 @@ typedef struct {
 
 static vinestruct *vines = (vinestruct *) NULL;
 
-void
+#ifndef STANDALONE
+ENTRYPOINT void
 refresh_vines(ModeInfo * mi)
 {
        MI_CLEARWINDOW(mi);
 }                              /* refresh_vines */
+#endif
 
-void
+ENTRYPOINT void
 init_vines(ModeInfo * mi)
 {
        vinestruct *fp;
 
-       if (vines == NULL) {
-               if ((vines = (vinestruct *) calloc(MI_NUM_SCREENS(mi),
-                                            sizeof (vinestruct))) == NULL) {
-                       return;
-               }
-       }
+       MI_INIT (mi, vines);
        fp = &vines[MI_SCREEN(mi)];
 
        fp->i = 0;
@@ -115,7 +114,7 @@ init_vines(ModeInfo * mi)
        MI_CLEARWINDOW(mi);
 }                              /* init_vines */
 
-void
+ENTRYPOINT void
 draw_vines(ModeInfo * mi)
 {
        Display    *display = MI_DISPLAY(mi);
@@ -127,13 +126,11 @@ draw_vines(ModeInfo * mi)
                return;
        fp = &vines[MI_SCREEN(mi)];
 
-       /* MI_IS_DRAWN(mi) = True; */
+       MI_IS_DRAWN(mi) = True;
        if (fp->i >= fp->length) {
                if (--(fp->iterations) == 0) {
-#ifdef STANDALONE
-         erase_full_window(MI_DISPLAY(mi), MI_WINDOW(mi));
-#endif /* STANDALONE */
                        init_vines(mi);
+                       return;
                }
                fp->centerx = NRAND(MI_WIDTH(mi));
                fp->centery = NRAND(MI_HEIGHT(mi));
@@ -176,13 +173,7 @@ draw_vines(ModeInfo * mi)
        }
 }                              /* draw_vines */
 
-void
-release_vines(ModeInfo * mi)
-{
-       if (vines != NULL) {
-               (void) free((void *) vines);
-               vines = (vinestruct *) NULL;
-       }
-}                              /* release_vines */
+
+XSCREENSAVER_MODULE ("Vines", vines)
 
 #endif /* MODE_vines */