"*count: 30 \n" \
"*ncolors: 200 \n" \
"*fpsSolid: true \n" \
+ "*ignoreRotation: True \n" \
# define SMOOTH_COLORS
-# define reshape_drift 0
-# define drift_handle_event 0
+# define release_drift 0
# include "xlockmore.h" /* in xscreensaver distribution */
# include "erase.h"
#else /* STANDALONE */
#ifdef USE_MODULES
ModStruct drift_description =
-{"drift", "init_drift", "draw_drift", "release_drift",
+{"drift", "init_drift", "draw_drift", (char *) NULL,
"refresh_drift", "init_drift", (char *) NULL, &drift_opts,
10000, 30, 1, 1, 64, 1.0, "",
"Shows cosmic drifting flame fractals", 0, NULL};
}
static void
-free_drift(driftstruct *dp)
+free_drift(ModeInfo * mi)
{
+ driftstruct *dp = &drifts[MI_SCREEN(mi)];
if (dp->ncpoints != NULL) {
(void) free((void *) dp->ncpoints);
dp->ncpoints = (int *) NULL;
if (!dp->ncpoints) {
if ((dp->ncpoints = (int *) malloc(sizeof (int) * MI_NCOLORS(mi))) ==
NULL) {
- free_drift(dp);
+ free_drift(mi);
return;
}
}
if (!dp->cpts) {
if ((dp->cpts = (XPoint *) malloc(MAXBATCH2 * sizeof (XPoint) *
MI_NCOLORS(mi))) == NULL) {
- free_drift(dp);
+ free_drift(mi);
return;
}
}
{
driftstruct *dp;
- if (drifts == NULL) {
- if ((drifts = (driftstruct *) calloc(MI_NUM_SCREENS(mi),
- sizeof (driftstruct))) == NULL)
- return;
- }
+ MI_INIT (mi, drifts, free_drift);
dp = &drifts[MI_SCREEN(mi)];
dp->width = MI_WIDTH(mi);
}
ENTRYPOINT void
-release_drift(ModeInfo * mi)
+reshape_drift(ModeInfo * mi, int width, int height)
{
- if (drifts != NULL) {
- int screen;
-
- for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++)
- free_drift(&drifts[screen]);
- (void) free((void *) drifts);
- drifts = (driftstruct *) NULL;
- }
+ MI_CLEARWINDOW(mi);
+ init_drift (mi);
}
ENTRYPOINT void
MI_CLEARWINDOW(mi);
}
+ENTRYPOINT Bool
+drift_handle_event (ModeInfo *mi, XEvent *event)
+{
+ if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+ {
+ reshape_drift (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ return True;
+ }
+ return False;
+}
+
+
XSCREENSAVER_MODULE ("Drift", drift)
#endif /* MODE_drift */