X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fglx%2Fendgame.c;h=ddba7f9c34a43119fcd41e4e81442dc1f8d99739;hb=39809ded547bdbb08207d3e514950425215b4410;hp=0aecae2da402d21e5d3c37ea3fe4b0c2a9f935f7;hpb=6afd6db0ae9396cd7ff897ade597cd5483f49b0e;p=xscreensaver diff --git a/hacks/glx/endgame.c b/hacks/glx/endgame.c index 0aecae2d..ddba7f9c 100644 --- a/hacks/glx/endgame.c +++ b/hacks/glx/endgame.c @@ -20,7 +20,8 @@ "*showFPS: False \n" \ "*wireframe: False \n" \ -# define refresh_chess 0 +# define free_chess 0 +# define release_chess 0 # include "xlockmore.h" #else @@ -73,7 +74,7 @@ ENTRYPOINT ModeSpecOpt chess_opts = {countof(opts), opts, countof(vars), vars, N #ifdef USE_MODULES ModStruct chess_description = -{"chess", "init_chess", "draw_chess", "release_chess", +{"chess", "init_chess", "draw_chess", NULL, "draw_chess", "init_chess", NULL, &chess_opts, 1000, 1, 2, 1, 4, 1.0, "", "Chess", 0, NULL}; @@ -786,7 +787,15 @@ static void display(ModeInfo *mi, Chesscreen *cs) ENTRYPOINT void reshape_chess(ModeInfo *mi, int width, int height) { GLfloat h = (GLfloat) height / (GLfloat) width; - glViewport(0,0, width, height); + 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, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45, 1/h, 2.0, 30.0); @@ -799,9 +808,7 @@ ENTRYPOINT void init_chess(ModeInfo *mi) Chesscreen *cs; int screen = MI_SCREEN(mi); - if(!qs && - !(qs = (Chesscreen *) calloc(MI_NUM_SCREENS(mi), sizeof(Chesscreen)))) - return; + MI_INIT(mi, qs); cs = &qs[screen]; cs->window = MI_WINDOW(mi); @@ -959,16 +966,6 @@ ENTRYPOINT void draw_chess(ModeInfo *mi) glXSwapBuffers(disp, w); } -/** bust it */ -ENTRYPOINT void release_chess(ModeInfo *mi) -{ - if(qs) - free((void *) qs); - qs = 0; - - FreeAllGL(mi); -} - XSCREENSAVER_MODULE_2 ("Endgame", endgame, chess) #endif