X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fglx%2Fprovidence.c;h=2d49bb4a956b635b8fb58de7b1b3b9751a8177a2;hb=4361b69d3178d7fc98d0388f9a223af6c2651aba;hp=fcf8d316f540206ab8ed51cd1d07a1f09ba4e418;hpb=d1ae2829ff0fd2a96c16a0c8c5420efaa47d7b30;p=xscreensaver diff --git a/hacks/glx/providence.c b/hacks/glx/providence.c index fcf8d316..2d49bb4a 100644 --- a/hacks/glx/providence.c +++ b/hacks/glx/providence.c @@ -20,6 +20,7 @@ "*wireframe: False \n" # define refresh_providence 0 +# define release_providence 0 #include "xlockmore.h" #else #include "xlock.h" @@ -53,7 +54,7 @@ ENTRYPOINT ModeSpecOpt providence_opts = { #ifdef USE_MODULES ModStruct providence_description = { "providence", "init_providence", "draw_providence", - "release_providence", "draw_providence", "change_providence", + (char *) NULL, "draw_providence", "change_providence", (char *) NULL, &providence_opts, 1000, 1, 1, 1, 4, 1.0, "", "draws pyramid with glory", 0, NULL }; @@ -625,18 +626,6 @@ static void pinit(providencestruct *mp) glEndList(); } -/* cleanup routine */ -ENTRYPOINT void release_providence(ModeInfo * mi) -{ - - if(providence) { - free((void *) providence); - providence = (providencestruct *) NULL; - } - - FreeAllGL(mi); -} - /* event handling */ ENTRYPOINT Bool providence_handle_event(ModeInfo *mi, XEvent *event) { @@ -671,11 +660,7 @@ ENTRYPOINT void init_providence(ModeInfo *mi) { providencestruct *mp; - if(!providence) { - if((providence = (providencestruct *) - calloc(MI_NUM_SCREENS(mi), sizeof (providencestruct))) == NULL) - return; - } + MI_INIT(mi, providence, NULL); mp = &providence[MI_SCREEN(mi)]; mp->trackball = gltrackball_init (False); @@ -767,6 +752,15 @@ ENTRYPOINT void draw_providence(ModeInfo * mi) gltrackball_rotate(mp->trackball); glRotatef(mp->theta * 180.0 / Pi, 0.0, -1.0, 0.0); +# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ + { + GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + int o = (int) current_device_rotation(); + if (o != 0 && o != 180 && o != -180) + glScalef (1/h, 1/h, 1/h); + } +# endif + /* draw providence */ draw_providence_strip(mi); glPopMatrix();