A brief overview of the xserver source tree layout, highlighting the parts of important and interest for Cygwin/X development:
dix contains [drawing]
device independent X
routines. main.c contains the
main
entry-point function for the Cygwin/X X
Server. The X Server startup procedure can be followed by examining
main
.
fb contains the modern framebuffer drawing procedures used by Cygwin/X.
hw contains [drawing] hardware dependent functions.
kdrive
ephyr contains the Xephyr X Server which uses a window on a host X Server as its framebuffer. Unlike Xnest it supports modern X extensions such as Composite, Damage, randr, etc.
vfb contains the Virtual Framebuffer X Server. The vfb server draws to a system memory framebuffer. Xvfb is primarly used for testing, or for running X clients which require an X server but there is no interest in seeing the content of it's windows.
xfree86 contains source code for the X Window System servers that run on various operating systems that generally have low-level access to the graphics hardware. Cygwin/X does not have low-level access to the graphics hardware, thus Cygwin/X is not able to utilize the X Window System server.
xnest contains source code for the Nested X Server which runs inside of another X Server.
xquartz contains the source code for the XQuartz X Server, which runs on Mac OS X.
xwin contains the source code for the Cygwin/X X Server. This is the primary directory that Cygwin/X programmers will be interested in.
include contains header files specific to the X Server program, such as graphics context structures. This directory is useful to Cygwin/X programmers when they need to lookup the name or data type of members of various X Server structures.
mi contains machine independent drawing routines.
miext contains various machine independent X extensions.
shadow contains source code for the shadow framebuffer layer that the Cygwin/X X Server depends upon. This directory is of primary importance to Cygwin/X, but it is maintained by other programmers and is only of direct interest to Cygwin/X programmers when it fails to build. The shadow layer does three things:
Allows the fb graphics routines to draw to an offscreen framebuffer.
Keeps track of the regions of the offscreen framebuffer that have been drawn on.
Calls one of Cygwin/X's engine dependent ShadowUpdate () functions to transfer the updated regions of the offscreen framebuffer to the screen.
os contains operating system dependent X Server functions. However, the functions in the os have been written in such a way that they are actually compatible with most UNIX-style operating systems, include Cygwin.
Other packages of interest in the X.Org Release
xorg-docs contains documentation for various components of the X Window System. Cygwin/X-specific documentation is not contained in this directory.
xorgproto contains the various X Window System protocol headers.
The various X client and X Server libraries. Cygwin/X programmers occasionally need to fix Cygwin-related build errors that occur in these libraries.
The various standard X utility and test applications (e.g. xeyes, xhost, xinit, xlogo, etc.). Cygwin/X programmers occasionally need to fix Cygwin-related build errors that occur in these applications.
The various font packages that contain font definition files used to compile fonts.