X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fglx%2Flockward.c;h=404a49fd561389842e3a1da2f132dffb1b165b34;hp=60d684d10878afce7602bc92774411c83e04060c;hb=4361b69d3178d7fc98d0388f9a223af6c2651aba;hpb=d6b0217f2417bd19187f0ebc389d6c5c2233b11c diff --git a/hacks/glx/lockward.c b/hacks/glx/lockward.c index 60d684d1..404a49fd 100644 --- a/hacks/glx/lockward.c +++ b/hacks/glx/lockward.c @@ -40,6 +40,7 @@ "*showFPS: False \n" #define refresh_lockward 0 +#define release_lockward 0 #define NUMOF(x) (sizeof ((x)) / sizeof ((*x))) @@ -136,7 +137,7 @@ typedef struct lockward_context { /*************************************************************************** * Prototypes. */ -static void free_lockward (lockward_context *ctx); +static void free_lockward (ModeInfo *mi); /*************************************************************************** @@ -203,8 +204,12 @@ ENTRYPOINT ModeSpecOpt lockward_opts = { ENTRYPOINT void reshape_lockward (ModeInfo *mi, int width, int height) { + lockward_context *ctx = &g_ctx[MI_SCREEN (mi)]; GLfloat h = (GLfloat) height / (GLfloat) width; + glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), + *(ctx->glx_context)); + glViewport (0, 0, (GLint) width, (GLint) height); glMatrixMode (GL_PROJECTION); @@ -827,15 +832,7 @@ init_lockward (ModeInfo *mi) lockward_context *ctx; int i, n; - if (!g_ctx) { - g_ctx = (lockward_context *) calloc (MI_NUM_SCREENS (mi), - sizeof (lockward_context)); - if (!g_ctx) { - fprintf (stderr, "%s: can't allocate context.\n", - progname); - exit (1); - } - } + MI_INIT (mi, g_ctx, free_lockward); ctx = &g_ctx[MI_SCREEN (mi)]; ctx->glx_context = init_GL (mi); @@ -928,10 +925,17 @@ init_lockward (ModeInfo *mi) } static void -free_lockward (lockward_context *ctx) +free_lockward (ModeInfo *mi) { + lockward_context *ctx = &g_ctx[MI_SCREEN (mi)]; int i; + if (!ctx->glx_context) + return; + + glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), + *(ctx->glx_context)); + if (ctx->blink.noise) free (ctx->blink.noise); if (glIsList (ctx->rings)) @@ -951,25 +955,6 @@ free_lockward (lockward_context *ctx) } } -ENTRYPOINT void -release_lockward (ModeInfo *mi) -{ - int i; - - if (!g_ctx) - return; - - for (i = MI_NUM_SCREENS (mi); --i >= 0; ) { - if (g_ctx[i].glx_context) - glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), - *(g_ctx[i].glx_context)); - free_lockward (&g_ctx[i]); - } - - FreeAllGL (mi); - free (g_ctx); g_ctx = NULL; -} - XSCREENSAVER_MODULE ("Lockward", lockward)