Added --enable-debug configure flag. Currently it only turns on X11 event
[freeglut] / ChangeLog
1 ********** Hey Emacs, please use -*- fundamental -*- mode! **********
2
3 Changes to Freeglut:
4
5 Before and on October 22, 2002:
6
7 (1) Many trivial changes (changing floating-point numbers to integers, for example) to reduce the number of compiler warnings
8
9 (2) Removing "strlen" calls from for-loop headers to make things execute ever-so-slightly faster
10
11 (3) Slight changes to the "glutSolidSphere" and "glutWireSphere" functions to reduce the number of calls to the sine and cosine functions and otherwise make it slightly more efficient
12
13 (4) Added wire and solid torus, wire and solid dodecahedron, wire and solid octahedron, wire and solid tetrahedron, and wire and solid icosahedron
14
15 (5) Fixed a bug by which the GLUT menu now draws even when nothing else is happening in the window
16
17 (6) Fixed a bug by which freeglut now tracks which window text is being entered into
18
19 (7) Added code to adjust for the thickness of the window borders and header bar when resizing and repositioning a window
20
21 October 23, 2002:
22
23 (8) Added a window destroy callback for freeglut to call the application when a window is closed.  Made freeglut call "exit" if there is no window destroy callback.
24
25 October 24, 2002:
26
27 (8b)  Also started working on the code to implement the other behaviors when the user clicks on the "x" on the window header bar.
28
29 (9) Added the "glutSetOption" function, the "GLUT_ACTION_ON_WINDOW_CLOSE" enumeration, and its allowed values
30
31 (10) Added code to check whether a window is a subwindow in the reposition and reshape functions.  If it is a subwindow, do not adjust the position and size for the window border.
32
33 (11) Added code to fix the drawing of subwindows inside of windows.  The Windows implementation uses "GetWindowRect" which uses coordinates relative to the screen corner, not the parent window corner.
34
35 (12) Modified the code to open a window so that the freeglut window now matches the GLUT window.
36
37 (13) Added an ugly hack to the main loop function to call each window's visibility callback before jumping into the main loop.  This fixes the behaviour of several of the demo programs.
38
39
40
41 *******************************************************************************************
42 * Sent a copy of the files to Steve Baker 10/24/02.
43 *******************************************************************************************
44
45 (14) Reworked the "freeglut_font.c" file pretty thoroughly to speed things up a bit, to add the "glutStrokeString" function, and to make the "glutStrokeLength" function return an accurate value for long strings.  Also allowed the string functions to handle character strings containing carriage returns.
46
47 (15) Moved the "fgState" structure initialization in "freeglut_init.c" out of "fgInitialize" to set them at compile time.  Also added it to "fgDeinitialize" to reset the state.
48
49 (16) Recoded a bit in "glutInit" to speed things up slightly
50
51 (17) Added "#pragma warning ( once: 4305 )" directives to the stroke font files so that I don't get 4000 compiler warnings about assigning double precision constants to single precision variables
52
53 (18) Added a state enumeration (initializing, running, stopping) and flag to the "fgState" structure.  Modified the window closure and main loop code to use the enumeration instead of local variables.
54
55 (19) Fixed the "glutPositionWindow" so that if you get and retrieve the window position twenty times in a row the window won't slide down the screen.
56
57 (20) Recoded the "glut*Cone" functions so that they have normals on the curved surface and so that the "base" argument is really the radius of the base of the cone.
58
59 (21) Added code to render a rhombic dodecahedron in the geometry library.
60
61 (22) Started work on a "glutInitDisplayString" function.  I have provided a framework; I will need some serious help in interpreting the results.
62
63 (23) Modified the "fgDisplayMenu" so that the matrix mode is GL_MODELVIEW instead of GL_PROJECTION when execution returns to its calling function.  I have no idea why, but this fixes some display problems in some of the demos.  Part (or all) of the display was blanking out when the user brought up a menu.
64
65 (24) Added four "pragma comment" lines to "freeglut.h" so that freeglut will automatically (under Windows) include "winmm.lib", "opengl32.lib", "glu32.lib", and "freeglut.lib".  This way the application doesn't have to do this by hand.
66
67 (25) Fixed the window positioning code so that if the border is going to extend above the top of the screen, it gets set to the top of the screen.
68
69 (26) Added right-arrows to menu entries which have submenus.  Also modified the submenu position so that it comes down to the right or to the left of the parent menu.
70
71 (27) Recoded a good bit of the menu processing to make the menus behave more like GLUT menus.
72
73 *******************************************************************************************
74 * Sent a copy of the files to Steve Baker 10/31/02.  Also posted these on the reflector.
75 *******************************************************************************************
76
77 (28) Added parentheses to the Windows version of setting the "State.Modifiers" to allow for precedence of operators.  Also modified the code so that it follows the "getKeyState" return value specification.
78
79 (29) Made the window event handler check for the existence of a window for all messages except the "create" message
80
81 (30) Changed the order of events in the window closure function so that the window would still be in the windows structure when the closure message to Windows was sent.
82
83 (31) Made some more changes to the window closure code so that it works from both clicking on the "x" and from a "glutDestroyWindow" call
84
85 *******************************************************************************************
86 * Sent a copy of the files to Steve Baker 10/31/02 as an update.  Also posted these on the reflector.
87 *******************************************************************************************
88
89 (32) Added "glutLeaveMainLoop" function.
90
91 (33) Added "glutMainLoopEvent" function.  This processes a single iteration through the "glutMainLoop" and is (theoretically) usable for re-entrant GLUT code.
92
93 (34) Implemented the "WM_KEYUP" and "WM_SPECIALKEYUP" callbacks in the Windows version.
94
95 (35) Added normals to the "glutWireCube" function
96
97 (36) Recoded "glutGetExtension" to remove a <Steve, cover your eyes> "goto" statement </Steve, cover your eyes> from the code.
98
99 (37) Marked the "glutSetKeyRepeat" function as deprecated.
100
101 (38) Implemented most of the Windows version of the "fghGetConfig" function.
102
103 *******************************************************************************************
104 * Took up the project again November 19.
105 *******************************************************************************************
106
107 (39) Added two missing characters to each of the bitmapped fonts.
108
109 (40) Added "glutSierpinskiSponge" to the geometry file.  I can take it out if people object.
110
111 (41) Added a linked list of windows to close so that if you destroy a window from within its callback the program won't terminate on error.
112
113 (42) Added a call to "free" in the joystick code so we wouldn't have a memory leak.  Also fixed another memory leak.
114
115 (43) Fixed the bitmapped Helvetica 12 and Helvetica 18 fonts so they now match the GLUT fonts.
116
117 *******************************************************************************************
118 * Sent the files to Don Heyse on November 27 for inclusion in CVS.
119 *******************************************************************************************
120
121 (44) Fixed the other bitmapped fonts so they now match the GLUT fonts.  There are some differences in the placement of the bit patterns within the characters, but the greatest difference is only a pixel or two.
122
123 (45) Added DLL capability.  Changed the names of the outputs so that the static library is "freeglut_static.lib" and the names of the DLL file and its interface file are "freeglut.dll" and "freeglut.lib".
124
125 (46) Moved the "freeglut_internal.h" file from the public include directory to the private source code directory.
126
127 (47) Split the "freeglut.h" file into a "glut.h" file that is compatible with GLUT and a "freeglut_ext.h" file that contains the new extensions.
128
129 *******************************************************************************************
130 * Changes starting in May 2003
131 *******************************************************************************************
132
133 (48) Changed "freeglut_main.c" to allow the Windows version to pass the mouse position to the keystroke callbacks
134
135 (49) Changed "freeglut_main.c" in the Unix section to move the call to find the event's window to before the "switch" statement.
136
137 (50) Changed "freeglut_main.c" in the Unix section to modify the window closure sequence of events slightly.
138
139 (51) Changed "freeglut_state.c" so the "glutGet" calls with window position and size don't move the windows down and to the right one pixel.
140
141 (52) Implement single-buffered rendering (or its emulation) in Windows.
142
143 (53) Implement Eero Pajarre's "GLUT_ICON" code.
144
145 (54) Fixes for the window positioning problem.
146
147 (55) Fixed a couple of compiler warnings and other bugs. Changed "freeglut_main.c" to remove a compiler warning. Changed "freeglut_structure.c" to set the current window before calling the window closure callback.
148
149
150 *******************************************************************************************
151 * Changes on 17-19 June 2003
152 *******************************************************************************************
153
154 (56) Added glutGetProcAddress()
155
156 (57) Added GLUT_FPS env var.
157
158 (58) Implemented Aleksandar Donev's user data changes:  added user data fields to window and menu structures and implemented functions to get and set them
159
160 (59) Added a "MenuDestroy" callback which sets a function that "freeglut" calls when a menu is destroyed.
161
162
163
164 *******************************************************************************************
165 * Changes on 20 June 2003
166 *******************************************************************************************
167
168 (60) Added autogen.sh (#30 from todo.txt)
169
170 (70) Updated aclocal.m4 with aclocal 1.7.3 (was created with aclocal 1.5)
171
172 (71) Changed all references to the 'freeglut-1.3' directory to 'src', copied 'freeglut-1.3' to 'src' and added all files to the repository (TODO #34).
173
174
175 *******************************************************************************************
176 * Changes on 24 June 2003
177 *******************************************************************************************
178
179 (80) Fixed autogen.sh and removed aclocal.m4
180
181 (81) Added 'freeglut.kdevelop' (Gideon [Kdevelop 3.0]) project file
182
183
184 *******************************************************************************************
185 * Changes on 24 June 2003
186 *******************************************************************************************
187
188 (82) Added 'freeglut_ext.c' to the project files 'freeglut.dsp' and 'freeglut_static.dsp' (New list #10)
189
190
191 *******************************************************************************************
192 * Changes on 27 June 2003
193 *******************************************************************************************
194
195 (83) Now installs freeglut_ext.h and glut.h to /usr/include/GL (was missing before)
196
197
198 *******************************************************************************************
199 * Changes on 01 July 2003
200 *******************************************************************************************
201
202 (84) Fixed the 'ptr + len' problem in freeglut_misc.c:90
203
204
205 *******************************************************************************************
206 * Changes on 02 July 2003
207 *******************************************************************************************
208
209 (85) Removed genfonts/genstrokes code, updated configure.in and Makefile.in
210
211 (86) Moved tests/one.c into progs/demos/One/one.c, updated configure.in and Makefile.in
212
213 (87) Removed tests directory
214
215
216 *******************************************************************************************
217 * Changes on 03 July 2003
218 *******************************************************************************************
219
220 (88) Removed unused char *ptr from freeglut_misc.c
221
222 *******************************************************************************************
223 * Changes on 17 July 2003
224 *******************************************************************************************
225
226 (89) Changed the overlay (freeglut_state.c:662) to return FALSE, as it's not implemented yet.
227
228 (90) Applied John F. Fay's fixes to freeglut.dsp and freeglut_static.dsp
229
230
231 *******************************************************************************************
232 * Changes on 21 July 2003
233 *******************************************************************************************
234
235 (91) src/Makefile.am:38  Changed versioning to 11:0:8 thanks to Bernhard Kaindl
236
237
238 *******************************************************************************************
239 * Changes on 22 July 2003
240 *******************************************************************************************
241
242 (92) freeglut.lsm:3  Removed 'beta' label for next release, thanks to Bernhard Kaindl.
243
244
245 *******************************************************************************************
246 * Changes on 23 July 2003
247 *******************************************************************************************
248
249 (93) doc/Makefile.am:4  Removed trailing backslash and added an empty last line
250
251 (94) src/freeglut_window.c  Windowing fixes from John F.
252
253
254 *******************************************************************************************
255 * Changes on 23 July 2003
256 *******************************************************************************************
257
258 (95) src/freeglut_initial.c:91  Added check for SOLARIS OS (Dave Reed)
259
260 (96) src/freeglut_window.c:551  Removed extra carriage return for Windows users (John F. Fay)
261
262
263 *******************************************************************************************
264 * Changes on 05 August 2003
265 *******************************************************************************************
266
267 (97) src/freeglut_main.c:816 and :1571, set the current window (John F. Fay)
268
269 (98) src/Makefile.am:34 Added mwmborder.c
270
271 (99) src/freeglut_window.c:67  Removed #included "mwmborder.c"
272
273 *******************************************************************************************
274 * Changes on 10 August 2003
275 *******************************************************************************************
276
277 (100) GameMode fixes: src/freeglut_gamemode.c src/freeglut_internal.h src/freeglut_window.c
278
279   src/freeglut_gamemode.c:
280      fghRememberState():     remember original XFree86 ViewPort
281      fghRememberState():     remember original pointer position
282      fghRestoreState():      restore  original pointer position
283      fghRestoreState():      restore  original XFree86 ViewPort
284      fghChangeDisplayMode(): fix glutGameModeGet(GLUT_GAME_MODE_POSSIBLE)
285      fghChangeDisplayMode(): remove superflous attempt to change ViewPort
286      glutEnterGameMode():    move special XMoveWindow() from generic code here
287      glutEnterGameMode():    call XSync() to avoid races with XPointer calls
288      glutEnterGameMode():    call to XWarpPointer() to ensure that the pointer is grabbed
289      glutEnterGameMode():    wait until window is viewable to avoid exit on XSetInputFocus
290      glutEnterGameMode():    move decorations away to fix fullscreen w/ max resolution
291
292   src/freeglut_internal.h:
293      struct tagSFG_Display:  add fields for saving viewport and pointer position
294
295   src/freeglut_window.c:
296      fgOpenWindow():         remove obsolete special case for GameModeEnter()
297
298 *******************************************************************************************
299 * Changes up to September 12, 2003
300 *******************************************************************************************
301
302 (101) Include files:  Underscores added to the defined constants which prevent multiple inclusions
303
304 (102) String functions:  Arguments changed from "char *" to "unsigned char *" for compatibility with GLUT
305
306 (103) Added several explicit type casts to allow compilation with "Dev C++" compiler
307
308 (104) Quite a bit of debugging of the menus in their menu windows
309
310 (105) Removed "glib" dependency from joystick code; now it compiles under FreeBSD
311
312 (106) Removed the "fgCleanUpGlutsMess" function because it was redundant
313
314
315 *******************************************************************************************
316 * Changes on September 13, 2003
317 *******************************************************************************************
318
319 (107) Repaired DOS line endings in the MSVC project and workspace files
320
321 (108) Fixed some relative paths in the MSVC demo project files
322
323 (109) Fixed all the demo makefiles to ensure they compiled properly; included minor changes to some of the sources.
324
325 (110) Fixed compiliation of freeglut_joystick.c on FreeBSD
326
327 *******************************************************************************************
328 * Changes through September 24, 2003
329 *******************************************************************************************
330
331 (111) Fixed busy-wait bug in freeglut; now sleeps when there's nothing to do.
332
333 (112) GLUT_SINGLE properly supported.
334
335 (113) progs/demos/Fractals_random works.
336
337 *******************************************************************************************
338 * Freeglut 2.0.0 Released on  September 29, 2003!
339 *******************************************************************************************
340
341 *******************************************************************************************
342 * Changes on October 1, 2003
343 *******************************************************************************************
344
345 (114) Support for more than 3 mouse-buttons (this allows 3+scroll-wheel to
346 workin X, for example).
347
348 (115) Added 3rd party patch to make joystick code work on NetBSD (untested)
349 and on older versions of FreeBSD (also untested)
350
351 *******************************************************************************************
352 * Changes on October 3, 2003
353 *******************************************************************************************
354
355 (116) Tweaking for the menu behavior on Linux regarding mice, etc. - John Fay
356
357 *******************************************************************************************
358 * Changes on October 6, 2003
359 *******************************************************************************************
360
361 (117) freeglut_menu.c:328 Fix submenu triangle (John Fay)
362
363 *******************************************************************************************
364 * Changes on October 8, 2003
365 *******************************************************************************************
366
367 (118) freeglut_menu.c:217,519,532: Fix menus to stay in the window (John Fay)
368
369 (119) Fixed menu callbacks to set the current window.
370
371 (120) Numerous GLUT-alikeness corrections made to the menus (UNIX_X11
372 freeglut menus now look more like old UNIX/X11 GLUT menus).  Placement
373 and highlighting of menus is greatly improved as well, and (at least
374 at compile-time) it is now easy to change fonts and colors for menus.
375
376 (121) Fixed CreateNotify on X11 to act like ConfigureNotify.  This
377 helps subwindows in freeglut behave more like top-level windows.  (In
378 old GLUT, they behaved essentially the same, so we try to reproduce
379 that here.)
380
381 *******************************************************************************************
382 * Changes on October 9, 2003
383 *******************************************************************************************
384
385 (122) Minor glutInit*() quibbles in some of the demos.  Also applied a
386 change from John so that the affine-transform demos would work even if
387 they couldn't find their default set of transforms or the one named on
388 the command-line (a simpler one than even the default is built in).
389
390 *******************************************************************************************
391 * Changes on October 11, 2003
392 *******************************************************************************************
393
394 (123) Disallow people to pass NULL in for glutDisplayFunc().
395
396 (124) More menu fixes from John.
397
398 (125) Check the memory allocation of timers.
399
400 (126) Some code style/readability issues.
401
402 *******************************************************************************************
403 * Changes on October 11, 2003
404 *******************************************************************************************
405
406 (127) Fleshed out all missing cursor types on NetBSD (UNIX_X11) for the
407 glutSetCursor() call.  GLUT_CURSOR_NONE still required work.  Fixes
408 included: Adding numerous types required by GLUT but previously missing
409 in freeglut, reversing the left/right glyphs, and some just-plain-wrong
410 glyphs corrected.
411
412 *******************************************************************************************
413 * Changes on October 13, 2003
414 *******************************************************************************************
415
416 (128) Removed obsolete hack (or ill-conceived dream) of fgDisplayCursor().
417
418 (129) Modified the the fractal demos so that they don't clear/redraw quite
419 so often.
420
421 (129) Code readability/style issues.
422
423 *******************************************************************************************
424 * Changes on October 14, 2003
425 *******************************************************************************************
426
427 (130) More style issues.
428
429 *******************************************************************************************
430 * Freeglut 2.0.1 Released on 23 October, 2003!
431 *******************************************************************************************
432
433 *******************************************************************************************
434 * Changes on October 26, 2003
435 *******************************************************************************************
436
437 (131) Made freeglut know the program's name (fetch from main()'s argv[0]).
438
439 (132) Moved idle callback out of glutMainLoopEvent().
440
441 (133) Committed Nigel's fix to make the joystick set the current window before
442 invoking the callback.  (Completes the closeout of an open bug report,
443 once verified.)
444
445 (134) Added some error-checking of memory allocations.
446
447 (135) More style issues.
448
449 *******************************************************************************************
450 * Changes on October 27, 2003
451 *******************************************************************************************
452
453 (136) Partially unified the UNIX_X11 and WIN32 branches of glutMainLoopEvent()
454
455 (137) Updated comments, other style issues.  Check for some NULL pointers.
456
457 *******************************************************************************************
458 * Changes on October 28, 2003
459 *******************************************************************************************
460
461 (138) More style issues.
462
463 (139) Mouse-wheel support added for WIN32.  API extension generally
464 added to freeglut.
465
466 *******************************************************************************************
467 * Changes on October 29, 2003
468 *******************************************************************************************
469
470 (140) Fixed a bug in fgWarning()/fgError().  Added range-check to
471 glutSetKeyRepeat().
472
473 (141) More style issues.
474
475 (142) Removed bogus references to "Linux" in freeglut_state.c.
476 The references should have properly been to UNIX and/or X11.  GNU/LINUX
477 emulates UNIX, and X11 is the windowing system that runs on most graphics-
478 capable UNIX systems (including most GNU/LINUX systems).  freeglut should
479 run on any sufficiently UNIX-like system with OpenGL and X11 (or at least
480 XFree86's implementation of X11).
481
482 (143) #include <sys/param.h> on the BSDs so that we can check the system
483 version number at compile-time.
484
485 *******************************************************************************************
486 * Changes on October 30, 2003
487 *******************************************************************************************
488
489 (144) Numerous small fixes w.r.t. mouse-wheels on WIN32.
490
491 (145) More style issues.
492
493 *******************************************************************************************
494 * Changes on October 31, 2003
495 *******************************************************************************************
496
497 (146) More style issues.
498
499 (147) Converted an error-check from an assert() to an if().
500
501 (148) Removal of the last ASCII TAB character from src/* files.  This
502 conversion process ensures that the formatting appears more consistant
503 for everyone.  (TABs can vary in their expansion from one system to
504 another).
505
506 *******************************************************************************************
507 * Changes on November 3, 2003
508 *******************************************************************************************
509
510 (149) X11 mousewheel fixes.
511
512 (150) Yet more style issues.
513
514 (151) Added a case for {MapNotify} events in X11.
515
516 (152) Re-(?)deleted 3 files from CVS, per John's request.  These were
517 obsolete: freeglut13.dsp, freeglutdll.dsp, freeglutstatic.dsw
518
519 (153) Marked a few pointer/int conversion warnings.  (I think that they
520 only manifest for me on my AMD64 system, but they seem fairly harmless
521 so I didn't try to fix them.)
522
523 (154) Memory-leak fix from John.
524
525 *******************************************************************************************
526 * Changes on Novembber 4, 2003
527 *******************************************************************************************
528
529 (155) More style issues.
530
531 (156) Removed G_LOG_DOMAIN junk, per mailing list discussion.
532
533 (157) Added memory-leak detection support (WIN32) to a couple of the
534 demos, and fixed at least one memory leak in the process.  Also
535 converted Fractals_random to double-precision to avoid some compiler
536 warnings.
537
538 (158) Stripped CRs from fractals_random.c.
539
540 (159) Fixed two bugs: Execution state was improperly set in the end
541 of glutMainLoop(), and {ButtonPress} (an X11 constant) was used where
542 the flag-variable {pressed} (in UNIX_X11 branch of glutMainLoop())
543 should have been used.
544
545 (160) Pointer-check before deallocation in the menu code.
546
547 *******************************************************************************************
548 * Changes on November 5, 2003
549 *******************************************************************************************
550
551 Remember, remember,
552 the 5th of November.
553 Gunpowder, treason and plot!   (Bacon?)
554
555 I see no reason
556 why gunpowder treason
557 should ever be forgot.         (Shakespeare?)
558
559 *******************************************************************************************
560 * Changes on November 6, 2003
561 *******************************************************************************************
562
563 (161) Fractals_random demo now includes mouse support---including mouse-
564 wheel.
565
566 (162) Yet more fixes to the mouse wheel support in WIN32.
567
568 (163) Converted freeglut to use an array to store window callbacks,
569 rather than a struct.  This lets us loop over the array to fill it with
570 NULL pointers in order to clear the callbacks.  (With a struct, we were
571 reduced to either a ton of assignments---easy to miss one!---or memset(),
572 which technically is not a legal way to fill a region with NULL pointers
573 because the bit-pattern of a NULL pointer is not necessarily defined to
574 be all-zero bits.)  This change also on the one hand provides macros
575 to simplify most proper use of the callbacks (even simpler than with
576 the struct form), while also making it irritating enough to bypass the
577 macros that (it is hoped) abuse will be harder.  (E.g., the invocation
578 macros set the current-window.  At least two bugs in the past occurred
579 because callbacks were not setting the current window before invoking the
580 client.)  See 
581 https://sourceforge.net/mailarchive/message.php?msg_id=6467923 for more
582 details.
583
584 (164) Yet more style issues.  (You thought I'd forgotten about that?)
585
586 *******************************************************************************************
587 * Changes on November 7, 2003
588 *******************************************************************************************
589
590 (165) Mouse-wheel corrections in X11.
591
592 (166) Style corrections.
593
594 (167) Fixed GLUT_CURSOR_NONE support at long last in NetBSD.  (Should also
595 apply to other X11 based systems, but I can only test NetBSD.)  Also
596 deallocated some resources that glutSetCursor() was allocating in the
597 X server.
598
599 (168) Added {ReparentNotify} (event type 21) case to glutMainLoop().
600
601 (169) Clear window callbacks during window destruction.
602
603 (170) Implement visible/invisible support for WIN32.  (Partial?  No
604 callback added at this time.)
605
606 *******************************************************************************************
607 * Changes on November 8, 2003
608 *******************************************************************************************
609
610 (171) Altered the way that {random} was chosen in the fractals_random.c
611 program, in order to attempt to gain a longer cycle before repeating.
612
613 (172) More style issues.
614
615 *******************************************************************************************
616 * Changes on November 9, 2003
617 *******************************************************************************************
618
619 (173) Added some error-checking to the glutSetCursor() code on my
620 NetBSD (UNIX_X11) system.
621
622 *******************************************************************************************
623 * Changes on November 10, 2003
624 *******************************************************************************************
625
626 (174) Reversed the Fractals_random changes; they were bogus since they
627 assumed that there were always exactly 4 affine transforms to choose
628 from (which is certainly not guaranteed!).  Back to just shifting by
629 10 bits and going modulo the number of transforms.
630
631 *******************************************************************************************
632 * Changes on November 11, 2003
633 *******************************************************************************************
634
635 (175) Retroactively updated the ChangeLog file for all of the commits by
636 myself (rkrolib; a.k.a. Richard Rauch) (at least as visible via on the
637 SourceForge "CVS message board"), summarzing changes for the sake of those
638 who lack both web-browser and CVS access.  Also fixed a numbering error in
639 the log where there were two "(110)" events.  (Plus added (174) from
640 November 10th by memory.)
641
642 (176) Style cleanup to the "one" demo.  (Removal of CRs, TABs, mostly.)
643
644 (177) Changed the "one" demo to do glutInit*() calls before glutInit(),
645 proper.  This allows command-line parameters to override built-in
646 behavior.
647
648 (178) Complete purge of all remaining TABs from freeglut's *.[ch] files.
649 Also verified that (as far as I can tell) all CRs are removed from all
650 files where they do not belong.
651         
652 *******************************************************************************************
653 * Freeglut 2.2.0 RC 1 Released on  December 10, 2003!
654 *******************************************************************************************
655
656 (179) CallbackMaker.dsp, demos.dsw, shapes.dsp all updated and are
657 packaged with distributions
658
659 (180) Fix for the window sizes on Win32 (Nigel Stewart)
660
661 (181) Disable/enable lighting in the "one.c" demo (John Fay)
662
663 *******************************************************************************************
664 * Freeglut 2.2.0 RC 2 Released on  December 11, 2003!
665 *******************************************************************************************
666
667 *******************************************************************************************
668 * Freeglut 2.2.0 Released on  December 12, 2003!
669 *******************************************************************************************
670
671
672 ***************************************************************************
673 * Changes on February 5, 2004.
674 ***************************************************************************
675
676 (182) With permission from Steve Baker, John Fay imported the latest joystick
677 code from PLIB into freeglut.  This is expected to provide better support
678 joysticks such as USB joysticks.  However, it is largely untested beyond
679 compiling, and likely will require some debugging.
680
681         
682 ***************************************************************************
683 * Changes on February 7, 2004.
684 ***************************************************************************
685
686 (183) Richard Rauch added experimental support for a new feature:
687 GLUT_OFFSCREEN as a rendering mode (as proposed by Nigel Stewart).
688 The intent is that you specify GLUT_OFFSCREEN as a GLUT display mode,
689 and then open a "window" much as you would a regular top-level window.
690 Only UNIX_X11 is supprted at this point, for lack of knowledge.
691
692 *********************************
693 * March 8, 2004.
694 *********************************
695
696 (184) Made the include path for "freeglut.h" global (in "<>") rather
697 than local (in quotes).
698
699 *********************************
700 * March 14, 2004.
701 *********************************
702
703 (185) Stripped out tab characters and end-of-line whitespace.
704
705 *********************************
706 * Ides of March, 2004.
707 *********************************
708
709 (186) Per demands of project owner, offscreen rendering is now removed
710 from freeglut.
711
712 (187) Added support for Windows CE.
713
714 *********************************
715 * March 17, 2004.
716 *********************************
717
718 (188) Fixed an array-bounds error in X11 key-repeat detection
719
720 *********************************
721 * May 12, 2004.
722 *********************************
723
724 (189) Fixed a bug in direct/indirect rendering context and generally made
725 it rational.
726
727 (190) Created "GLUT_XLIB_IMPLEMENTATION" defined constant
728
729 (191) Removed a false deprecation message of "glutSetKeyRepeat" function
730
731 (192) Implemented the upper-end ASCII characters and allowed for rotation
732 of bitmapped text.
733
734 (193) Removed some obsolete defined constants.
735
736 (194) Fixed a bug in the "behaviour on window close" code.
737
738 (195) Added some comments about Windows window events.
739
740 (196) Implemented the GLUT teapot in Windows CE.
741
742 *********************************
743 * June 29, 2004.
744 *********************************
745
746 (197) Gave menu windows the name "freeglut menu" instead of NULL
747
748 *********************************
749 * August 4, 2004.
750 *********************************
751
752 (198) Fixed a bug in "glutBitmapString" so that it handles end-of-line
753 characters correctly.
754
755 *********************************
756 * August 5, 2004.
757 *********************************
758
759 (199) Suppressed warnings about indirect rendering contexts for BSD per
760 request from Richard Rauch.
761
762 *********************************
763 * August 11, 2004.
764 *********************************
765
766 (200) Fixed a very nasty game mode bug that was causing crashes with the
767 screen in a changed (low) resolution.
768
769 *********************************
770 * September 10, 2004.
771 *********************************
772
773 (201) Modified the joystick initialization so that it only happens if the
774 application defines a joystick callback.
775
776 (202) Changed many three-line comments to single-line comments.
777
778 *********************************
779 * September 13, 2004.
780 *********************************
781
782 (203) Removed redundant end-of-line characters from error and warning
783 messages.
784
785 (204) Renamed "fgGetCursorError" and made it and some other functions static.
786
787 (205) Added a warning message to game mode get function.
788
789 *********************************
790 * September 15, 2004.
791 *********************************
792
793 (206) Fixed a bug in the command line argument compaction code.
794
795 *********************************
796 * September 23, 2004.
797 *********************************
798
799 (207) Changed "fgError" calls in the font routines to "fgWarning" so that
800 execution can continue even if text does not get printed.
801
802 (208) Made the geometry functions more robust in case the application calls
803 them with bad inputs (like zero layers in a cone).
804
805 (209) Unified the tetrahedron and Sierpinski sponge code.
806
807 (210) Made the Key Repeat default behaviour consistent between initialization
808 and reinitialization.
809
810 (211) Removed duplicate nested parentheses.
811
812 (212) Changed some "window by handle" internal functions to receive the window
813 pointer instead of looking up the window pointer right away.
814
815 (213) Removed some redundant window resize code.
816
817 *********************************
818 * October 5, 2004.
819 *********************************
820
821 (214) Added British spellings to the display mode string processing.
822
823 (215) Modified the mouse behaviour in Windows to match the X11 behaviour.  It's
824 not perfect but it is much improved.  The question of multiple button presses
825 at once remains.
826
827 *********************************
828 * October 6, 2004.
829 *********************************
830
831 (216) Moved the joystick initialization code to one function.
832
833 (217) Added some functions to get joystick parameters (number of buttons, axes).
834 It is not clear whether these should go into the API or not.
835
836 *********************************
837 * December 17, 2004.
838 *********************************
839
840 (218) Changed the "freeglut_assert_window" to "fgError" and had it print out
841 the name of the function whose call created the error condition.
842
843 (219) Changed the "freeglut_assert_ready" to "fgError" when it is invoked in
844 an API function and had it print out the name of the function whose call
845 created the error condition.  Removed some other "freeglut_assert_ready"
846 invocations from functions which are only called from other functions which
847 already check for initialization.
848
849 ***************************************************************************
850 * Changes on December 31, 2004.
851 ***************************************************************************
852
853 (220) Fixed bug #1079530 (glutGetProcAddress and geometric objects).
854
855 (221) Fixed bug #1087642 (glutDeviceGet(GLUT_DEVICE_KEY_REPEAT)
856 unimplemented).
857
858 (222) Fixed bug #1045054 (KeyReleaseMask typo).
859
860 (223) Fixed bug #1040435 (glutBitmapString() bug).
861
862 (224) Fixed first bug of #1064195 (two things when using signals):
863 Don't issue a warning about select when a non-blocked signal was
864 caught. This makes sense and is more compatible with GLUT.
865
866 ***************************************************************************
867 * Changes on January 1, 2005.
868 ***************************************************************************
869
870 (225) Added eMbedded Visual Tools project/workspace files to
871 distribution.
872
873 (226) Renamed "configure.in" to the officially preferred
874 "configure.ac".
875
876 (227) Make "gcc -Wall -pedantic -Werror" happy.
877
878 (228) Modernized configure.ac a bit and added a rule to Makefile.am to
879 update libtool. Note that all gcc compiler warnings are now on by
880 default.
881
882 (229) Added missing files from "src" subdirectory to dist.
883
884 ***************************************************************************
885 * Changes on January 3, 2005.
886 ***************************************************************************
887
888 (230) Removed acconfig.h, it is deprecated and we don't need it.
889
890 (231) Cleaned up and autoconf'd the header inclusion story a bit.
891
892 (232) Improved error message a bit when no suitable visual could be found
893 (X11 only).
894
895 (233) Fixed part of bug #926883 (Video mode matching code, memory leaks,
896 fullscreen), i.e. memory leak caused by not freeing the mode lines returned
897 by XF86VidModeGetAllModeLines
898
899 (234) Fixed part of bug #926883 (Video mode matching code, memory leaks,
900 fullscreen): Now we first try to get an exact mode match, ignoring the
901 refresh rate if none could be found. This way the X11 part and the WinDoze
902 behave similarly. NOTE: We still don't behave like GLUT, because it has a
903 wider notion of "best" match. We have to refactor and extend freeglut quite
904 a bit to do that.
905
906 (235) Fixed part of bug #926883 (Video mode matching code, memory leaks,
907 fullscreen), i.e. issue warnings when XF86VidModeFOO fails.
908
909 (236) Reworked the X11 part of glutSetCursor, fixing bug #764187 (Variable
910 mouse pointers don't work) on the way:
911    * Use slightly more compatible cursor shapes for GLUT_CURSOR_RIGHT_ARROW
912      and GLUT_CURSOR_LEFT_ARROW.
913    * Refactored and fixed the erroneous code for GLUT_CURSOR_NONE.
914    * Removed the incorrect use of XFreeCursor and use a cache of cursors
915      instead. Cursors are never freed now, we could do this e.g. via
916      reference countig if this is really needed.
917    * Fixed error handling.
918    * Unknown cursor types are an error now.
919    * Now the window state always corresponds to the wanted cursorID, even in
920      the case of GLUT_CURSOR_FULL_CROSSHAIR.
921
922 **************************************************************************
923 * Changes between January 3 and April 15, 2005.
924 **************************************************************************
925 (237) Moved the "#include "config.h"" statement to the header file
926
927 (238) Changed the "assert" checks to more dignified statements that print
928       useful error messages before exiting.  Also added initialization
929       checking to all GLUT interface functions.
930
931 (239) Changed some menu code around to remove duplicate code.
932
933 (240) Implemented the ability to attach a menu to multiple windows.
934
935 (241) Implemented the "GLUT_AUXn" color buffers for X11 and Windows
936
937 (242) Improved the cursor handling marginally; also removed some duplicate
938       cursor code
939
940 **************************************************************************
941 * Changes on April 15, 2005.
942 **************************************************************************
943 (243) Changed some comments in "freeglut_internal.h" as a test for the new
944       pCVSc project.
945
946 (244) Changed the names of the "fgStructure.Window" and ".Menu" variables
947       to ".CurrentWindow" and ".CurrentMenu" to make maintenance easier.
948
949 (245) Tried implementing Yuri D'Elia's game mode changes.
950
951 **************************************************************************
952 * Changes in late April 2005
953 **************************************************************************
954 (246) Added French version of README (called LISEZ-MOI") and a Windows-specific
955       version of README describing how to operate under MSVC
956
957 (247) Changed definitions of "FETCH_WCB" and "INVOKE_WCB" to allow compilation
958       with GCC 4.0
959
960 (248) Changed the Makefile path to the "include" directory to allow for
961       off-directory compilation
962
963 (249) Added some initializations and changed a hard-coded number of mouse
964       buttons to a defined constant
965
966 (250) Added code to the Windows timing to allow for millisecond granularity
967       in the execution time
968
969 (251) Fixed a reported bug in the fullscreen mode
970
971 (252) Added window exit event handling to the Windows code; also put in a note
972       about adding window entry event handling
973
974 **************************************************************************
975 * Changes in early May 2005 -- in the run-up to 2.4.0
976 **************************************************************************
977 (253) Added handling for negative position specifications for subwindows
978
979 (254) Made the display string handling in "freeglut_init.c" ever so slightly
980       more general
981
982 (255) Changed the key repeat flag initialization from "GL_TRUE" to
983       "GLUT_KEY_REPEAT_ON" to make it consistent with its use elsewhere.
984
985 (256) Removed the unused joystick function "fghJoystickParseElement"
986
987 (257) Added a comment to "glutCreateWindow" about why "freeglut" does not
988       match GLUT when "glutInit" is not called.
989
990 (258) Removed an unused "Pixmap" variable
991
992 (259) Changed the "shapes" demo to the OpenGLUT "shapes" demo, which is much
993       niftier.
994
995 (260) Necessary compilation fixes for newer GCCs (e.g. 3.3.5, 4.0).
996       Side effect: The shapes demo has a new 'i' key now.
997
998 (261) Fixed a cuboctahedron vertex, implemented wire mode for that shape.
999
1000 **************************************************************************
1001 * 8 May 2005 -- 2.4.0 Release Candidate 1 Released
1002 **************************************************************************
1003 (262) Fixed the "vfprintf" for Windows so that error messages get printed
1004       out again
1005
1006 (263) Implemented Takeshi Nishimura's menu fixes.  Menus should work now.
1007
1008 **************************************************************************
1009 * 15 May 2005 -- 2.4.0 Release Candidate 2 Released
1010 **************************************************************************
1011
1012 (264) More game mode fixes
1013
1014 **************************************************************************
1015 * 19 May 2005 -- 2.4.0 Release Candidate 3 Released
1016 **************************************************************************
1017
1018 (265) Lowering minimum autoconf version required.
1019
1020 (266) Guarantee consistency of names/addresses in glutGetProcAddress by
1021 using a macro. In addition, this avoids any non-constant initializer
1022 issues which might be raised when using WinDoze GCCs. The additional code
1023 overhead is negligible, at least for x86 (a few instructions per name).
1024
1025 (267) When switching to game mode under X11, no ConfigureNotify event
1026 will happen and consequently no reshape callback will ever be called via
1027 the normal mechanism. To fix this, note that the game mode window needs
1028 to be resized and handle this before redraw.
1029
1030 (268) The original glutEnterGameMode() returns the window id of the game
1031 mode window, not TRUE/FALSE, we should better follow that. Note that most
1032 man pages claim that this function returns void, but this is definitely
1033 wrong.
1034
1035 (269) Dan Torop's patch to fix joystick polling times (resolves bug 1206856)
1036
1037 **************************************************************************
1038 * 25 May 2005 -- 2.4.0 Release Candidate 4 Released
1039 **************************************************************************
1040
1041 (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.
1042
1043 **************************************************************************
1044 * 2 Jun 2005 -- 2.4.0 Release Candidate 5 Released
1045 **************************************************************************
1046
1047 **************************************************************************
1048 * 9 Jun 2005 -- 2.4.0 Released
1049 **************************************************************************
1050
1051 **************************************************************************
1052 * Changes in late June 2005
1053 **************************************************************************
1054
1055 (271) Added an RPM spec file based on the one shipped with SuSE 9.3.
1056
1057 (272) Implemented Joe Krahn's "Input Devices" code--at the moment, a dial
1058 box.
1059
1060 (273) Fixed a bug in the Sierpinski sponge code that caused the application
1061 to crash if it called the code with a negative number of levels
1062
1063 (274) Added --enable-debug configure flag. Currently it only turns on X11
1064 event tracing, but in the future we could add more.