diff options
| -rw-r--r-- | progs/demos/gears.c | 35 | 
1 files changed, 24 insertions, 11 deletions
| diff --git a/progs/demos/gears.c b/progs/demos/gears.c index fc797eb904..679fac4489 100644 --- a/progs/demos/gears.c +++ b/progs/demos/gears.c @@ -26,6 +26,7 @@  static GLint T0 = 0;  static GLint Frames = 0;  static GLint autoexit = 0; +static GLint win = 0;  /** @@ -164,6 +165,15 @@ static GLint gear1, gear2, gear3;  static GLfloat angle = 0.0;  static void +cleanup(void) +{ +   glDeleteLists(gear1, 1); +   glDeleteLists(gear2, 1); +   glDeleteLists(gear3, 1); +   glutDestroyWindow(win); +} + +static void  draw(void)  {    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -198,16 +208,18 @@ draw(void)    Frames++;    { -     GLint t = glutGet(GLUT_ELAPSED_TIME); -     if (t - T0 >= 5000) { -        GLfloat seconds = (t - T0) / 1000.0; -        GLfloat fps = Frames / seconds; -        printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps); -        T0 = t; -        Frames = 0; -        if ((t >= 999.0 * autoexit) && (autoexit)) -           exit(0); -     } +    GLint t = glutGet(GLUT_ELAPSED_TIME); +    if (t - T0 >= 5000) { +      GLfloat seconds = (t - T0) / 1000.0; +      GLfloat fps = Frames / seconds; +      printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps); +      T0 = t; +      Frames = 0; +      if ((t >= 999.0 * autoexit) && (autoexit)) { +        cleanup(); +        exit(0); +      } +    }    }  } @@ -239,6 +251,7 @@ key(unsigned char k, int x, int y)      view_rotz -= 5.0;      break;    case 27:  /* Escape */ +    cleanup();      exit(0);      break;    default: @@ -352,7 +365,7 @@ int main(int argc, char *argv[])    glutInitWindowPosition(0, 0);    glutInitWindowSize(300, 300); -  glutCreateWindow("Gears"); +  win = glutCreateWindow("Gears");    init(argc, argv);    glutDisplayFunc(draw); | 
