46 Commits

Author SHA1 Message Date
rkrolib
2ff70b671c Ooops. I screwed up on part of John's fixes. Sorry.
I think that I have his fix properly committed now.  Mea culpa.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@305 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-06 23:40:21 +00:00
rkrolib
65dde7f632 Cleanup pass after committing callback conversion (from structure to
array-of-pointers).  Mostly deleted commented-out struct-based code.
Also added some XXX comments that I though should be pondered.  (My
own pair of eyes, and one brain cell, were not sufficient at this time
to decide what to do for those ponderables.  (^&)


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@304 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-06 23:29:55 +00:00
rkrolib
80a523394c Converted the "Callbacks" structure (with named members holding individual
callback pointers) to a "CallBacks" array in fgState.  (This is to allow
us to write a loop to clear all callbacks from windows when the window is
dead/dying.  Using this, we can safely assign NULL to each in a loop.)

Support includes two new macros, FETCH_WCB() and INVOKE_WCB().  See
freeglut_internal.h for more details there.

Some typedefs of function pointer types were altered to make them more
uniform (necessary for the macros).

All references to window-based callbacks in freeglut are updated to
use the new macros.

Old usages will cause compile-time errors.

As a side bonus, the new invocation macro sets the current window and
checks pointers so that these common steps can be uniformly done on
every window-based callback.  This makes it easier to do things right.
At the same time, the array notation (and now required associated casts)
make it harder to bypass the macros and abuse the function pointers,
in general.

After this commit, I will go through the code and clean up dangling issues
about formatting.  This commit is just a "it now works, let's checkpoint it"
type of affair.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@303 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-06 22:09:35 +00:00
rkrolib
b7dd45a935 From John, a couple of lines needed to be changed to fix the mouse wheel
support on WIN32.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@302 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-06 21:41:17 +00:00
rkrolib
585433d174 Some changes, mostly from John. Mostly style changes.
One bug fix from John: Execution state bug-fix in glutMainLoop(), per his
post yesterday.

One fix from me: Changed "if( ButtonPress )" to "if( pressed )".
{ButtonPress} is a constant.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@299 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-04 18:16:52 +00:00
rkrolib
cc38ef07e9 Got rid of the G_LOG_DOMAIN junk, per discussion on the mailing list.
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@295 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-04 01:30:32 +00:00
rkrolib
2c356e1221 Missed a block where one level was 2-space indented.
Nit-picked a few other lines for consistancy.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@293 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-04 01:10:13 +00:00
rkrolib
5342fe966f * Indentation issues.
* Pulled some common code into a nicely packaged function.
 * Found some pointer/int issues.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@290 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-03 21:25:11 +00:00
rkrolib
fa26d7b700 Heh.
Forgot to wrap the fgGetXModifiers() in a #if.  Fixed.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@289 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-03 10:56:48 +00:00
rkrolib
cced36cf2b Extracted some common code to a subroutine, in glutMainLoopEvent().
(The common code was a snippet to compute X keyboard modifiers as a
bit-mask of GLUT symbols.)


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@288 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-03 10:51:26 +00:00
rkrolib
9b944ec457 Caught a few more little style issues.
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@287 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-03 10:31:41 +00:00
rkrolib
2ab6b22f80 Added a "case" for an X event that we turn on but do not use.
({MapNotify}).  We already caught {MappingNotify} and {UnmapNotify}.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@286 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-03 10:29:30 +00:00
rkrolib
31c0809e28 * Fixed a bug in the X11 handling of scrollwheel/mouse. The old code,
I believe, checked if *either* a wheel or button callback was set,
   and then decided which to use---and unconditionally called it.
   I left the "either" check in, but added additional checks before
   actually doing the invocation.
 * Lots of reformatting.  Massive.  The usual suspects, though, and fairly
   trivial: Re-indenting to standard size, shuffling some spaces to match
   the freeglut "standard" of:
     if( ... )
   ...and:
     func( ... )


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@285 7f0cb862-5218-0410-a997-914c9d46530a
2003-11-03 10:05:07 +00:00
rkrolib
c89d0c24d9 En masse removal of most (I think) of the remaining hard TABs in files.
There are still a couple of files that need to be hit.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@281 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-31 11:33:12 +00:00
rkrolib
3eec065016 Forgot to set {direction} explicitly to +/- 1 for freeglut mouse-wheel
API on MS-WINDOWS.  Oops.

Now it should always report +/- 1 on MS-WINDOWS, per the spec.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@269 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-30 03:51:33 +00:00
rkrolib
df711af72f Minor fix to allow for multiple ticks to be received at one time by the
WIN32 code.  Take abs(direction) as the number of ticks, and count it
down.

<stdlib.h> *should* be included by freeglut_internal.h, I think, so it
should be okay; otherwise add a suitable #include.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@268 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-30 03:20:24 +00:00
rkrolib
c2f23f0bb2 Grrr. My attempt to commit got aborted, and the commit message was lost.
Now I've lost track of what I said I'd done.  Something like:

 * Fixed some issues with multiple wheels.
 * Noted in comments some issues about other-than-3-real-buttons.
 * Fixed formatting to fit 80 columns.
 * Removed some BCPL/C++ style comments (//) that are not legal, and
   which, if memory servers, are not even strictly legal when disabled
   by preprocessor directives.  E.g.,

   #if 0
     not-syntactically-valid-C
   #endif

   ...is not legal.  Though most cpp's will discard the bracketed material
   completely before the main C compiler pass has a chance to analyze the
   syntax.  (MSVC++ and GCC both don't seem to mind the BCPL style comments
   in plain C, but let's keep the sources clean, eh?)
 * Fixed a problem that would have caused freeglut to report doubled
   wheel events under XFree86.

Not tested other than compiling.  Personally, I think that the interface
is inherently broken at this point unless you are willing to get user-
configuration.  (Which would then solve the complaint that Steve had
about computing the tick-size on behalf of applications.)  I.e., there
is NO WAY to know if we have the right buttons to start wheels at, or
if there are any buttons after the first wheel(s), etc.  We just have to
guess---and if we are wrong, we can get varying degrees of brokeness.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@267 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-30 03:08:16 +00:00
rkrolib
9da07cd41f * Fixed a bug that I introduced in fgWarning()/fgError(): I thought that
((a) || (b)) was defined to have value as:
     (a) if (a) != 0
     (b) if (a) == 0

   ...instead, it has value 0/1.  This was causing a bug.  It's probably
   just as well, since what I was trying to do definitely fell into the
   category of "clever code" rather than "clear code".

   Sorry.

 * Made glutSetKeyRepeat() call fgError() if you go out of range.  (The
   old code silently did nothing---not even a warning.)

   If it is really desirable to keep running, we should probably at least
   generate an fgWarning().

 * Deleted some say-nothing-new comments.

 * XXX added: Is glutSetKeyRepeat() deprecated?


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@256 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-29 06:40:51 +00:00
rkrolib
4672072aa7 Commit, mostly of work from John:
* Removed some say-nothing-useful comments.
 * Added some tentative mouse-wheel support.
 * Fairly massive reformatting of code.

I made some secondary changes to his changes:

 * One compilation error was fixed (missing close-paren + semicolon).
 * Deleted a few ore say-nothing-useful comments.
 * Some of John's code was strangely formatted to the point that it
   seemed completely out of place, so I took the liberty of reformatting
   it.  Since I used GNU EMACS's <tab> key (which re-indents rather than
   inserts TAB characters), I had to propogate some indentation changes
   a little further than the bare necessity to match up with John's
   changes.  (John seems to shoot for 2-space indents, while EMACS
   (and I, I confess) strongly prefer 4-space indents.  The code that
   I was re-indenting had been put to 8-space indents, however.)

I have *not* tested the code beyond compiling.  I assume that John did
(and that the compilation error was a result a minor change just before
asking me to commit).


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@255 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-28 20:17:39 +00:00
rkrolib
b906986ac4 Cleaned up glutMainLoop() a bit:
* Deleted numerous say-nothing-new comments.
 * Reformatted a say-something-useful comment to fit on an 80-column
   display.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@246 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-27 05:12:09 +00:00
rkrolib
4eeaaaa08c Partially (re-?)unified some of the glutMainLoopEvent() code. The only
code that really needs to be system-specific is the window event handling,
which in MS-WINDOWS is tucked into a separate function.  In UNIX/X11, it's
all spilled out into glutMainLoopEvent() for some reason.

If the X11 code could be tucked into another function, glutMainLoopEvent()
could be platform-independant.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@245 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-27 05:03:31 +00:00
rkrolib
09723d91eb Moved the idle callback out of glutMainLoopEvent() and into
glutMainLoop(), per discussion on the list.  The code looks okay,
to me, though I remain less than wholly convinced that treating idles
as special cases is the best way to go.  Still, a case can be made
for taking "non-event" idle callbacks out of the "event loop".
From an organizational perspective, I think that it's an improvement,
and it fixes a bug for at least one program.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@244 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-26 06:13:50 +00:00
rkrolib
9464f61d1f Superficial cleanup of the code. Mostly taking lines such as:
...

  /*
   * <Enslish recapituation of the single following C statement>
   */
  <single C statement>

...and rewrote as:

  ...
  <single C statement>


freeglut_main.c still has a lot of that in it, but it looks a bit
better, now.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@241 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-26 05:38:12 +00:00
rkrolib
04c6d13777 Fixed the buglet about failing to report the program's name on error-
messages.  Please test.  (Modified glutInit(), the state structure,
and the warn/err functions.)


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@238 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-26 04:39:27 +00:00
rkrolib
30d1e165a0 Changed CreateNotify (in X11 ONLY) to act like a ConfigureNotify event.
This is done so that subwindows on X11 will get "resize" events when
they are created.  Old GLUT did this---presumably by design in order
to ensure that (a) All windows get notified of their size as soon as
the window exists, and (b) probably more importantly, so that windows
and sub-windows behave as much alike as possible.  I believe that GLUT
was right to do this, and I believe that compatibility requires this
(I have a sample program that breaks in freeglut but not GLUT without
this fix).

I did not touch the Microsoft side, because I don't know what their
OS does---nor if old GLUT was historically system-dependant about this.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@217 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-08 20:17:10 +00:00
rkrolib
de5aadf9b5 Fixed a bug in the menu callback behavior. Menus were not setting the
current window correctly.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@214 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-08 00:24:33 +00:00
puggles
c209cc5479 Tweaking for menu behavior in Linux regarding mouse whatnot - John Fay
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@212 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-04 15:06:42 +00:00
rkrolib
7a6c02639a Added support for more arbitrary number of mouse buttons (though only the
first three can work with menus), in X.  This closes a compatibility gap
with old GLUT, and leaves us the option of supporting scroll-wheels
properly.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@210 7f0cb862-5218-0410-a997-914c9d46530a
2003-10-01 15:01:58 +00:00
rkrolib
34a43b6ae5 Corrected a bug w.r.t. display and joystick events. When getting ready
to sleep, we need to go through ALL windows to check for pending joysticks
and to check for pending redisplays.  I was just going through all TOP-
LEVEL windows.  Eeek.  This won't do.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@205 7f0cb862-5218-0410-a997-914c9d46530a
2003-09-24 06:26:36 +00:00
rkrolib
93d944835a Fixed:
* GLUT_SINGLE now should behave more or less correctly.
   Thanks to Brian Paul!

 * Sleeping is now cognizant of outstanding redisplays.

 * Fractals_random has been restored more or less to as-before, save that
   it uses the more minimal glFlush() rather than glutSwapBuffers().
   glutSwapBuffers() was only required when freeglut was incorrectly
   handling promotion to double-buffering.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@202 7f0cb862-5218-0410-a997-914c9d46530a
2003-09-23 01:03:41 +00:00
rkrolib
4d8a8e7085 Moved the #include/#ifdef/#define stuff up to the top.
Changed #ifdef to #if, per Nigel(?)'s comment.  Ooops.


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@201 7f0cb862-5218-0410-a997-914c9d46530a
2003-09-22 19:01:55 +00:00
puggles
84c2c9381e Richard Rauch's patch to ensure that freeglut does not use 100% CPU even while idling.
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@195 7f0cb862-5218-0410-a997-914c9d46530a
2003-09-20 19:11:17 +00:00
puggles
738fa38ef5 Nigel Stewart's joystick fix (for hopefully all platforms), SourceForge bug 805481
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@186 7f0cb862-5218-0410-a997-914c9d46530a
2003-09-13 13:12:26 +00:00
puggles
59e9cae134 Re-add catches for the case in which a menu callback destroys the menu. - John Fay
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@181 7f0cb862-5218-0410-a997-914c9d46530a
2003-09-10 15:46:12 +00:00
cjp
fdd998e66a More to fix a deinitialization related crash.
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@180 7f0cb862-5218-0410-a997-914c9d46530a
2003-09-09 17:50:31 +00:00
puggles
18bf7821a6 Menus should deallocate better now - John Fay
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@178 7f0cb862-5218-0410-a997-914c9d46530a
2003-09-08 20:36:23 +00:00
puggles
652e30fcb9 These change a bunch of assignments to calls to set the current window correctly, and also (possibly) fixes most of the remaining menu problem. - John Fay
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@174 7f0cb862-5218-0410-a997-914c9d46530a
2003-08-29 18:10:06 +00:00
puggles
c27c9a8631 Another typecast bugfix from John Fay
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@173 7f0cb862-5218-0410-a997-914c9d46530a
2003-08-29 15:49:40 +00:00
puggles
59c4c38bbc Casting changes, John Fay
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@168 7f0cb862-5218-0410-a997-914c9d46530a
2003-08-28 15:15:25 +00:00
puggles
355b9327a9 Major overhaul to the menu system, by John Fay
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@167 7f0cb862-5218-0410-a997-914c9d46530a
2003-08-27 19:02:36 +00:00
sandalle
9be4444627 src/freeglut_main.c:816 and :1571, set the current window (John F. Fay)
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@159 7f0cb862-5218-0410-a997-914c9d46530a
2003-08-05 15:16:12 +00:00
puggles
fc93453910 Major menu changes (they appear in their own window, have own rendering context) by John Fay and a little by James C. Jones. They work perfectly on Win32, and work... on Linux.
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@152 7f0cb862-5218-0410-a997-914c9d46530a
2003-08-02 13:31:19 +00:00
cjp
48e8da9920 glutMainLoopEvent() was not closing windows properly.
Moved call to fgCloseWindows() from glutMainLoop() to the end of glutMainLoopEvent().


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@125 7f0cb862-5218-0410-a997-914c9d46530a
2003-07-07 15:37:39 +00:00
cjp
4075066fb3 It was crashing on and event for a unknown window.
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@123 7f0cb862-5218-0410-a997-914c9d46530a
2003-07-02 22:36:21 +00:00
brianp
482f4b2bc5 XF86 game mode fixes, context sharing option. (John Fay)
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@108 7f0cb862-5218-0410-a997-914c9d46530a
2003-06-27 15:10:06 +00:00
sandalle
fb8a5cfd3e Changed all references to the 'freeglut-1.3' directory to 'src', copied 'freeglut-1.3' to 'src' and added all files from 'src' to the repository (TODO #34).
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@98 7f0cb862-5218-0410-a997-914c9d46530a
2003-06-23 23:40:12 +00:00