Descriptions of Important xserver Directories and Subdirectories
cfb* contains deprecated color framebuffer drawing procedures that are not compatible with the Shadow drawing system that Cygwin/X depends upon. This directory is of no interest to Cygwin/X programmers.
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. This directory is maintained by Keith Packard and is only of interest to Cygwin/X programmers when it fails to build.
hw contains [drawing] hardware dependent functions.
vfb contains the Virtual Framebuffer X Server. The vfb server draws to a system memory framebuffer with the primary purpose of allowing X clients to run on a machine that does not have display hardware.
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. xnest is not generally of interest to Cygwin/X programmers.
xwin contains the source code for the Cygwin/X X Server. This is the primary directory that Cygwin/X programmers are 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. These drawing routines are used by the Cygwin/X Native GDI
X Server engine. In turn, the machine independent routines depend in
winGetSpans
, winFillSpans
,
and winSetSpans
, which are implemented in the
Native GDI engine.
miext contains various machine independent X extensions.
layer contains source code for the layer extension. This extension is supported by Cygwin/X, however, this directory will be of interest only when layer fails to build.
shadow contains source code for the shadow extension 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 extension 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 components of interest
doc
hardcopy contains precompiled PostScript documentation for various components of the X Window System. Cygwin/X-specific documentation is not contained in this directory. This directory is of little interest to Cygwin/X programmers.
specs contains the sources to build the documents in hardcopy. This directory is of little interest to Cygwin/X programmers.
fonts contains font definition files used to compile fonts. This directory is of little interest to Cygwin/X programmers.
include contains various X Window System headers that are not generally specific to any one client or library (i.e. X.h, Xproto.h, and keysymdef.h).
lib contains both X client and X Server libraries. Cygwin/X does not generally call any functions in these libraries directly; however, we do have to link to several of these libraries to get our X Server to build. These libraries are maintained by various developers from the X Window System project and there are occasional synchronizations with The Open Group's X.org. Cygwin/X programmers occasionally need to fix Cygwin-related build errors that occur in these libraries.