I have a suggestion and a question. 

 When no windows are open and/or when freeglut is not yet initialized, almost everything is illegal.  If freeglut is not yet initialized, all error messages should state that.  If an action is illegal because there is no open window, that should also be stated in the error message. 

  Now a question:  freeglut happily supports user control over when screen updates are done rather than the user having to accomplish important tasks when the display is "idle".  For real time data collection, the latter approach is backwards.  Taking it one step further, some examples of OpenGL/glut/freeglut show, rather than glutMainLoop or glutMainLoopEvent, a procedural approach roughly like this:

create window
while ()
     { display }

    This is very attractive for non-threaded RT applications but seems to extend beyond what is supported in freeglut.  For instance, destrowWindow() has no effect.  Presumably (I have not gone through the freeglut source), this is because glutMainLoop actually does the destroy. 
   Has anyone implemented a workaround for this destroyWindow() behavior?  Is there any intention to make the above procedural approach to freeglut fully functional?