Appendix C. Writing Extensions to X[63]

Extensibility is an important part of X. Hooks are provided into Xlib and the protocol so that extensions will have the same performance as the core routines. This appendix provides reference information on how to write extensions and integrate them into Xlib. This appendix is not a tutorial, and you will need to look at existing extensions to figure out how to write one yourself.

Extensions can be added to Xlib only with no protocol addition or to both Xlib and the server with a protocol addition. Several extensions are already available that support nonrectangular windows, 3-D graphics, and alternate input devices and multibuffering. See the code for these for examples of writing extensions.

Because X can only evolve by extension to the core protocol, it is important that extensions not be perceivable as second-class citizens. At some point, some extensions may be adopted as parts of the “X Standard.”

Therefore, there should be little to distinguish the use of an extension from that of the core protocol. To avoid having to initialize extensions explicitly in application programs, extensions should perform “lazy evaluations” and automatically initialize themselves when called for the first time.

Extensions written according to these instructions will run at essentially the same performance as the core protocol requests.

It is expected that a given extension to X will consist of multiple requests. Defining ten new features as ten separate extensions ...

Get XLIB Programming Manual, Rel. 5, Third Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.