X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fglx%2Fpipes.c;h=24f9a2a093bf9602c7699a1481b77ed5cf19d403;hp=77be33e1fce2ed41c40b4ea451b4e3f0aea39df0;hb=39809ded547bdbb08207d3e514950425215b4410;hpb=4361b69d3178d7fc98d0388f9a223af6c2651aba diff --git a/hacks/glx/pipes.c b/hacks/glx/pipes.c index 77be33e1..24f9a2a0 100644 --- a/hacks/glx/pipes.c +++ b/hacks/glx/pipes.c @@ -68,7 +68,6 @@ static const char sccsid[] = "@(#)pipes.c 4.07 97/11/24 xlockmore"; "*wireframe: False \n" \ "*suppressRotationAnimation: True\n" \ -# define refresh_pipes 0 # define release_pipes 0 # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ @@ -135,7 +134,7 @@ ENTRYPOINT ModeSpecOpt pipes_opts = ModStruct pipes_description = {"pipes", "init_pipes", "draw_pipes", NULL, "draw_pipes", - "change_pipes", NULL, &pipes_opts, + "change_pipes", "free_pipes", &pipes_opts, 1000, 2, 5, 500, 4, 1.0, "", "Shows a selfbuilding pipe system", 0, NULL}; @@ -656,12 +655,20 @@ pinit(ModeInfo * mi, int zera) ENTRYPOINT void reshape_pipes(ModeInfo * mi, int width, int height) { - glViewport(0, 0, width, (GLint) height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - /*glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); */ - gluPerspective(65.0, (GLfloat) width / (GLfloat) height, 0.1, 20.0); - glMatrixMode(GL_MODELVIEW); + double h = (GLfloat) height / (GLfloat) width; + int y = 0; + + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + glViewport(0, y, width, (GLint) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + /*glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); */ + gluPerspective(65.0, 1/h, 0.1, 20.0); + glMatrixMode(GL_MODELVIEW); glClear(GL_COLOR_BUFFER_BIT); } @@ -689,15 +696,13 @@ pipes_handle_event (ModeInfo *mi, XEvent *event) static void generate_system (ModeInfo *); -static void free_pipes (ModeInfo *); - ENTRYPOINT void init_pipes (ModeInfo * mi) { int screen = MI_SCREEN(mi); pipesstruct *pp; - MI_INIT (mi, pipes, free_pipes); + MI_INIT (mi, pipes); pp = &pipes[screen]; pp->window = MI_WINDOW(mi); @@ -1167,7 +1172,7 @@ change_pipes (ModeInfo * mi) #endif /* !STANDALONE */ -static void +ENTRYPOINT void free_pipes (ModeInfo * mi) { pipesstruct *pp = &pipes[MI_SCREEN(mi)];