cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Copyright 2001-2003 Red Hat Inc., Durham, North Carolina.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * All Rights Reserved.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Permission is hereby granted, free of charge, to any person obtaining
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * a copy of this software and associated documentation files (the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * "Software"), to deal in the Software without restriction, including
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * without limitation on the rights to use, copy, modify, merge,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * publish, distribute, sublicense, and/or sell copies of the Software,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * and to permit persons to whom the Software is furnished to do so,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * subject to the following conditions:
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * The above copyright notice and this permission notice (including the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * next paragraph) shall be included in all copies or substantial
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * portions of the Software.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * SOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Kevin E. Martin <kem@redhat.com>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * David H. Dawes <dawes@xfree86.org>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Rickard E. (Rik) Faith <faith@redhat.com>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Main header file included by all other DMX-related files.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/** \mainpage
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * - <a href="http://dmx.sourceforge.net">DMX Home Page</a>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * - <a href="http://sourceforge.net/projects/dmx">DMX Project Page (on
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Source Forge)</a>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * - <a href="http://dmx.sourceforge.net/dmx.html">Distributed Multihead
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * X design</a>, the design document for DMX
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * - <a href="http://dmx.sourceforge.net/DMXSpec.txt">Client-to-Server
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * DMX Extension to the X Protocol</a>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* Handle client-side include files in one place. */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef enum {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/** Provide the typedef globally, but keep the contents opaque outside
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * of the input routines. \see dmxinput.h */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/** Provide the typedef globally, but keep the contents opaque outside
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * of the XSync statistic routines. \see dmxstat.c */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/** Global structure containing information about each backend screen. */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync const char *name; /**< Name from command line or config file */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /*---------- Back-end X server information ----------*/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Display *beDisplay; /**< Back-end X server's display */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int beNumDepths; /**< Number of depths on BE server */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int beNumPixmapFormats; /**< Number of pixmap formats on BE */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XPixmapFormatValues *bePixmapFormats; /**< Pixmap formats on BE */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XVisualInfo *beVisuals; /**< Visuals from BE server */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int beDefVisualIndex; /**< Default visual index of BE */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int beNumDefColormaps; /**< Number of default colormaps */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Colormap *beDefColormaps; /**< Default colormaps for DMX server */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Pixel beBlackPixel; /**< Default black pixel for BE */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Pixel beWhitePixel; /**< Default white pixel for BE */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /*---------- Screen window information ----------*/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Window scrnWin; /**< "Screen" window on backend display */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int scrnX; /**< X offset of "screen" WRT BE display */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int scrnY; /**< Y offset of "screen" WRT BE display */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /** Default drawables for "screen" */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync struct _DMXScreenInfo *next; /**< List of "screens" on same display */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync struct _DMXScreenInfo *over; /**< List of "screens" that overlap */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /*---------- Root window information ----------*/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Window rootWin; /**< "Root" window on backend display */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int rootX; /**< X offset of "root" window WRT "screen"*/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int rootY; /**< Y offset of "root" window WRT "screen"*/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int rootXOrigin; /**< Global X origin of "root" window */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int rootYOrigin; /**< Global Y origin of "root" window */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /*---------- Shadow framebuffer information ----------*/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void *shadow; /**< Shadow framebuffer data (if enabled) */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XlibGC shadowGC; /**< Default GC used by shadow FB code */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XImage *shadowFBImage; /**< Screen image used by shadow FB code */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /*---------- Other related information ----------*/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int shared; /**< Non-zero if another Xdmx is running */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /* Support for cursors on overlapped
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * backend displays. */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int cursorNotShared; /* for overlapping screens on a backend */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PositionType where; /**< Relative layout information */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int whereRefScreen; /**< Relative layout information */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int savedTimeout; /**< Original screen saver timeout */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int dpmsCapable; /**< Non-zero if backend is DPMS capable */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int dpmsStandby; /**< Original DPMS standby value */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int dpmsSuspend; /**< Original DPMS suspend value */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Bool needsSync; /**< True if an XSync is pending */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /** Visual information for glxProxy */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /** FB config information for glxProxy */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /** Function pointers to wrapped screen
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * functions */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ChangeWindowAttributesProcPtr ChangeWindowAttributes;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* Global variables available to all Xserver/hw/dmx routines. */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern int dmxNumScreens; /**< Number of dmxScreens */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern DMXScreenInfo *dmxScreens; /**< List of outputs */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * shadow frame-buffer
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * (deprecated) */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern XErrorEvent dmxLastErrorEvent; /**< Last error that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * occurred */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * occurred */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * optimizations */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern Bool dmxSubdividePrimitives; /**< True if using the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * primitive subdivision
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * optimization */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern Bool dmxLazyWindowCreation; /**< True if using the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * lazy window creation
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * optimization */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * extension should be
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * used with the backend
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * servers */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * non-zero */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * support is enabled */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern Bool dmxGLXSwapGroupSupport; /**< True if glxProxy
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * support for swap
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * groups and barriers
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * is enabled */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * should force an XSync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * request after each
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * swap buffers call */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * should force a
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * glFinish request
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * after each swap
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * buffers call */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * path is set on the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * command line;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * otherwise, a string
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * of comma separated
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * paths built from the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * command line
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * specified font
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern Bool dmxIgnoreBadFontPaths; /**< True if bad font
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * paths should be
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * ignored during server
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern Bool dmxAddRemoveScreens; /**< True if add and
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * remove screens support
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * is enabled */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/** Wrap screen or GC function pointer */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define DMX_WRAP(_entry, _newfunc, _saved, _actual) \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/** Unwrap screen or GC function pointer */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* Define the MAXSCREENSALLOC/FREE macros, when MAXSCREENS patch has not
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * been applied to sources. */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define MAXSCREEN_MAKECONSTSTR2(x) MAXSCREEN_MAKECONSTSTR1(x)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync MAXSCREEN_MAKECONSTSTR2(__LINE__) ":" __FILE__ "] to allocate object: "
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync if (!o) { \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync if (!o && fatal) FatalError(MAXSCREEN_FAILED_TXT #o); \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync } while (0)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync if (!o) { \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync if (!o) return retval; \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync } while (0)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync } while (0)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define MAXSCREENSALLOC(o) _MAXSCREENSALLOCF(o,MAXSCREENS, 0)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define MAXSCREENSALLOC_FATAL(o) _MAXSCREENSALLOCF(o,MAXSCREENS, 1)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define MAXSCREENSALLOC_RETURN(o,r) _MAXSCREENSALLOCR(o,MAXSCREENS, (r))
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define MAXSCREENSALLOCPLUSONE(o) _MAXSCREENSALLOCF(o,MAXSCREENS+1,0)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define MAXSCREENSALLOCPLUSONE_FATAL(o) _MAXSCREENSALLOCF(o,MAXSCREENS+1,1)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define MAXSCREENSCALLOC(o,m) _MAXSCREENSALLOCF(o,MAXSCREENS*(m),0)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define MAXSCREENSCALLOC_FATAL(o,m) _MAXSCREENSALLOCF(o,MAXSCREENS*(m),1)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define dmxGCPrivateKey (&dmxGCPrivateKeyRec) /**< Private index for GCs */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define dmxWinPrivateKey (&dmxWinPrivateKeyRec) /**< Private index for Windows */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define dmxPixPrivateKey (&dmxPixPrivateKeyRec) /**< Private index for Pixmaps */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern int dmxFontPrivateIndex; /**< Private index for Fonts */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define dmxScreenPrivateKey (&dmxScreenPrivateKeyRec) /**< Private index for Screens */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define dmxColormapPrivateKey (&dmxColormapPrivateKeyRec) /**< Private index for Colormaps */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define dmxPictPrivateKey (&dmxPictPrivateKeyRec) /**< Private index for Picts */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define dmxGlyphSetPrivateKey (&dmxGlyphSetPrivateKeyRec) /**< Private index for GlyphSets */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* DMX_H */