glutPostRedisplay merely sets a flag, that in the next iteration of the event loop as the final operation the display callback shall be called. I.e. it doesn't take immediate action.
This is the documented behavior, see: https://www.opengl.org/documentation/specs/glut/spec3/node20.html