61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/*
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Copyright 2001-2003 Red Hat Inc., Durham, North Carolina.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync *
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * All Rights Reserved.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync *
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Permission is hereby granted, free of charge, to any person obtaining
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * a copy of this software and associated documentation files (the
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * "Software"), to deal in the Software without restriction, including
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * without limitation on the rights to use, copy, modify, merge,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * publish, distribute, sublicense, and/or sell copies of the Software,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * and to permit persons to whom the Software is furnished to do so,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * subject to the following conditions:
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync *
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * The above copyright notice and this permission notice (including the
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * next paragraph) shall be included in all copies or substantial
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * portions of the Software.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync *
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * SOFTWARE.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/*
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Authors:
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Kevin E. Martin <kem@redhat.com>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * David H. Dawes <dawes@xfree86.org>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Rickard E. (Rik) Faith <faith@redhat.com>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync *
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/** \file
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Main header file included by all other DMX-related files.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/** \mainpage
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * - <a href="http://dmx.sourceforge.net">DMX Home Page</a>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * - <a href="http://sourceforge.net/projects/dmx">DMX Project Page (on
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Source Forge)</a>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * - <a href="http://dmx.sourceforge.net/dmx.html">Distributed Multihead
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * X design</a>, the design document for DMX
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * - <a href="http://dmx.sourceforge.net/DMXSpec.txt">Client-to-Server
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * DMX Extension to the X Protocol</a>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifndef DMX_H
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define DMX_H
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#if HAVE_DMX_CONFIG_H
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include <dmx-config.h>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "gcstruct.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* Handle client-side include files in one place. */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "dmxclient.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "globals.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "scrnintstr.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "picturestr.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifdef GLXEXT
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include <GL/glx.h>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include <GL/glxint.h>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef enum {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PosNone = -1,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PosAbsolute = 0,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PosRightOf,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PosLeftOf,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PosAbove,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PosBelow,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PosRelative
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} PositionType;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/** Provide the typedef globally, but keep the contents opaque outside
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * of the input routines. \see dmxinput.h */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _DMXInputInfo DMXInputInfo;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/** Provide the typedef globally, but keep the contents opaque outside
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * of the XSync statistic routines. \see dmxstat.c */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _DMXStatInfo DMXStatInfo;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/** Global structure containing information about each backend screen. */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _DMXScreenInfo {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *name; /**< Name from command line or config file */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int index; /**< Index into dmxScreens global */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /*---------- Back-end X server information ----------*/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Display *beDisplay; /**< Back-end X server's display */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int beWidth; /**< Width of BE display */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int beHeight; /**< Height of BE display */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int beDepth; /**< Depth of BE display */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int beBPP; /**< Bits per pixel of BE display */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int beXDPI; /**< Horizontal dots per inch of BE */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int beYDPI; /**< Vertical dots per inch of BE */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int beNumDepths; /**< Number of depths on BE server */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int *beDepths; /**< Depths from BE server */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int beNumPixmapFormats; /**< Number of pixmap formats on BE */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XPixmapFormatValues *bePixmapFormats; /**< Pixmap formats on BE */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int beNumVisuals; /**< Number of visuals on BE */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XVisualInfo *beVisuals; /**< Visuals from BE server */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int beDefVisualIndex; /**< Default visual index of BE */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int beNumDefColormaps; /**< Number of default colormaps */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Colormap *beDefColormaps; /**< Default colormaps for DMX server */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Pixel beBlackPixel; /**< Default black pixel for BE */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Pixel beWhitePixel; /**< Default white pixel for BE */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /*---------- Screen window information ----------*/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Window scrnWin; /**< "Screen" window on backend display */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int scrnX; /**< X offset of "screen" WRT BE display */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int scrnY; /**< Y offset of "screen" WRT BE display */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int scrnWidth; /**< Width of "screen" */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int scrnHeight; /**< Height of "screen" */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int scrnXSign; /**< X offset sign of "screen" */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int scrnYSign; /**< Y offset sign of "screen" */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /** Default drawables for "screen" */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Drawable scrnDefDrawables[MAXFORMATS];
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync struct _DMXScreenInfo *next; /**< List of "screens" on same display */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync struct _DMXScreenInfo *over; /**< List of "screens" that overlap */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /*---------- Root window information ----------*/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Window rootWin; /**< "Root" window on backend display */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int rootX; /**< X offset of "root" window WRT "screen"*/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int rootY; /**< Y offset of "root" window WRT "screen"*/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int rootWidth; /**< Width of "root" window */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int rootHeight; /**< Height of "root" window */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int rootXOrigin; /**< Global X origin of "root" window */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int rootYOrigin; /**< Global Y origin of "root" window */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /*---------- Shadow framebuffer information ----------*/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void *shadow; /**< Shadow framebuffer data (if enabled) */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XlibGC shadowGC; /**< Default GC used by shadow FB code */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XImage *shadowFBImage; /**< Screen image used by shadow FB code */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /*---------- Other related information ----------*/
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int shared; /**< Non-zero if another Xdmx is running */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool WMRunningOnBE;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Cursor noCursor;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Cursor curCursor;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /* Support for cursors on overlapped
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * backend displays. */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CursorPtr cursor;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int cursorVisible;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int cursorNotShared; /* for overlapping screens on a backend */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PositionType where; /**< Relative layout information */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int whereX; /**< Relative layout information */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int whereY; /**< Relative layout information */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int whereRefScreen; /**< Relative layout information */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int savedTimeout; /**< Original screen saver timeout */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int dpmsCapable; /**< Non-zero if backend is DPMS capable */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int dpmsEnabled; /**< Non-zero if DPMS enabled */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int dpmsStandby; /**< Original DPMS standby value */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int dpmsSuspend; /**< Original DPMS suspend value */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int dpmsOff; /**< Original DPMS off value */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DMXStatInfo *stat; /**< Statistics about XSync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool needsSync; /**< True if an XSync is pending */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifdef GLXEXT
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /** Visual information for glxProxy */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int numGlxVisuals;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync __GLXvisualConfig *glxVisuals;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int glxMajorOpcode;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int glxErrorBase;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /** FB config information for glxProxy */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync __GLXFBConfig *fbconfigs;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int numFBConfigs;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /** Function pointers to wrapped screen
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * functions */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CloseScreenProcPtr CloseScreen;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SaveScreenProcPtr SaveScreen;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CreateGCProcPtr CreateGC;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CreateWindowProcPtr CreateWindow;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DestroyWindowProcPtr DestroyWindow;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PositionWindowProcPtr PositionWindow;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ChangeWindowAttributesProcPtr ChangeWindowAttributes;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync RealizeWindowProcPtr RealizeWindow;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync UnrealizeWindowProcPtr UnrealizeWindow;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync RestackWindowProcPtr RestackWindow;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync WindowExposuresProcPtr WindowExposures;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CopyWindowProcPtr CopyWindow;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ResizeWindowProcPtr ResizeWindow;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ReparentWindowProcPtr ReparentWindow;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ChangeBorderWidthProcPtr ChangeBorderWidth;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync GetImageProcPtr GetImage;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync GetSpansProcPtr GetSpans;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CreatePixmapProcPtr CreatePixmap;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DestroyPixmapProcPtr DestroyPixmap;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync BitmapToRegionProcPtr BitmapToRegion;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync RealizeFontProcPtr RealizeFont;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync UnrealizeFontProcPtr UnrealizeFont;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CreateColormapProcPtr CreateColormap;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DestroyColormapProcPtr DestroyColormap;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync InstallColormapProcPtr InstallColormap;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync StoreColorsProcPtr StoreColors;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SetShapeProcPtr SetShape;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CreatePictureProcPtr CreatePicture;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DestroyPictureProcPtr DestroyPicture;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ChangePictureClipProcPtr ChangePictureClip;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DestroyPictureClipProcPtr DestroyPictureClip;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ChangePictureProcPtr ChangePicture;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ValidatePictureProcPtr ValidatePicture;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CompositeProcPtr Composite;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync GlyphsProcPtr Glyphs;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CompositeRectsProcPtr CompositeRects;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync InitIndexedProcPtr InitIndexed;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CloseIndexedProcPtr CloseIndexed;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync UpdateIndexedProcPtr UpdateIndexed;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync TrapezoidsProcPtr Trapezoids;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync TrianglesProcPtr Triangles;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} DMXScreenInfo;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* Global variables available to all Xserver/hw/dmx routines. */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern int dmxNumScreens; /**< Number of dmxScreens */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern DMXScreenInfo *dmxScreens; /**< List of outputs */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern XErrorEvent dmxLastErrorEvent; /**< Last error that
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * occurred */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern Bool dmxErrorOccurred; /**< True if an error
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * occurred */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern Bool dmxOffScreenOpt; /**< True if using off
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * screen
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * optimizations */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern Bool dmxSubdividePrimitives; /**< True if using the
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * primitive subdivision
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * optimization */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern Bool dmxLazyWindowCreation; /**< True if using the
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * lazy window creation
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * optimization */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern Bool dmxUseXKB; /**< True if the XKB
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * extension should be
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * used with the backend
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * servers */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern int dmxDepth; /**< Requested depth if
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * non-zero */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifdef GLXEXT
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern Bool dmxGLXProxy; /**< True if glxProxy
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * support is enabled */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern Bool dmxGLXSwapGroupSupport; /**< True if glxProxy
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * support for swap
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * groups and barriers
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * is enabled */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern Bool dmxGLXSyncSwap; /**< True if glxProxy
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * should force an XSync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * request after each
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * swap buffers call */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern Bool dmxGLXFinishSwap; /**< True if glxProxy
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * should force a
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * glFinish request
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * after each swap
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * buffers call */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern char *dmxFontPath; /**< NULL if no font
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * path is set on the
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * command line;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * otherwise, a string
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * of comma separated
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * paths built from the
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * command line
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * specified font
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * paths */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern Bool dmxIgnoreBadFontPaths; /**< True if bad font
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * paths should be
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * ignored during server
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * init */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern Bool dmxAddRemoveScreens; /**< True if add and
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * remove screens support
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * is enabled */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/** Wrap screen or GC function pointer */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define DMX_WRAP(_entry, _newfunc, _saved, _actual) \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncdo { \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync (_saved)->_entry = (_actual)->_entry; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync (_actual)->_entry = (_newfunc); \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} while (0)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/** Unwrap screen or GC function pointer */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define DMX_UNWRAP(_entry, _saved, _actual) \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncdo { \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync (_actual)->_entry = (_saved)->_entry; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} while (0)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* Define the MAXSCREENSALLOC/FREE macros, when MAXSCREENS patch has not
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * been applied to sources. */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifdef MAXSCREENS
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define MAXSCREEN_MAKECONSTSTR1(x) #x
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define MAXSCREEN_MAKECONSTSTR2(x) MAXSCREEN_MAKECONSTSTR1(x)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define MAXSCREEN_FAILED_TXT "Failed at [" \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync MAXSCREEN_MAKECONSTSTR2(__LINE__) ":" __FILE__ "] to allocate object: "
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define _MAXSCREENSALLOCF(o,size,fatal) \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync do { \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync if (!o) { \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync o = calloc((size), sizeof(*(o))); \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync if (!o && fatal) FatalError(MAXSCREEN_FAILED_TXT #o); \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync } \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync } while (0)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define _MAXSCREENSALLOCR(o,size,retval) \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync do { \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync if (!o) { \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync o = calloc((size), sizeof(*(o))); \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync if (!o) return retval; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync } \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync } while (0)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define MAXSCREENSFREE(o) \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync do { \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync free(o); \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync o = NULL; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync } while (0)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define MAXSCREENSALLOC(o) _MAXSCREENSALLOCF(o,MAXSCREENS, 0)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define MAXSCREENSALLOC_FATAL(o) _MAXSCREENSALLOCF(o,MAXSCREENS, 1)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define MAXSCREENSALLOC_RETURN(o,r) _MAXSCREENSALLOCR(o,MAXSCREENS, (r))
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define MAXSCREENSALLOCPLUSONE(o) _MAXSCREENSALLOCF(o,MAXSCREENS+1,0)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define MAXSCREENSALLOCPLUSONE_FATAL(o) _MAXSCREENSALLOCF(o,MAXSCREENS+1,1)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define MAXSCREENSCALLOC(o,m) _MAXSCREENSALLOCF(o,MAXSCREENS*(m),0)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define MAXSCREENSCALLOC_FATAL(o,m) _MAXSCREENSALLOCF(o,MAXSCREENS*(m),1)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern DevPrivateKeyRec dmxGCPrivateKeyRec;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define dmxGCPrivateKey (&dmxGCPrivateKeyRec) /**< Private index for GCs */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern DevPrivateKeyRec dmxWinPrivateKeyRec;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define dmxWinPrivateKey (&dmxWinPrivateKeyRec) /**< Private index for Windows */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern DevPrivateKeyRec dmxPixPrivateKeyRec;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define dmxPixPrivateKey (&dmxPixPrivateKeyRec) /**< Private index for Pixmaps */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern int dmxFontPrivateIndex; /**< Private index for Fonts */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern DevPrivateKeyRec dmxScreenPrivateKeyRec;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define dmxScreenPrivateKey (&dmxScreenPrivateKeyRec) /**< Private index for Screens */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern DevPrivateKeyRec dmxColormapPrivateKeyRec;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define dmxColormapPrivateKey (&dmxColormapPrivateKeyRec) /**< Private index for Colormaps */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern DevPrivateKeyRec dmxPictPrivateKeyRec;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define dmxPictPrivateKey (&dmxPictPrivateKeyRec) /**< Private index for Picts */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern DevPrivateKeyRec dmxGlyphSetPrivateKeyRec;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define dmxGlyphSetPrivateKey (&dmxGlyphSetPrivateKeyRec) /**< Private index for GlyphSets */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid DMXExtensionInit(void);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif /* DMX_H */