W32 is a synchronous interface onto the window server that user
code can include, link to and invoke instead of sending low level client-server
requests to the window server. Some errors can be detected before they are sent
to the server and are raised as panics from W32. Code in the W32 synchronous
interface runs in the client’s thread, so it raises panics in situations it
can understand on the current thread via User::Panic()
.
These panics have a category of W32.
To minimise strain on the system, W32 can cache several requests in order in a buffer and send them as a group to the server. This means that a panic might not be caused by a bug in the last client-side code to run, but by an earlier line that does not get its request serviced until later. To debug such a panic it is often useful to turn on auto flushing.
Window server synchronous interface (W32) panics are raised by the synchronous interface onto the window server when it realises a client has attempted an action the interface can’t legally pass on to the window server thread. Because the interface is synchronous, the current thread is panicked, and the request is never sent to the window server.
These panics are defined in the enumeration TW32Panic
in w32cmd.h
.
Note that some panics are raised in debug builds only.
|