Up: SGI graphics Frequently Asked Questions (FAQ)
Next: -57- How can I translate screen (x,y) coords into world (x,y,z) coords?
Previous: -55- Can I use 4Dgifts code in my application?
Subject: -56- What does ERR_WMANIPC mean?
Date: 07 May 1993 00:00:01 EST
The "WMAN" in that message means "window manager." However, this no
longer means "window manager" such as 4Dwm, but rather the entire X
Window system. The error means that the GL program triggered a fatal
X error.
A GL program can get an X error, because all GL programs are actually
X clients. When a GL program does a winopen(), libgl actually calls
XCreateWindow, etc.)
When a GL program gets an X error, libgl prints out these X errors
using this error message:
GL: X request = maj.min, error code = ercode
where
maj = major request code that caused the error
min = minor request code
ercode = X error code
This turns out to be easy to interpret, so long as the request was a
core X protocol request (e.g., a CreateWindow request). In that
case:
1. You can look up the major code in /usr/include/X11/Xproto.h.
2. The minor code is not used.
3. The X error code can be found in /usr/include/X11/X.h.
As you can see in Xproto.h, the core X protocol requests have request
codes <= 127.
However, if maj > 127, then the request is an X extension request.
Unfortunately, it can be difficult to interpret this unless you built
your program with a debugging libgl.a (compiled with -g). The reason
is that for an X extension, the major request code and the starting
error code are copied from the X server during client startup, and
these codes are saved in variables inside libgl. With a debugging
libgl, these variables can be printed out from within a debugger,
such as dbx.
If the major code indicates an X Input extension request, then the
minor numbers then tell the X input request type, and these are found
in /usr/include/X11/extensions/XIproto.h.
Finally, the X Input Extension uses 132 as its "starting error code."
The possible errors are found in /usr/include/X11/extensions/XI.h,
where they're defined like this:
#define XI_BadDevice 0
#define XI_BadEvent 1
#define XI_BadMode 2
#define XI_DeviceBusy 3
#define XI_BadClass 4
If you add 132 to these numbers, you get the error that's reported by
the libgl error message.
Up: SGI graphics Frequently Asked Questions (FAQ)
Next: -57- How can I translate screen (x,y) coords into world (x,y,z) coords?
Previous: -55- Can I use 4Dgifts code in my application?