X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fglx%2Frubik.c;h=104fbe0040e4e06c17f0c00199a9e160540c8c26;hb=df053bcb240bd8d82e3bebf48a9766a8728bca4b;hp=136142d57ce4f33e85344a9cf87893ecf37c7f6d;hpb=5b7bc6e70fb439cf4c4bf771ae9f94077fe4fe08;p=xscreensaver diff --git a/hacks/glx/rubik.c b/hacks/glx/rubik.c index 136142d5..104fbe00 100644 --- a/hacks/glx/rubik.c +++ b/hacks/glx/rubik.c @@ -2,7 +2,7 @@ /* rubik --- Shows a auto-solving Rubik's cube */ #if !defined( lint ) && !defined( SABER ) -static const char sccsid[] = "@(#)rubik.c 4.04 97/07/28 xlockmore"; +static const char sccsid[] = "@(#)rubik.c 4.07 97/11/24 xlockmore"; #endif @@ -158,7 +158,16 @@ static OptionStruct desc[] = }; ModeSpecOpt rubik_opts = -{2, opts, 1, vars, desc}; +{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc}; + +#ifdef USE_MODULES +ModStruct rubik_description = +{"rubik", "init_rubik", "draw_rubik", "release_rubik", + "draw_rubik", "change_rubik", NULL, &rubik_opts, + 1000, -30, 5, -6, 4, 1.0, "", + "Shows an auto-solving Rubik's Cube", 0, NULL}; + +#endif #define VectMul(X1,Y1,Z1,X2,Y2,Z2) (Y1)*(Z2)-(Z1)*(Y2),(Z1)*(X2)-(X1)*(Z2),(X1)*(Y2)-(Y1)*(X2) #define sqr(A) ((A)*(A)) @@ -372,7 +381,7 @@ typedef struct { RubikLoc *rowLoc[MAXORIENT]; RubikMove movement; GLfloat rotatestep; - GLXContext glx_context; + GLXContext *glx_context; int AreObjectsDefined[1]; } rubikstruct; @@ -481,7 +490,7 @@ draw_cubit(ModeInfo * mi, int back, int front, int left, int right, int bottom, int top) { rubikstruct *rp = &rubik[MI_SCREEN(mi)]; - int mono = MI_WIN_IS_MONO(mi); + int mono = MI_IS_MONO(mi); if (!rp->AreObjectsDefined[ObjCubit]) { glNewList(objects + ObjCubit, GL_COMPILE_AND_EXECUTE); @@ -709,7 +718,6 @@ draw_cubit(ModeInfo * mi, glVertex3f(-0.35, 0.51, -0.40); glEnd(); } - glEnd(); } @@ -1550,7 +1558,7 @@ shuffle(ModeInfo * mi) (void) fprintf(stderr, "Could not allocate memory for rubik row position info\n"); } - rp->storedmoves = MI_BATCHCOUNT(mi); + rp->storedmoves = MI_COUNT(mi); if (rp->storedmoves < 0) { if (rp->moves != NULL) (void) free((void *) rp->moves); @@ -1666,9 +1674,11 @@ init_rubik(ModeInfo * mi) if ((rp->glx_context = init_GL(mi)) != NULL) { - reshape(mi, MI_WIN_WIDTH(mi), MI_WIN_HEIGHT(mi)); + reshape(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); objects = glGenLists(1); pinit(mi); + } else { + MI_CLEARWINDOW(mi); } } @@ -1683,7 +1693,7 @@ draw_rubik(ModeInfo * mi) return; glDrawBuffer(GL_BACK); - glXMakeCurrent(display, window, rp->glx_context); + glXMakeCurrent(display, window, *(rp->glx_context)); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -1691,7 +1701,7 @@ draw_rubik(ModeInfo * mi) glTranslatef(0.0, 0.0, -10.0); - if (!MI_WIN_IS_ICONIC(mi)) { + if (!MI_IS_ICONIC(mi)) { glScalef(Scale4Window * rp->WindH / rp->WindW, Scale4Window, Scale4Window); } else { glScalef(Scale4Iconic * rp->WindH / rp->WindW, Scale4Iconic, Scale4Iconic); @@ -1796,7 +1806,7 @@ release_rubik(ModeInfo * mi) (void) free((void *) rubik); rubik = NULL; } - FreeAllGL(MI_DISPLAY(mi)); + FreeAllGL(mi); } #endif