Compensation for X Window client and server bugs
The statement
workarounds {[+|-]exposeAfterGraphicsExpose
|[+|-]exposeBeforeGraphicsExpose
|[+|-]exposeInsteadOfGraphicsExpose
|[+|-]forgetBitGravity
|[+|-]refreshBitGravity|none}...
may be used for compensation for bugs of X Window clients and servers which arise with certain configurations of XposeXrecord, or for special enhancements. These corrections do not always comply with the X11 protocol. However, they do never harm well behaving clients.
The following sections describe the problems and the solutions by example.
Ignoring GraphicsExpose events
Few buggy X Window clients erroneously ignore GraphicsExpose events assuming that their windows are always unobscured. For instance, if a client actively draws the contents of a scrolling window instead of reacting on Expose and GraphicsExpose events, newly visible areas of the windows might not get correctly updated.
The statements
workarounds exposeAfterGraphicsExpose
workarounds exposeBeforeGraphicsExpose
workarounds exposeInsteadOfGraphicsExpose
make the xposexrecord program send an Expose event for each GraphicsExpose event to the client, after, before and instead of the GraphicsExpose event, respectively. This event should cause the redraw of the new window contents.
Buggy implementation of the bit gravity concept
Some X Window clients try to take advantage of the concept of bit gravity in order to minimize the areas to be redrawn. Not all X Window servers implement this concept correctly.
The statement
workarounds forgetBitGravity
switches off the bit gravity totally and the statement
workarounds refreshBitGravity
makes the xposexrecord program totally refresh the window contents after resizing.