Cygwin/X Contributor's Guide
Prev | Chapter 2. Programming | Next

# Source Code Tree Layout

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.

  - `dmx` contains the Distributed Multihead X X Server. The DMX X server acts as a proxy for multiple back-end X servers.

  - `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.

    - `fake` contains the Xfake X Server. xfake is similar to xvfb, but discards all data written to the framebuffer.

  - `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. These drawing routines are used by the Cygwin/X Native GDI X Server engine. In turn, the machine independent routines depend on `winGetSpans`, `winFillSpans`, and `winSetSpans`, which are implemented in the Native GDI engine.

- `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:

    1. Allows the `fb` graphics routines to draw to an offscreen framebuffer.

    2. Keeps track of the regions of the offscreen framebuffer that have been drawn on.

    3. 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.

- 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.

Prev | Home | Next
Programming | Up | Cygwin/X X Server Architecture