Hello,

I am following the OpenGL Programming Guide (7th Edition) and I can't get an example to work. In the example a square should rotate after a left mouse button click. I did not copy in paste, I just followed along and wrote the code. When I run the app it works, when I click on it however, the square doesn't rotate, instead it does a tiny rotation then stops. Here is the code I used:

Code :
 
#include <stdio.h>
#include <OpenGL/OpenGL.h>
#include <GLUT/GLUT.h>
 
 
static GLfloat spin = 0.0;
 
 
void init(void){
 
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glShadeModel(GL_FLAT);
 
 
 
}
 
 
void display(void){
 
 
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
    glRotatef(spin, 0.0, 0.0, 1.0);
    glColor3f(1.0, 1.0, 1.0);
    glRectf(-25.0, -25.0, 25.0, 25.0);
    glPopMatrix();
    glutSwapBuffers();
 
 
}
 
 
void spinDisplay(void){
 
 
    spin = spin + 2.0;
    if (spin > 360.0) {
        spin = spin - 360;
        glutPostRedisplay();
    }
 
 
}
 
 
void reshape(int w, int h){
 
 
    glViewport(0, 0, (GLsizei) w, (GLsizei)h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
 
 
 
 
 
}
 
 
void mouse(int button, int state, int x, int y){
 
 
 
 
    switch (button) {
        case GLUT_LEFT_BUTTON:
            if (state == GLUT_DOWN) 
                glutIdleFunc(spinDisplay);    
 
            break;
        case GLUT_MIDDLE_BUTTON:
            if (state == GLUT_DOWN) {
                glutIdleFunc(NULL);
 
 
            break;
        default:
            break;
    }
 
 
    }
}
 
 
int main(int argc, const char * argv[])
{
 
 
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowSize(250, 250);
    glutInitWindowPosition(100, 100);
    glutCreateWindow(argv[0]);
    init();
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutMouseFunc(mouse);
    glutMainLoop();
    return 0;
    }

Does anyone know why when I click on it, the square rotates a very small amount, then stops? I am using OS X 10.8 and Xcode 4.5 if that matters.

Thanks!