X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fglx%2Fpipes.c;h=65e2b579740cb8913a60e4a6f7873de027f8a5e4;hp=31a0bdd305756fe6e496a8a5432f55a1b4a6acb4;hb=ffd8c0873576a9e3065696a624dce6b766b77062;hpb=82c5080773aae5e72ec155327c075775e023d2ee diff --git a/hacks/glx/pipes.c b/hacks/glx/pipes.c index 31a0bdd3..65e2b579 100644 --- a/hacks/glx/pipes.c +++ b/hacks/glx/pipes.c @@ -1,9 +1,8 @@ /* -*- 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 /*- @@ -43,13 +42,6 @@ static const char sccsid[] = "@(#)pipes.c 4.07 97/11/24 xlockmore"; * 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 - #ifdef STANDALONE # define PROGCLASS "Pipes" # define HACK_INIT init_pipes @@ -64,6 +56,7 @@ static const char sccsid[] = "@(#)pipes.c 4.07 97/11/24 xlockmore"; "*fpsSolid: True \n" \ "*fisheye: True \n" \ "*tightturns: False \n" \ + "*doubleBuffer: True \n" \ "*rotatepipes: True \n" # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ @@ -79,34 +72,40 @@ static const char sccsid[] = "@(#)pipes.c 4.07 97/11/24 xlockmore"; #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 = @@ -534,7 +533,7 @@ pinit(ModeInfo * mi, int zera) 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++) { @@ -731,7 +730,8 @@ draw_pipes(ModeInfo * mi) /* 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); @@ -961,7 +961,8 @@ draw_pipes(ModeInfo * mi) glFlush(); - glXSwapBuffers(display, window); + if (dbuf_p) + glXSwapBuffers(display, window); if (mi->fps_p) do_fps (mi); }