X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fglx%2Ftimetunnel.c;h=106f6a64c588b98a14950530a8545cdf716ff624;hb=39809ded547bdbb08207d3e514950425215b4410;hp=89d894617c55ece1c7c2b6317c188b5a75638e0c;hpb=b81f521c5ad7022ac12db18ca8fcdd9fb063831e;p=xscreensaver diff --git a/hacks/glx/timetunnel.c b/hacks/glx/timetunnel.c index 89d89461..106f6a64 100644 --- a/hacks/glx/timetunnel.c +++ b/hacks/glx/timetunnel.c @@ -1,5 +1,5 @@ /* timetunnel. Based on dangerball.c, hack by Sean Brennan */ -/* dangerball, Copyright (c) 2001-2004 Jamie Zawinski +/* dangerball, Copyright (c) 2001-2014 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -23,7 +23,7 @@ -# define refresh_tunnel 0 +# define free_tunnel 0 # define release_tunnel 0 #undef countof #define countof(x) (sizeof((x))/sizeof((*x))) @@ -352,8 +352,15 @@ ENTRYPOINT void reshape_tunnel (ModeInfo *mi, int width, int height) { GLfloat h = (GLfloat) height / (GLfloat) width; + int y = 0; - glViewport (0, 0, (GLint) width, (GLint) height); + if (width > height * 5) { /* tiny window: show middle */ + height = width * 9/16; + y = -height/2; + h = height / (GLfloat) width; + } + + glViewport (0, y, (GLint) width, (GLint) height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); @@ -376,37 +383,10 @@ tunnel_handle_event (ModeInfo *mi, XEvent *event) { tunnel_configuration *tc = &tconf[MI_SCREEN(mi)]; - if (event->xany.type == ButtonPress && - event->xbutton.button == Button1) - { - tc->button_down_p = True; - gltrackball_start (tc->trackball, - event->xbutton.x, event->xbutton.y, - MI_WIDTH (mi), MI_HEIGHT (mi)); - return True; - } - else if (event->xany.type == ButtonRelease && - event->xbutton.button == Button1) - { - tc->button_down_p = False; - return True; - } - else if (event->xany.type == ButtonPress && - (event->xbutton.button == Button4 || - event->xbutton.button == Button5)) - { - gltrackball_mousewheel (tc->trackball, event->xbutton.button, 10, - !!event->xbutton.state); - return True; - } - else if (event->xany.type == MotionNotify && - tc->button_down_p) - { - gltrackball_track (tc->trackball, - event->xmotion.x, event->xmotion.y, - MI_WIDTH (mi), MI_HEIGHT (mi)); - return True; - } + if (gltrackball_event_handler (event, tc->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &tc->button_down_p)) + return True; return False; } @@ -904,8 +884,8 @@ static void LoadTexture(ModeInfo * mi, char **fn, const char *filename, GLuint t by = by * 2; } -#ifndef HAVE_JWZGLES if (rescale) { +#ifndef HAVE_JWZGLES tmpbuf = calloc(bx * by * 4, sizeof(unsigned char)); if (gluScaleImage(GL_RGBA, teximage->width, teximage->height, GL_UNSIGNED_BYTE, teximage->data, bx, by, GL_UNSIGNED_BYTE, tmpbuf)) @@ -915,9 +895,9 @@ static void LoadTexture(ModeInfo * mi, char **fn, const char *filename, GLuint t teximage->data = (char *) tmpbuf; teximage->width = bx; teximage->height= by; +#endif /* !HAVE_JWZGLES */ } /* end rescale code */ -#endif /* !HAVE_JWZGLES */ if (anegative ) { for (ix = 0 ; ix < teximage->height * teximage->width; ix++) @@ -1058,14 +1038,7 @@ init_tunnel (ModeInfo *mi) wire = 0; # endif - if (!tconf) { - tconf = (tunnel_configuration *) - calloc (MI_NUM_SCREENS(mi), sizeof (tunnel_configuration)); - if (!tconf) { - fprintf(stderr, "%s: out of memory\n", progname); - exit(1); - } - } + MI_INIT (mi, tconf); tc = &tconf[MI_SCREEN(mi)]; @@ -1157,7 +1130,7 @@ init_tunnel (ModeInfo *mi) glAlphaFunc(GL_GREATER, 0.5); } - tc->trackball = gltrackball_init (); + tc->trackball = gltrackball_init (True); tc->texshift = calloc(tc->num_texshifts, sizeof(GLfloat));