+ /*
+ * XXX Other than clearing the Redisplay flag or not,
+ * XXX we may as well rely on the INVOK_WCB() doing this
+ * XXX pointer-check.
+ * XXX
+ * XXX If we do not invoke the display because the pointer
+ * XXX is not defined (should never happen, really), then
+ * XXX we may enter an infinite busy-loop trying to update
+ * XXX the window. Similarly, if we skip because the window
+ * XXX is not visible. However, if the window becomes visible
+ * XXX at a later time, the window should get its callback
+ * XXX invoked. I would recommend removing the first check,
+ * XXX and making the second check only affect whether the
+ * XXX callback is invoked---but always clear the flag, if
+ * XXX the {window} pointer is defined.
+ */
+ freeglut_return_if_fail( FETCH_WCB( *window, Display ) );
+ freeglut_return_if_fail( window->State.Visible );
+
+ window->State.Redisplay = GL_FALSE;
+ INVOKE_WCB( *window, Display, ( ) );