Adding a Frequently Asked Questions file
[freeglut] / ChangeLog
index 6d06bf7..97db371 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,5 @@
+********** Hey Emacs, please use -*- fundamental -*- mode! **********
+
 Changes to Freeglut:
 
 Before and on October 22, 2002:
@@ -245,3 +247,970 @@ October 24, 2002:
 *******************************************************************************************
 
 (93) doc/Makefile.am:4  Removed trailing backslash and added an empty last line
+
+(94) src/freeglut_window.c  Windowing fixes from John F.
+
+
+*******************************************************************************************
+* Changes on 23 July 2003
+*******************************************************************************************
+
+(95) src/freeglut_initial.c:91  Added check for SOLARIS OS (Dave Reed)
+
+(96) src/freeglut_window.c:551  Removed extra carriage return for Windows users (John F. Fay)
+
+
+*******************************************************************************************
+* Changes on 05 August 2003
+*******************************************************************************************
+
+(97) src/freeglut_main.c:816 and :1571, set the current window (John F. Fay)
+
+(98) src/Makefile.am:34 Added mwmborder.c
+
+(99) src/freeglut_window.c:67  Removed #included "mwmborder.c"
+
+*******************************************************************************************
+* Changes on 10 August 2003
+*******************************************************************************************
+
+(100) GameMode fixes: src/freeglut_gamemode.c src/freeglut_internal.h src/freeglut_window.c
+
+  src/freeglut_gamemode.c:
+     fghRememberState():     remember original XFree86 ViewPort
+     fghRememberState():     remember original pointer position
+     fghRestoreState():      restore  original pointer position
+     fghRestoreState():      restore  original XFree86 ViewPort
+     fghChangeDisplayMode(): fix glutGameModeGet(GLUT_GAME_MODE_POSSIBLE)
+     fghChangeDisplayMode(): remove superflous attempt to change ViewPort
+     glutEnterGameMode():    move special XMoveWindow() from generic code here
+     glutEnterGameMode():    call XSync() to avoid races with XPointer calls
+     glutEnterGameMode():    call to XWarpPointer() to ensure that the pointer is grabbed
+     glutEnterGameMode():    wait until window is viewable to avoid exit on XSetInputFocus
+     glutEnterGameMode():    move decorations away to fix fullscreen w/ max resolution
+
+  src/freeglut_internal.h:
+     struct tagSFG_Display:  add fields for saving viewport and pointer position
+
+  src/freeglut_window.c:
+     fgOpenWindow():         remove obsolete special case for GameModeEnter()
+
+*******************************************************************************************
+* Changes up to September 12, 2003
+*******************************************************************************************
+
+(101) Include files:  Underscores added to the defined constants which prevent multiple inclusions
+
+(102) String functions:  Arguments changed from "char *" to "unsigned char *" for compatibility with GLUT
+
+(103) Added several explicit type casts to allow compilation with "Dev C++" compiler
+
+(104) Quite a bit of debugging of the menus in their menu windows
+
+(105) Removed "glib" dependency from joystick code; now it compiles under FreeBSD
+
+(106) Removed the "fgCleanUpGlutsMess" function because it was redundant
+
+
+*******************************************************************************************
+* Changes on September 13, 2003
+*******************************************************************************************
+
+(107) Repaired DOS line endings in the MSVC project and workspace files
+
+(108) Fixed some relative paths in the MSVC demo project files
+
+(109) Fixed all the demo makefiles to ensure they compiled properly; included minor changes to some of the sources.
+
+(110) Fixed compiliation of freeglut_joystick.c on FreeBSD
+
+*******************************************************************************************
+* Changes through September 24, 2003
+*******************************************************************************************
+
+(111) Fixed busy-wait bug in freeglut; now sleeps when there's nothing to do.
+
+(112) GLUT_SINGLE properly supported.
+
+(113) progs/demos/Fractals_random works.
+
+*******************************************************************************************
+* Freeglut 2.0.0 Released on  September 29, 2003!
+*******************************************************************************************
+
+*******************************************************************************************
+* Changes on October 1, 2003
+*******************************************************************************************
+
+(114) Support for more than 3 mouse-buttons (this allows 3+scroll-wheel to
+workin X, for example).
+
+(115) Added 3rd party patch to make joystick code work on NetBSD (untested)
+and on older versions of FreeBSD (also untested)
+
+*******************************************************************************************
+* Changes on October 3, 2003
+*******************************************************************************************
+
+(116) Tweaking for the menu behavior on Linux regarding mice, etc. - John Fay
+
+*******************************************************************************************
+* Changes on October 6, 2003
+*******************************************************************************************
+
+(117) freeglut_menu.c:328 Fix submenu triangle (John Fay)
+
+*******************************************************************************************
+* Changes on October 8, 2003
+*******************************************************************************************
+
+(118) freeglut_menu.c:217,519,532: Fix menus to stay in the window (John Fay)
+
+(119) Fixed menu callbacks to set the current window.
+
+(120) Numerous GLUT-alikeness corrections made to the menus (UNIX_X11
+freeglut menus now look more like old UNIX/X11 GLUT menus).  Placement
+and highlighting of menus is greatly improved as well, and (at least
+at compile-time) it is now easy to change fonts and colors for menus.
+
+(121) Fixed CreateNotify on X11 to act like ConfigureNotify.  This
+helps subwindows in freeglut behave more like top-level windows.  (In
+old GLUT, they behaved essentially the same, so we try to reproduce
+that here.)
+
+*******************************************************************************************
+* Changes on October 9, 2003
+*******************************************************************************************
+
+(122) Minor glutInit*() quibbles in some of the demos.  Also applied a
+change from John so that the affine-transform demos would work even if
+they couldn't find their default set of transforms or the one named on
+the command-line (a simpler one than even the default is built in).
+
+*******************************************************************************************
+* Changes on October 11, 2003
+*******************************************************************************************
+
+(123) Disallow people to pass NULL in for glutDisplayFunc().
+
+(124) More menu fixes from John.
+
+(125) Check the memory allocation of timers.
+
+(126) Some code style/readability issues.
+
+*******************************************************************************************
+* Changes on October 11, 2003
+*******************************************************************************************
+
+(127) Fleshed out all missing cursor types on NetBSD (UNIX_X11) for the
+glutSetCursor() call.  GLUT_CURSOR_NONE still required work.  Fixes
+included: Adding numerous types required by GLUT but previously missing
+in freeglut, reversing the left/right glyphs, and some just-plain-wrong
+glyphs corrected.
+
+*******************************************************************************************
+* Changes on October 13, 2003
+*******************************************************************************************
+
+(128) Removed obsolete hack (or ill-conceived dream) of fgDisplayCursor().
+
+(129) Modified the the fractal demos so that they don't clear/redraw quite
+so often.
+
+(129) Code readability/style issues.
+
+*******************************************************************************************
+* Changes on October 14, 2003
+*******************************************************************************************
+
+(130) More style issues.
+
+*******************************************************************************************
+* Freeglut 2.0.1 Released on 23 October, 2003!
+*******************************************************************************************
+
+*******************************************************************************************
+* Changes on October 26, 2003
+*******************************************************************************************
+
+(131) Made freeglut know the program's name (fetch from main()'s argv[0]).
+
+(132) Moved idle callback out of glutMainLoopEvent().
+
+(133) Committed Nigel's fix to make the joystick set the current window before
+invoking the callback.  (Completes the closeout of an open bug report,
+once verified.)
+
+(134) Added some error-checking of memory allocations.
+
+(135) More style issues.
+
+*******************************************************************************************
+* Changes on October 27, 2003
+*******************************************************************************************
+
+(136) Partially unified the UNIX_X11 and WIN32 branches of glutMainLoopEvent()
+
+(137) Updated comments, other style issues.  Check for some NULL pointers.
+
+*******************************************************************************************
+* Changes on October 28, 2003
+*******************************************************************************************
+
+(138) More style issues.
+
+(139) Mouse-wheel support added for WIN32.  API extension generally
+added to freeglut.
+
+*******************************************************************************************
+* Changes on October 29, 2003
+*******************************************************************************************
+
+(140) Fixed a bug in fgWarning()/fgError().  Added range-check to
+glutSetKeyRepeat().
+
+(141) More style issues.
+
+(142) Removed bogus references to "Linux" in freeglut_state.c.
+The references should have properly been to UNIX and/or X11.  GNU/LINUX
+emulates UNIX, and X11 is the windowing system that runs on most graphics-
+capable UNIX systems (including most GNU/LINUX systems).  freeglut should
+run on any sufficiently UNIX-like system with OpenGL and X11 (or at least
+XFree86's implementation of X11).
+
+(143) #include <sys/param.h> on the BSDs so that we can check the system
+version number at compile-time.
+
+*******************************************************************************************
+* Changes on October 30, 2003
+*******************************************************************************************
+
+(144) Numerous small fixes w.r.t. mouse-wheels on WIN32.
+
+(145) More style issues.
+
+*******************************************************************************************
+* Changes on October 31, 2003
+*******************************************************************************************
+
+(146) More style issues.
+
+(147) Converted an error-check from an assert() to an if().
+
+(148) Removal of the last ASCII TAB character from src/* files.  This
+conversion process ensures that the formatting appears more consistant
+for everyone.  (TABs can vary in their expansion from one system to
+another).
+
+*******************************************************************************************
+* Changes on November 3, 2003
+*******************************************************************************************
+
+(149) X11 mousewheel fixes.
+
+(150) Yet more style issues.
+
+(151) Added a case for {MapNotify} events in X11.
+
+(152) Re-(?)deleted 3 files from CVS, per John's request.  These were
+obsolete: freeglut13.dsp, freeglutdll.dsp, freeglutstatic.dsw
+
+(153) Marked a few pointer/int conversion warnings.  (I think that they
+only manifest for me on my AMD64 system, but they seem fairly harmless
+so I didn't try to fix them.)
+
+(154) Memory-leak fix from John.
+
+*******************************************************************************************
+* Changes on Novembber 4, 2003
+*******************************************************************************************
+
+(155) More style issues.
+
+(156) Removed G_LOG_DOMAIN junk, per mailing list discussion.
+
+(157) Added memory-leak detection support (WIN32) to a couple of the
+demos, and fixed at least one memory leak in the process.  Also
+converted Fractals_random to double-precision to avoid some compiler
+warnings.
+
+(158) Stripped CRs from fractals_random.c.
+
+(159) Fixed two bugs: Execution state was improperly set in the end
+of glutMainLoop(), and {ButtonPress} (an X11 constant) was used where
+the flag-variable {pressed} (in UNIX_X11 branch of glutMainLoop())
+should have been used.
+
+(160) Pointer-check before deallocation in the menu code.
+
+*******************************************************************************************
+* Changes on November 5, 2003
+*******************************************************************************************
+
+Remember, remember,
+the 5th of November.
+Gunpowder, treason and plot!   (Bacon?)
+
+I see no reason
+why gunpowder treason
+should ever be forgot.         (Shakespeare?)
+
+*******************************************************************************************
+* Changes on November 6, 2003
+*******************************************************************************************
+
+(161) Fractals_random demo now includes mouse support---including mouse-
+wheel.
+
+(162) Yet more fixes to the mouse wheel support in WIN32.
+
+(163) Converted freeglut to use an array to store window callbacks,
+rather than a struct.  This lets us loop over the array to fill it with
+NULL pointers in order to clear the callbacks.  (With a struct, we were
+reduced to either a ton of assignments---easy to miss one!---or memset(),
+which technically is not a legal way to fill a region with NULL pointers
+because the bit-pattern of a NULL pointer is not necessarily defined to
+be all-zero bits.)  This change also on the one hand provides macros
+to simplify most proper use of the callbacks (even simpler than with
+the struct form), while also making it irritating enough to bypass the
+macros that (it is hoped) abuse will be harder.  (E.g., the invocation
+macros set the current-window.  At least two bugs in the past occurred
+because callbacks were not setting the current window before invoking the
+client.)  See 
+https://sourceforge.net/mailarchive/message.php?msg_id=6467923 for more
+details.
+
+(164) Yet more style issues.  (You thought I'd forgotten about that?)
+
+*******************************************************************************************
+* Changes on November 7, 2003
+*******************************************************************************************
+
+(165) Mouse-wheel corrections in X11.
+
+(166) Style corrections.
+
+(167) Fixed GLUT_CURSOR_NONE support at long last in NetBSD.  (Should also
+apply to other X11 based systems, but I can only test NetBSD.)  Also
+deallocated some resources that glutSetCursor() was allocating in the
+X server.
+
+(168) Added {ReparentNotify} (event type 21) case to glutMainLoop().
+
+(169) Clear window callbacks during window destruction.
+
+(170) Implement visible/invisible support for WIN32.  (Partial?  No
+callback added at this time.)
+
+*******************************************************************************************
+* Changes on November 8, 2003
+*******************************************************************************************
+
+(171) Altered the way that {random} was chosen in the fractals_random.c
+program, in order to attempt to gain a longer cycle before repeating.
+
+(172) More style issues.
+
+*******************************************************************************************
+* Changes on November 9, 2003
+*******************************************************************************************
+
+(173) Added some error-checking to the glutSetCursor() code on my
+NetBSD (UNIX_X11) system.
+
+*******************************************************************************************
+* Changes on November 10, 2003
+*******************************************************************************************
+
+(174) Reversed the Fractals_random changes; they were bogus since they
+assumed that there were always exactly 4 affine transforms to choose
+from (which is certainly not guaranteed!).  Back to just shifting by
+10 bits and going modulo the number of transforms.
+
+*******************************************************************************************
+* Changes on November 11, 2003
+*******************************************************************************************
+
+(175) Retroactively updated the ChangeLog file for all of the commits by
+myself (rkrolib; a.k.a. Richard Rauch) (at least as visible via on the
+SourceForge "CVS message board"), summarzing changes for the sake of those
+who lack both web-browser and CVS access.  Also fixed a numbering error in
+the log where there were two "(110)" events.  (Plus added (174) from
+November 10th by memory.)
+
+(176) Style cleanup to the "one" demo.  (Removal of CRs, TABs, mostly.)
+
+(177) Changed the "one" demo to do glutInit*() calls before glutInit(),
+proper.  This allows command-line parameters to override built-in
+behavior.
+
+(178) Complete purge of all remaining TABs from freeglut's *.[ch] files.
+Also verified that (as far as I can tell) all CRs are removed from all
+files where they do not belong.
+       
+*******************************************************************************************
+* Freeglut 2.2.0 RC 1 Released on  December 10, 2003!
+*******************************************************************************************
+
+(179) CallbackMaker.dsp, demos.dsw, shapes.dsp all updated and are
+packaged with distributions
+
+(180) Fix for the window sizes on Win32 (Nigel Stewart)
+
+(181) Disable/enable lighting in the "one.c" demo (John Fay)
+
+*******************************************************************************************
+* Freeglut 2.2.0 RC 2 Released on  December 11, 2003!
+*******************************************************************************************
+
+*******************************************************************************************
+* Freeglut 2.2.0 Released on  December 12, 2003!
+*******************************************************************************************
+
+
+***************************************************************************
+* Changes on February 5, 2004.
+***************************************************************************
+
+(182) With permission from Steve Baker, John Fay imported the latest joystick
+code from PLIB into freeglut.  This is expected to provide better support
+joysticks such as USB joysticks.  However, it is largely untested beyond
+compiling, and likely will require some debugging.
+
+       
+***************************************************************************
+* Changes on February 7, 2004.
+***************************************************************************
+
+(183) Richard Rauch added experimental support for a new feature:
+GLUT_OFFSCREEN as a rendering mode (as proposed by Nigel Stewart).
+The intent is that you specify GLUT_OFFSCREEN as a GLUT display mode,
+and then open a "window" much as you would a regular top-level window.
+Only UNIX_X11 is supprted at this point, for lack of knowledge.
+
+*********************************
+* March 8, 2004.
+*********************************
+
+(184) Made the include path for "freeglut.h" global (in "<>") rather
+than local (in quotes).
+
+*********************************
+* March 14, 2004.
+*********************************
+
+(185) Stripped out tab characters and end-of-line whitespace.
+
+*********************************
+* Ides of March, 2004.
+*********************************
+
+(186) Per demands of project owner, offscreen rendering is now removed
+from freeglut.
+
+(187) Added support for Windows CE.
+
+*********************************
+* March 17, 2004.
+*********************************
+
+(188) Fixed an array-bounds error in X11 key-repeat detection
+
+*********************************
+* May 12, 2004.
+*********************************
+
+(189) Fixed a bug in direct/indirect rendering context and generally made
+it rational.
+
+(190) Created "GLUT_XLIB_IMPLEMENTATION" defined constant
+
+(191) Removed a false deprecation message of "glutSetKeyRepeat" function
+
+(192) Implemented the upper-end ASCII characters and allowed for rotation
+of bitmapped text.
+
+(193) Removed some obsolete defined constants.
+
+(194) Fixed a bug in the "behaviour on window close" code.
+
+(195) Added some comments about Windows window events.
+
+(196) Implemented the GLUT teapot in Windows CE.
+
+*********************************
+* June 29, 2004.
+*********************************
+
+(197) Gave menu windows the name "freeglut menu" instead of NULL
+
+*********************************
+* August 4, 2004.
+*********************************
+
+(198) Fixed a bug in "glutBitmapString" so that it handles end-of-line
+characters correctly.
+
+*********************************
+* August 5, 2004.
+*********************************
+
+(199) Suppressed warnings about indirect rendering contexts for BSD per
+request from Richard Rauch.
+
+*********************************
+* August 11, 2004.
+*********************************
+
+(200) Fixed a very nasty game mode bug that was causing crashes with the
+screen in a changed (low) resolution.
+
+*********************************
+* September 10, 2004.
+*********************************
+
+(201) Modified the joystick initialization so that it only happens if the
+application defines a joystick callback.
+
+(202) Changed many three-line comments to single-line comments.
+
+*********************************
+* September 13, 2004.
+*********************************
+
+(203) Removed redundant end-of-line characters from error and warning
+messages.
+
+(204) Renamed "fgGetCursorError" and made it and some other functions static.
+
+(205) Added a warning message to game mode get function.
+
+*********************************
+* September 15, 2004.
+*********************************
+
+(206) Fixed a bug in the command line argument compaction code.
+
+*********************************
+* September 23, 2004.
+*********************************
+
+(207) Changed "fgError" calls in the font routines to "fgWarning" so that
+execution can continue even if text does not get printed.
+
+(208) Made the geometry functions more robust in case the application calls
+them with bad inputs (like zero layers in a cone).
+
+(209) Unified the tetrahedron and Sierpinski sponge code.
+
+(210) Made the Key Repeat default behaviour consistent between initialization
+and reinitialization.
+
+(211) Removed duplicate nested parentheses.
+
+(212) Changed some "window by handle" internal functions to receive the window
+pointer instead of looking up the window pointer right away.
+
+(213) Removed some redundant window resize code.
+
+*********************************
+* October 5, 2004.
+*********************************
+
+(214) Added British spellings to the display mode string processing.
+
+(215) Modified the mouse behaviour in Windows to match the X11 behaviour.  It's
+not perfect but it is much improved.  The question of multiple button presses
+at once remains.
+
+*********************************
+* October 6, 2004.
+*********************************
+
+(216) Moved the joystick initialization code to one function.
+
+(217) Added some functions to get joystick parameters (number of buttons, axes).
+It is not clear whether these should go into the API or not.
+
+*********************************
+* December 17, 2004.
+*********************************
+
+(218) Changed the "freeglut_assert_window" to "fgError" and had it print out
+the name of the function whose call created the error condition.
+
+(219) Changed the "freeglut_assert_ready" to "fgError" when it is invoked in
+an API function and had it print out the name of the function whose call
+created the error condition.  Removed some other "freeglut_assert_ready"
+invocations from functions which are only called from other functions which
+already check for initialization.
+
+***************************************************************************
+* Changes on December 31, 2004.
+***************************************************************************
+
+(220) Fixed bug #1079530 (glutGetProcAddress and geometric objects).
+
+(221) Fixed bug #1087642 (glutDeviceGet(GLUT_DEVICE_KEY_REPEAT)
+unimplemented).
+
+(222) Fixed bug #1045054 (KeyReleaseMask typo).
+
+(223) Fixed bug #1040435 (glutBitmapString() bug).
+
+(224) Fixed first bug of #1064195 (two things when using signals):
+Don't issue a warning about select when a non-blocked signal was
+caught. This makes sense and is more compatible with GLUT.
+
+***************************************************************************
+* Changes on January 1, 2005.
+***************************************************************************
+
+(225) Added eMbedded Visual Tools project/workspace files to
+distribution.
+
+(226) Renamed "configure.in" to the officially preferred
+"configure.ac".
+
+(227) Make "gcc -Wall -pedantic -Werror" happy.
+
+(228) Modernized configure.ac a bit and added a rule to Makefile.am to
+update libtool. Note that all gcc compiler warnings are now on by
+default.
+
+(229) Added missing files from "src" subdirectory to dist.
+
+***************************************************************************
+* Changes on January 3, 2005.
+***************************************************************************
+
+(230) Removed acconfig.h, it is deprecated and we don't need it.
+
+(231) Cleaned up and autoconf'd the header inclusion story a bit.
+
+(232) Improved error message a bit when no suitable visual could be found
+(X11 only).
+
+(233) Fixed part of bug #926883 (Video mode matching code, memory leaks,
+fullscreen), i.e. memory leak caused by not freeing the mode lines returned
+by XF86VidModeGetAllModeLines
+
+(234) Fixed part of bug #926883 (Video mode matching code, memory leaks,
+fullscreen): Now we first try to get an exact mode match, ignoring the
+refresh rate if none could be found. This way the X11 part and the WinDoze
+behave similarly. NOTE: We still don't behave like GLUT, because it has a
+wider notion of "best" match. We have to refactor and extend freeglut quite
+a bit to do that.
+
+(235) Fixed part of bug #926883 (Video mode matching code, memory leaks,
+fullscreen), i.e. issue warnings when XF86VidModeFOO fails.
+
+(236) Reworked the X11 part of glutSetCursor, fixing bug #764187 (Variable
+mouse pointers don't work) on the way:
+   * Use slightly more compatible cursor shapes for GLUT_CURSOR_RIGHT_ARROW
+     and GLUT_CURSOR_LEFT_ARROW.
+   * Refactored and fixed the erroneous code for GLUT_CURSOR_NONE.
+   * Removed the incorrect use of XFreeCursor and use a cache of cursors
+     instead. Cursors are never freed now, we could do this e.g. via
+     reference countig if this is really needed.
+   * Fixed error handling.
+   * Unknown cursor types are an error now.
+   * Now the window state always corresponds to the wanted cursorID, even in
+     the case of GLUT_CURSOR_FULL_CROSSHAIR.
+
+**************************************************************************
+* Changes between January 3 and April 15, 2005.
+**************************************************************************
+(237) Moved the "#include "config.h"" statement to the header file
+
+(238) Changed the "assert" checks to more dignified statements that print
+      useful error messages before exiting.  Also added initialization
+      checking to all GLUT interface functions.
+
+(239) Changed some menu code around to remove duplicate code.
+
+(240) Implemented the ability to attach a menu to multiple windows.
+
+(241) Implemented the "GLUT_AUXn" color buffers for X11 and Windows
+
+(242) Improved the cursor handling marginally; also removed some duplicate
+      cursor code
+
+**************************************************************************
+* Changes on April 15, 2005.
+**************************************************************************
+(243) Changed some comments in "freeglut_internal.h" as a test for the new
+      pCVSc project.
+
+(244) Changed the names of the "fgStructure.Window" and ".Menu" variables
+      to ".CurrentWindow" and ".CurrentMenu" to make maintenance easier.
+
+(245) Tried implementing Yuri D'Elia's game mode changes.
+
+**************************************************************************
+* Changes in late April 2005
+**************************************************************************
+(246) Added French version of README (called LISEZ-MOI") and a Windows-specific
+      version of README describing how to operate under MSVC
+
+(247) Changed definitions of "FETCH_WCB" and "INVOKE_WCB" to allow compilation
+      with GCC 4.0
+
+(248) Changed the Makefile path to the "include" directory to allow for
+      off-directory compilation
+
+(249) Added some initializations and changed a hard-coded number of mouse
+      buttons to a defined constant
+
+(250) Added code to the Windows timing to allow for millisecond granularity
+      in the execution time
+
+(251) Fixed a reported bug in the fullscreen mode
+
+(252) Added window exit event handling to the Windows code; also put in a note
+      about adding window entry event handling
+
+**************************************************************************
+* Changes in early May 2005 -- in the run-up to 2.4.0
+**************************************************************************
+(253) Added handling for negative position specifications for subwindows
+
+(254) Made the display string handling in "freeglut_init.c" ever so slightly
+      more general
+
+(255) Changed the key repeat flag initialization from "GL_TRUE" to
+      "GLUT_KEY_REPEAT_ON" to make it consistent with its use elsewhere.
+
+(256) Removed the unused joystick function "fghJoystickParseElement"
+
+(257) Added a comment to "glutCreateWindow" about why "freeglut" does not
+      match GLUT when "glutInit" is not called.
+
+(258) Removed an unused "Pixmap" variable
+
+(259) Changed the "shapes" demo to the OpenGLUT "shapes" demo, which is much
+      niftier.
+
+(260) Necessary compilation fixes for newer GCCs (e.g. 3.3.5, 4.0).
+      Side effect: The shapes demo has a new 'i' key now.
+
+(261) Fixed a cuboctahedron vertex, implemented wire mode for that shape.
+
+**************************************************************************
+* 8 May 2005 -- 2.4.0 Release Candidate 1 Released
+**************************************************************************
+(262) Fixed the "vfprintf" for Windows so that error messages get printed
+      out again
+
+(263) Implemented Takeshi Nishimura's menu fixes.  Menus should work now.
+
+**************************************************************************
+* 15 May 2005 -- 2.4.0 Release Candidate 2 Released
+**************************************************************************
+
+(264) More game mode fixes
+
+**************************************************************************
+* 19 May 2005 -- 2.4.0 Release Candidate 3 Released
+**************************************************************************
+
+(265) Lowering minimum autoconf version required.
+
+(266) Guarantee consistency of names/addresses in glutGetProcAddress by
+using a macro. In addition, this avoids any non-constant initializer
+issues which might be raised when using WinDoze GCCs. The additional code
+overhead is negligible, at least for x86 (a few instructions per name).
+
+(267) When switching to game mode under X11, no ConfigureNotify event
+will happen and consequently no reshape callback will ever be called via
+the normal mechanism. To fix this, note that the game mode window needs
+to be resized and handle this before redraw.
+
+(268) The original glutEnterGameMode() returns the window id of the game
+mode window, not TRUE/FALSE, we should better follow that. Note that most
+man pages claim that this function returns void, but this is definitely
+wrong.
+
+(269) Dan Torop's patch to fix joystick polling times (resolves bug 1206856)
+
+**************************************************************************
+* 25 May 2005 -- 2.4.0 Release Candidate 4 Released
+**************************************************************************
+
+(270) Takeshi Nishimura's changes to make the Windows mouse wheel/button mapping match that of X11; also fixing a typo in the associated mouse callback argument list.
+
+**************************************************************************
+* 2 Jun 2005 -- 2.4.0 Release Candidate 5 Released
+**************************************************************************
+
+**************************************************************************
+* 9 Jun 2005 -- 2.4.0 Released
+**************************************************************************
+
+**************************************************************************
+* Changes in late June 2005
+**************************************************************************
+
+(271) Added an RPM spec file based on the one shipped with SuSE 9.3.
+
+(272) Implemented Joe Krahn's "Input Devices" code--at the moment, a dial
+box.
+
+(273) Fixed a bug in the Sierpinski sponge code that caused the application
+to crash if it called the code with a negative number of levels
+
+(274) Added separate static and DLL versions of all the demonstration
+programs under Windows.
+
+(275) Added --enable-debug configure flag. Currently it only turns on X11
+event tracing, but in the future we could add more.
+
+(276) Cleaned up CreateNotify/ConfigureNotify handling.
+
+(277) When a window is iconified, only an UnmapNotify is sent, not a
+VisibilityNotify, so we have to handle the window status callback in the
+former case, too. This fixes bug #763442 (Call the visibility callback when
+minimizing a window).
+
+**************************************************************************
+* Changes on July 1, 2005.
+**************************************************************************
+
+(278) Removed redundant files from EXTRA_DIST.
+
+(279) MinGW is lacking a prototype for ChangeDisplaySettingsEx, so
+supply one in this case. Note that this should better be handled via
+autoconf than via cpp.
+
+(280) Silenced a signed/unsigned mismatched via a cast.
+
+(281) Some steps toward compilation under MinGW. Note that there are still
+linking troubles for the examples.
+
+(282) Remove wrong "execute" bits when creating a distribution. This
+fixes bug #961938 (Executable bit set on non exe files).
+
+(283) Partial fixes for bug #1218900 (freeglut-2.4.0 on FreeBSD).
+
+(284) Handle modifiers in MotionNotify events, too. This fixes bug
+#1227920 (glutGetModifiers not set/allowed in mouse callbacks). In
+addition, some related cleanup has been done.
+
+(285) X11 only: Free XVisualInfo structures when they are not needed
+anymore, fixing a space leak. Not perfect for menus yet...
+
+(286) X11 only: Destroy the global menu rendering context when
+deinitializing. The visual/context handling for menus is still rather
+obscure, though...
+
+(287) Removed redundant code.
+
+(288) We only have pending redisplay callbacks when the window wants to be
+redisplayed *and* it is visible. Otherwise we won't redraw, anyway, and
+immediately discover that there's still something to do, etc. etc., leading
+to 100% CPU load.
+
+(289) Made a few global arrays "static", avoiding namespace pollution. The
+only externally visible symbols should either be from the GLUT API
+("glutXXX") or internal freeglut entities ("fgYYY"). Reformatted things a
+bit on the way.
+
+(290) Made all the "glutJoystickXXX" functions part of the freeglut
+extensions.
+
+(291) Solaris doesn't have cfmakeraw, but it is only a convenience function
+for some bit-fiddling, anyway.
+
+(292) Avoid gcc warnings for some joystick code (e.g. on Solaris).
+
+(293) Improve autoconf magic: To detect headers like GL/gl.h, it might be
+necessary to temporarily use the X11 flags found by AC_PATH_XTRA.
+
+(294) Fixed the GLUT_CURSOR_INHERIT logic once again...
+
+(295) Synched the DLL definitions with reality.
+
+**************************************************************************
+* Changes on August 31, 2005.
+**************************************************************************
+
+(296) Added support for Open Watcom
+
+**************************************************************************
+* Changes on September 4, 2005.
+**************************************************************************
+
+(297) Silenced autogen.sh. *nix commands are silent by default.
+
+(298) Use -Wall for automake to catch some buglets, deprecated
+stuff, etc.
+
+(299) Use target-specific *_CPPFLAGS, not the deprecated INCLUDES.
+
+**************************************************************************
+* Changes on October 6, 2005.
+**************************************************************************
+
+(300) Implemented Stereo in Windows.
+
+(301) Allowed compilation of Windows version by removing DLL decorations
+from deprecated joystick interface extensions.
+
+**************************************************************************
+* Changes on October 12, 2005.
+**************************************************************************
+
+(302) Simply use autoreconf in autogen.sh, it is much simpler and the
+recommended way in the autotools documentation. Removed INSTALL,
+install-sh and mkinstalldirs, they are either unused or automatically
+generated by autogen.sh.
+
+(303) Moved GLUT_INIT_STATE to <GL/freeglut_ext.h>, it is not part of the
+original GLUT.
+
+**************************************************************************
+* Changes on August 05, 2006.
+**************************************************************************
+
+(304) Updated build requirements for SuSE 10.1.
+
+(305) Check fgets for return value to avoid warnings.
+
+**************************************************************************
+* Changes on September 20, 2006
+**************************************************************************
+
+(306)  Changed "fgStructure.GameMode" to "fgStructure.GameModeWindow" to
+reflect better what it is
+
+**************************************************************************
+* Changes on September 21, 2006
+**************************************************************************
+
+(307)  Added an end-of-line character to a warning message about an unknown
+X event type
+
+(308)  Fixing a problem in which "glutGetWindow" would return a menu's window
+instead of the menu's parent window
+
+(309)  Added some handy comments, spacing, fixed a typo in a comment
+
+(310)  Changed "TARGET_HOST_UNIX_X11" to "TARGET_HOST_POSIX_X11" to avoid
+trademark issues, per Joe Krahn; also rationalized the other "TARGET_HOST"
+definitions
+
+(311)  Added futher callback functionality to the CallbackMaker demo program.
+Also added a prompt for user input to highlight a difference betwen GLUT
+and "freeglut"
+
+(312)  Added multisampling support for *nix and Windows; some other pixel
+format changes for Windows
+
+(313)  Added Markus Henschel's change (e-mail to developers' list, June 28,
+2006) to have the "glutInitDisplayString" ignore numerical assignments to
+tokens as a temporary fix.
+
+(314)  Fixed buy #1398196 in the bug tracker to the effect that passing the
+wrong argument in "fghSleepForEvents" can cause odd delays
+