/* -*- Mode: C; tab-width: 4 -*- */
/* pipes --- 3D selfbuiding pipe system */
-#if !defined( lint ) && !defined( SABER )
+#if 0
static const char sccsid[] = "@(#)pipes.c 4.07 97/11/24 xlockmore";
-
#endif
/*-
* 29-Apr-97: Efficiency speed-ups by Marcelo F. Vianna
*/
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
#ifdef STANDALONE
# define PROGCLASS "Pipes"
# define HACK_INIT init_pipes
"*cycles: 5 \n" \
"*size: 500 \n" \
"*showFPS: False \n" \
+ "*fpsSolid: True \n" \
"*fisheye: True \n" \
"*tightturns: False \n" \
+ "*doubleBuffer: True \n" \
"*rotatepipes: True \n"
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
#define DEF_FISHEYE "True"
#define DEF_TIGHTTURNS "False"
#define DEF_ROTATEPIPES "True"
+#define DEF_DBUF "False"
#define NofSysTypes 3
static int factory;
static Bool fisheye, tightturns, rotatepipes;
+static Bool dbuf_p;
static XrmOptionDescRec opts[] =
{
- {"-factory", ".pipes.factory", XrmoptionSepArg, (caddr_t) NULL},
- {"-fisheye", ".pipes.fisheye", XrmoptionNoArg, (caddr_t) "on"},
- {"+fisheye", ".pipes.fisheye", XrmoptionNoArg, (caddr_t) "off"},
- {"-tightturns", ".pipes.tightturns", XrmoptionNoArg, (caddr_t) "on"},
- {"+tightturns", ".pipes.tightturns", XrmoptionNoArg, (caddr_t) "off"},
- {"-rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, (caddr_t) "on"},
- {"+rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, (caddr_t) "off"}
+ {"-factory", ".pipes.factory", XrmoptionSepArg, 0},
+ {"-fisheye", ".pipes.fisheye", XrmoptionNoArg, "on"},
+ {"+fisheye", ".pipes.fisheye", XrmoptionNoArg, "off"},
+ {"-tightturns", ".pipes.tightturns", XrmoptionNoArg, "on"},
+ {"+tightturns", ".pipes.tightturns", XrmoptionNoArg, "off"},
+ {"-rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "on"},
+ {"+rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "off"},
+ {"-db", ".pipes.doubleBuffer", XrmoptionNoArg, "on"},
+ {"+db", ".pipes.doubleBuffer", XrmoptionNoArg, "off"},
};
static argtype vars[] =
{
- {(caddr_t *) & factory, "factory", "Factory", DEF_FACTORY, t_Int},
- {(caddr_t *) & fisheye, "fisheye", "Fisheye", DEF_FISHEYE, t_Bool},
- {(caddr_t *) & tightturns, "tightturns", "Tightturns", DEF_TIGHTTURNS, t_Bool},
- {(caddr_t *) & rotatepipes, "rotatepipes", "Rotatepipes", DEF_ROTATEPIPES, t_Bool}
+ {&factory, "factory", "Factory", DEF_FACTORY, t_Int},
+ {&fisheye, "fisheye", "Fisheye", DEF_FISHEYE, t_Bool},
+ {&tightturns, "tightturns", "Tightturns", DEF_TIGHTTURNS, t_Bool},
+ {&rotatepipes, "rotatepipes", "Rotatepipes", DEF_ROTATEPIPES, t_Bool},
+ {&dbuf_p, "doubleBuffer", "DoubleBuffer", DEF_DBUF, t_Bool}
};
static OptionStruct desc[] =
{
{"-factory num", "how much extra equipment in pipes (0 for none)"},
{"-/+fisheye", "turn on/off zoomed-in view of pipes"},
{"-/+tightturns", "turn on/off tight turns"},
- {"-/+rotatepipes", "turn on/off pipe system rotation per screenful"}
+ {"-/+rotatepipes", "turn on/off pipe system rotation per screenful"},
+ {"-/+db", "turn on/off double buffering"}
};
ModeSpecOpt pipes_opts =
if (zera) {
pp->system_number = 1;
- glDrawBuffer(GL_FRONT_AND_BACK);
+ glDrawBuffer(dbuf_p ? GL_BACK : GL_FRONT);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
(void) memset(pp->Cells, 0, sizeof (pp->Cells));
for (X = 0; X < HCELLS; X++) {
/* If the maximum number of system was drawn, restart (clearing the screen), */
/* else start a new system. */
if (++pp->system_number > pp->number_of_systems) {
- (void) sleep(1);
+ if (!mi->fps_p)
+ sleep(1);
pinit(mi, 1);
} else {
pinit(mi, 0);
glFlush();
- glXSwapBuffers(display, window);
+ if (dbuf_p)
+ glXSwapBuffers(display, window);
if (mi->fps_p) do_fps (mi);
}