"*suppressRotationAnimation: True\n" \
# define refresh_pipes 0
+# define release_pipes 0
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
# include "xlock.h" /* from the xlockmore distribution */
#ifdef USE_MODULES
ModStruct pipes_description =
-{"pipes", "init_pipes", "draw_pipes", "release_pipes",
+{"pipes", "init_pipes", "draw_pipes", NULL,
"draw_pipes",
"change_pipes", NULL, &pipes_opts,
1000, 2, 5, 500, 4, 1.0, "",
static void generate_system (ModeInfo *);
+static void free_pipes (ModeInfo *);
+
ENTRYPOINT void
init_pipes (ModeInfo * mi)
{
int screen = MI_SCREEN(mi);
pipesstruct *pp;
- if (pipes == NULL) {
- if ((pipes = (pipesstruct *) calloc(MI_NUM_SCREENS(mi),
- sizeof (pipesstruct))) == NULL)
- return;
- }
+ MI_INIT (mi, pipes, free_pipes);
pp = &pipes[screen];
pp->window = MI_WINDOW(mi);
#endif /* !STANDALONE */
-ENTRYPOINT void
-release_pipes (ModeInfo * mi)
+static void
+free_pipes (ModeInfo * mi)
{
- if (pipes != NULL) {
- int screen;
-
- for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
- pipesstruct *pp = &pipes[screen];
-
- if (pp->glx_context) {
-
- /* Display lists MUST be freed while their glXContext is current. */
- glXMakeCurrent(MI_DISPLAY(mi), pp->window, *(pp->glx_context));
-
- if (pp->valve)
- glDeleteLists(pp->valve, 1);
- if (pp->bolts)
- glDeleteLists(pp->bolts, 1);
- if (pp->betweenbolts)
- glDeleteLists(pp->betweenbolts, 1);
-
- if (pp->elbowbolts)
- glDeleteLists(pp->elbowbolts, 1);
- if (pp->elbowcoins)
- glDeleteLists(pp->elbowcoins, 1);
-
- if (pp->guagehead)
- glDeleteLists(pp->guagehead, 1);
- if (pp->guageface)
- glDeleteLists(pp->guageface, 1);
- if (pp->guagedial)
- glDeleteLists(pp->guagedial, 1);
- if (pp->guageconnector)
- glDeleteLists(pp->guageconnector, 1);
- if (pp->teapot)
- glDeleteLists(pp->teapot, 1);
- if (pp->dlists)
- {
- int i;
- for (i = 0; i < pp->dlist_count; i++)
- glDeleteLists (pp->dlists[i], 1);
- free (pp->dlists);
- free (pp->poly_counts);
- }
- }
- }
+ pipesstruct *pp = &pipes[MI_SCREEN(mi)];
- (void) free((void *) pipes);
- pipes = NULL;
+ if (pp->glx_context) {
+
+ /* Display lists MUST be freed while their glXContext is current. */
+ glXMakeCurrent(MI_DISPLAY(mi), pp->window, *(pp->glx_context));
+
+ if (pp->valve)
+ glDeleteLists(pp->valve, 1);
+ if (pp->bolts)
+ glDeleteLists(pp->bolts, 1);
+ if (pp->betweenbolts)
+ glDeleteLists(pp->betweenbolts, 1);
+
+ if (pp->elbowbolts)
+ glDeleteLists(pp->elbowbolts, 1);
+ if (pp->elbowcoins)
+ glDeleteLists(pp->elbowcoins, 1);
+
+ if (pp->guagehead)
+ glDeleteLists(pp->guagehead, 1);
+ if (pp->guageface)
+ glDeleteLists(pp->guageface, 1);
+ if (pp->guagedial)
+ glDeleteLists(pp->guagedial, 1);
+ if (pp->guageconnector)
+ glDeleteLists(pp->guageconnector, 1);
+ if (pp->teapot)
+ glDeleteLists(pp->teapot, 1);
+ if (pp->dlists)
+ {
+ int i;
+ for (i = 0; i < pp->dlist_count; i++)
+ glDeleteLists (pp->dlists[i], 1);
+ free (pp->dlists);
+ free (pp->poly_counts);
+ }
}
- FreeAllGL(mi);
}
XSCREENSAVER_MODULE ("Pipes", pipes)