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.

Partial implementation of the protocol extension GLX version 1.3

Copyright © 2018 X-Software GmbH
info@x-software.com