diff --git a/freeglut/freeglut/ChangeLog b/freeglut/freeglut/ChangeLog index c85209d..c82fb93 100644 --- a/freeglut/freeglut/ChangeLog +++ b/freeglut/freeglut/ChangeLog @@ -992,6 +992,5 @@ mouse pointers don't work) on the way: (259) Changed the "shapes" demo to the OpenGLUT "shapes" demo, which is much niftier. - - - +(260) Necessary compilation fixes for newer GCCs (e.g. 3.3.5, 4.0). + Side effect: The shapes demo has a new 'i' key now. diff --git a/freeglut/freeglut/progs/demos/shapes/shapes.c b/freeglut/freeglut/progs/demos/shapes/shapes.c index 4928260..bf7664a 100644 --- a/freeglut/freeglut/progs/demos/shapes/shapes.c +++ b/freeglut/freeglut/progs/demos/shapes/shapes.c @@ -12,6 +12,7 @@ Keys: - Esc   Quit - q Q   Quit + - i I   Show info - = +   Increase \a slices - - _   Decreate \a slices - , <   Decreate \a stacks @@ -41,7 +42,8 @@ #include #ifdef WIN32 -#include // DUMP MEMORY LEAKS +/* DUMP MEMORY LEAKS */ +#include #endif /* @@ -61,7 +63,7 @@ static double irad = .25; static double orad = 1.0; static int depth = 4; static double offset[ 3 ] = { 0, 0, 0 }; - +static GLboolean show_info = GL_TRUE; /* * These one-liners draw particular objects, fetching appropriate @@ -193,7 +195,7 @@ static void shapesPrintf (int row, int col, const char *fmt, ...) glutBitmapWidth(font, ' ') * col, - glutBitmapHeight(font) * (row+2) + viewport[3] ); - glutBitmapString (font, buf); + glutBitmapString (font, (unsigned char*)buf); glPopMatrix(); glMatrixMode(GL_MODELVIEW); @@ -226,8 +228,6 @@ static void display(void) glEnable(GL_LIGHTING); - printf ( "Shape %d slides %d stacks %d\n", function_index, slices, stacks ) ; - glColor3d(1,0,0); glPushMatrix(); @@ -247,13 +247,17 @@ static void display(void) glDisable(GL_LIGHTING); glColor3d(0.1,0.1,0.4); -/* shapesPrintf (1, 3, "Shape PgUp PgDn: %s", table [function_index].name); - shapesPrintf (2, 3, " Slices +-: %d Stacks <>: %d", slices, stacks); - shapesPrintf (3, 3, " nSides +-: %d nRings <>: %d", slices, stacks); - shapesPrintf (4, 3, " Depth (): %d", depth); - shapesPrintf (5, 3, " Outer radius Up Down : %f", orad); - shapesPrintf (6, 3, " Inner radius Left Right: %f", irad); -*/ + if( show_info ) { + shapesPrintf (1, 3, "Shape PgUp PgDn: %s", table [function_index].name); + shapesPrintf (2, 3, "Slices +-: %d Stacks <>: %d", slices, stacks); + shapesPrintf (3, 3, "nSides +-: %d nRings <>: %d", slices, stacks); + shapesPrintf (4, 3, "Depth (): %d", depth); + shapesPrintf (5, 3, "Outer radius Up Down : %f", orad); + shapesPrintf (6, 3, "Inner radius Left Right: %f", irad); + } else { + printf ( "Shape %d slides %d stacks %d\n", function_index, slices, stacks ) ; + } + glutSwapBuffers(); } @@ -267,6 +271,9 @@ key(unsigned char key, int x, int y) case 'Q': case 'q': glutLeaveMainLoop () ; break; + case 'I': + case 'i': show_info = ( show_info == GL_TRUE ) ? GL_FALSE : GL_TRUE; break; + case '=': case '+': slices++; break; @@ -376,7 +383,8 @@ main(int argc, char *argv[]) glutMainLoop(); #ifdef WIN32 - _CrtDumpMemoryLeaks () ; // DUMP MEMORY LEAK INFORMATION + /* DUMP MEMORY LEAK INFORMATION */ + _CrtDumpMemoryLeaks () ; #endif return EXIT_SUCCESS; diff --git a/freeglut/freeglut/src/freeglut_internal.h b/freeglut/freeglut/src/freeglut_internal.h index f63c1f5..06bb17e 100644 --- a/freeglut/freeglut/src/freeglut_internal.h +++ b/freeglut/freeglut/src/freeglut_internal.h @@ -385,8 +385,8 @@ typedef void (*SFG_Proc)(); #define SET_WCB(window,cbname,func) \ do \ { \ - if( FETCH_WCB( window, cbname ) != func ) \ - (((window).CallBacks[CB_ ## cbname]) = (SFG_Proc) func); \ + if( FETCH_WCB( window, cbname ) != (SFG_Proc)(func) ) \ + (((window).CallBacks[CB_ ## cbname]) = (SFG_Proc)(func)); \ } while( 0 ) /* diff --git a/freeglut/freeglut/src/freeglut_main.c b/freeglut/freeglut/src/freeglut_main.c index da5bcfe..45d4165 100644 --- a/freeglut/freeglut/src/freeglut_main.c +++ b/freeglut/freeglut/src/freeglut_main.c @@ -858,13 +858,13 @@ void FGAPIENTRY glutMainLoopEvent( void ) if( event.type == KeyPress ) { - keyboard_cb = FETCH_WCB( *window, Keyboard ); - special_cb = FETCH_WCB( *window, Special ); + keyboard_cb = (FGCBKeyboard)( FETCH_WCB( *window, Keyboard )); + special_cb = (FGCBSpecial) ( FETCH_WCB( *window, Special )); } else { - keyboard_cb = FETCH_WCB( *window, KeyboardUp ); - special_cb = FETCH_WCB( *window, SpecialUp ); + keyboard_cb = (FGCBKeyboard)( FETCH_WCB( *window, KeyboardUp )); + special_cb = (FGCBSpecial) ( FETCH_WCB( *window, SpecialUp )); } /* Is there a keyboard/special callback hooked for this window? */