diff options
author | marha <marha@users.sourceforge.net> | 2009-06-28 22:07:26 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2009-06-28 22:07:26 +0000 |
commit | 3562e78743202e43aec8727005182a2558117eca (patch) | |
tree | 8f9113a77d12470c5c851a2a8e4cb02e89df7d43 /xorg-server/hw/dmx/dmx.h | |
download | vcxsrv-3562e78743202e43aec8727005182a2558117eca.tar.gz vcxsrv-3562e78743202e43aec8727005182a2558117eca.tar.bz2 vcxsrv-3562e78743202e43aec8727005182a2558117eca.zip |
Checked in the following released items:
xkeyboard-config-1.4.tar.gz
ttf-bitstream-vera-1.10.tar.gz
font-alias-1.0.1.tar.gz
font-sun-misc-1.0.0.tar.gz
font-sun-misc-1.0.0.tar.gz
font-sony-misc-1.0.0.tar.gz
font-schumacher-misc-1.0.0.tar.gz
font-mutt-misc-1.0.0.tar.gz
font-misc-misc-1.0.0.tar.gz
font-misc-meltho-1.0.0.tar.gz
font-micro-misc-1.0.0.tar.gz
font-jis-misc-1.0.0.tar.gz
font-isas-misc-1.0.0.tar.gz
font-dec-misc-1.0.0.tar.gz
font-daewoo-misc-1.0.0.tar.gz
font-cursor-misc-1.0.0.tar.gz
font-arabic-misc-1.0.0.tar.gz
font-winitzki-cyrillic-1.0.0.tar.gz
font-misc-cyrillic-1.0.0.tar.gz
font-cronyx-cyrillic-1.0.0.tar.gz
font-screen-cyrillic-1.0.1.tar.gz
font-xfree86-type1-1.0.1.tar.gz
font-adobe-utopia-type1-1.0.1.tar.gz
font-ibm-type1-1.0.0.tar.gz
font-bitstream-type1-1.0.0.tar.gz
font-bitstream-speedo-1.0.0.tar.gz
font-bh-ttf-1.0.0.tar.gz
font-bh-type1-1.0.0.tar.gz
font-bitstream-100dpi-1.0.0.tar.gz
font-bh-lucidatypewriter-100dpi-1.0.0.tar.gz
font-bh-100dpi-1.0.0.tar.gz
font-adobe-utopia-100dpi-1.0.1.tar.gz
font-adobe-100dpi-1.0.0.tar.gz
font-util-1.0.1.tar.gz
font-bitstream-75dpi-1.0.0.tar.gz
font-bh-lucidatypewriter-75dpi-1.0.0.tar.gz
font-adobe-utopia-75dpi-1.0.1.tar.gz
font-bh-75dpi-1.0.0.tar.gz
bdftopcf-1.0.1.tar.gz
font-adobe-75dpi-1.0.0.tar.gz
mkfontscale-1.0.6.tar.gz
openssl-0.9.8k.tar.gz
bigreqsproto-1.0.2.tar.gz
xtrans-1.2.2.tar.gz
resourceproto-1.0.2.tar.gz
inputproto-1.4.4.tar.gz
compositeproto-0.4.tar.gz
damageproto-1.1.0.tar.gz
zlib-1.2.3.tar.gz
xkbcomp-1.0.5.tar.gz
freetype-2.3.9.tar.gz
pthreads-w32-2-8-0-release.tar.gz
pixman-0.12.0.tar.gz
kbproto-1.0.3.tar.gz
evieext-1.0.2.tar.gz
fixesproto-4.0.tar.gz
recordproto-1.13.2.tar.gz
randrproto-1.2.2.tar.gz
scrnsaverproto-1.1.0.tar.gz
renderproto-0.9.3.tar.gz
xcmiscproto-1.1.2.tar.gz
fontsproto-2.0.2.tar.gz
xextproto-7.0.3.tar.gz
xproto-7.0.14.tar.gz
libXdmcp-1.0.2.tar.gz
libxkbfile-1.0.5.tar.gz
libfontenc-1.0.4.tar.gz
libXfont-1.3.4.tar.gz
libX11-1.1.5.tar.gz
libXau-1.0.4.tar.gz
libxcb-1.1.tar.gz
xorg-server-1.5.3.tar.gz
Diffstat (limited to 'xorg-server/hw/dmx/dmx.h')
-rw-r--r-- | xorg-server/hw/dmx/dmx.h | 375 |
1 files changed, 375 insertions, 0 deletions
diff --git a/xorg-server/hw/dmx/dmx.h b/xorg-server/hw/dmx/dmx.h new file mode 100644 index 000000000..4fef91537 --- /dev/null +++ b/xorg-server/hw/dmx/dmx.h @@ -0,0 +1,375 @@ +/* + * Copyright 2001-2003 Red Hat Inc., Durham, North Carolina. + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation on the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * Authors: + * Kevin E. Martin <kem@redhat.com> + * David H. Dawes <dawes@xfree86.org> + * Rickard E. (Rik) Faith <faith@redhat.com> + * + */ + +/** \file + * Main header file included by all other DMX-related files. + */ + +/** \mainpage + * - <a href="http://dmx.sourceforge.net">DMX Home Page</a> + * - <a href="http://sourceforge.net/projects/dmx">DMX Project Page (on + * Source Forge)</a> + * - <a href="http://dmx.sourceforge.net/dmx.html">Distributed Multihead + * X design</a>, the design document for DMX + * - <a href="http://dmx.sourceforge.net/DMXSpec.txt">Client-to-Server + * DMX Extension to the X Protocol</a> + */ + +#ifndef DMX_H +#define DMX_H + +#if HAVE_DMX_CONFIG_H +#include <dmx-config.h> +#endif + +#include "gcstruct.h" + +/* Handle client-side include files in one place. */ +#include "dmxclient.h" + +#include "globals.h" +#include "scrnintstr.h" + +#ifdef RENDER +#include "picturestr.h" +#endif + +#ifdef GLXEXT +#include <GL/glx.h> +#include <GL/glxint.h> +#endif + +typedef enum { + PosNone = -1, + PosAbsolute = 0, + PosRightOf, + PosLeftOf, + PosAbove, + PosBelow, + PosRelative +} PositionType; + +/** Provide the typedef globally, but keep the contents opaque outside + * of the input routines. \see dmxinput.h */ +typedef struct _DMXInputInfo DMXInputInfo; + +/** Provide the typedef globally, but keep the contents opaque outside + * of the XSync statistic routines. \see dmxstat.c */ +typedef struct _DMXStatInfo DMXStatInfo; + +/** Global structure containing information about each backend screen. */ +typedef struct _DMXScreenInfo { + const char *name; /**< Name from command line or config file */ + int index; /**< Index into dmxScreens global */ + + /*---------- Back-end X server information ----------*/ + + Display *beDisplay; /**< Back-end X server's display */ + int beWidth; /**< Width of BE display */ + int beHeight; /**< Height of BE display */ + int beDepth; /**< Depth of BE display */ + int beBPP; /**< Bits per pixel of BE display */ + int beXDPI; /**< Horizontal dots per inch of BE */ + int beYDPI; /**< Vertical dots per inch of BE */ + + int beNumDepths; /**< Number of depths on BE server */ + int *beDepths; /**< Depths from BE server */ + + int beNumPixmapFormats; /**< Number of pixmap formats on BE */ + XPixmapFormatValues *bePixmapFormats; /**< Pixmap formats on BE */ + + int beNumVisuals; /**< Number of visuals on BE */ + XVisualInfo *beVisuals; /**< Visuals from BE server */ + int beDefVisualIndex; /**< Default visual index of BE */ + + int beNumDefColormaps; /**< Number of default colormaps */ + Colormap *beDefColormaps; /**< Default colormaps for DMX server */ + + Pixel beBlackPixel; /**< Default black pixel for BE */ + Pixel beWhitePixel; /**< Default white pixel for BE */ + + /*---------- Screen window information ----------*/ + + Window scrnWin; /**< "Screen" window on backend display */ + int scrnX; /**< X offset of "screen" WRT BE display */ + int scrnY; /**< Y offset of "screen" WRT BE display */ + int scrnWidth; /**< Width of "screen" */ + int scrnHeight; /**< Height of "screen" */ + int scrnXSign; /**< X offset sign of "screen" */ + int scrnYSign; /**< Y offset sign of "screen" */ + + /** Default drawables for "screen" */ + Drawable scrnDefDrawables[MAXFORMATS]; + + struct _DMXScreenInfo *next; /**< List of "screens" on same display */ + struct _DMXScreenInfo *over; /**< List of "screens" that overlap */ + + /*---------- Root window information ----------*/ + + Window rootWin; /**< "Root" window on backend display */ + int rootX; /**< X offset of "root" window WRT "screen"*/ + int rootY; /**< Y offset of "root" window WRT "screen"*/ + int rootWidth; /**< Width of "root" window */ + int rootHeight; /**< Height of "root" window */ + + int rootXOrigin; /**< Global X origin of "root" window */ + int rootYOrigin; /**< Global Y origin of "root" window */ + + /*---------- Shadow framebuffer information ----------*/ + + void *shadow; /**< Shadow framebuffer data (if enabled) */ + XlibGC shadowGC; /**< Default GC used by shadow FB code */ + XImage *shadowFBImage; /**< Screen image used by shadow FB code */ + + /*---------- Other related information ----------*/ + + int shared; /**< Non-zero if another Xdmx is running */ + + Bool WMRunningOnBE; + + Cursor noCursor; + Cursor curCursor; + /* Support for cursors on overlapped + * backend displays. */ + CursorPtr cursor; + int cursorVisible; + int cursorNotShared; /* for overlapping screens on a backend */ + + PositionType where; /**< Relative layout information */ + int whereX; /**< Relative layout information */ + int whereY; /**< Relative layout information */ + int whereRefScreen; /**< Relative layout information */ + + int savedTimeout; /**< Original screen saver timeout */ + int dpmsCapable; /**< Non-zero if backend is DPMS capable */ + int dpmsEnabled; /**< Non-zero if DPMS enabled */ + int dpmsStandby; /**< Original DPMS standby value */ + int dpmsSuspend; /**< Original DPMS suspend value */ + int dpmsOff; /**< Original DPMS off value */ + + DMXStatInfo *stat; /**< Statistics about XSync */ + Bool needsSync; /**< True if an XSync is pending */ + +#ifdef GLXEXT + /** Visual information for glxProxy */ + int numGlxVisuals; + __GLXvisualConfig *glxVisuals; + int glxMajorOpcode; + int glxErrorBase; + + /** FB config information for glxProxy */ + __GLXFBConfig *fbconfigs; + int numFBConfigs; +#endif + + /** Function pointers to wrapped screen + * functions */ + CloseScreenProcPtr CloseScreen; + SaveScreenProcPtr SaveScreen; + + CreateGCProcPtr CreateGC; + + CreateWindowProcPtr CreateWindow; + DestroyWindowProcPtr DestroyWindow; + PositionWindowProcPtr PositionWindow; + ChangeWindowAttributesProcPtr ChangeWindowAttributes; + RealizeWindowProcPtr RealizeWindow; + UnrealizeWindowProcPtr UnrealizeWindow; + RestackWindowProcPtr RestackWindow; + WindowExposuresProcPtr WindowExposures; + CopyWindowProcPtr CopyWindow; + + ResizeWindowProcPtr ResizeWindow; + ReparentWindowProcPtr ReparentWindow; + + ChangeBorderWidthProcPtr ChangeBorderWidth; + + GetImageProcPtr GetImage; + GetSpansProcPtr GetSpans; + + CreatePixmapProcPtr CreatePixmap; + DestroyPixmapProcPtr DestroyPixmap; + BitmapToRegionProcPtr BitmapToRegion; + + RealizeFontProcPtr RealizeFont; + UnrealizeFontProcPtr UnrealizeFont; + + CreateColormapProcPtr CreateColormap; + DestroyColormapProcPtr DestroyColormap; + InstallColormapProcPtr InstallColormap; + StoreColorsProcPtr StoreColors; + +#ifdef SHAPE + SetShapeProcPtr SetShape; +#endif + +#ifdef RENDER + CreatePictureProcPtr CreatePicture; + DestroyPictureProcPtr DestroyPicture; + ChangePictureClipProcPtr ChangePictureClip; + DestroyPictureClipProcPtr DestroyPictureClip; + + ChangePictureProcPtr ChangePicture; + ValidatePictureProcPtr ValidatePicture; + + CompositeProcPtr Composite; + GlyphsProcPtr Glyphs; + CompositeRectsProcPtr CompositeRects; + + InitIndexedProcPtr InitIndexed; + CloseIndexedProcPtr CloseIndexed; + UpdateIndexedProcPtr UpdateIndexed; + + TrapezoidsProcPtr Trapezoids; + TrianglesProcPtr Triangles; + TriStripProcPtr TriStrip; + TriFanProcPtr TriFan; +#endif +} DMXScreenInfo; + +/* Global variables available to all Xserver/hw/dmx routines. */ +extern int dmxNumScreens; /**< Number of dmxScreens */ +extern DMXScreenInfo *dmxScreens; /**< List of outputs */ +extern int dmxShadowFB; /**< Non-zero if using + * shadow frame-buffer + * (deprecated) */ +extern XErrorEvent dmxLastErrorEvent; /**< Last error that + * occurred */ +extern Bool dmxErrorOccurred; /**< True if an error + * occurred */ +extern Bool dmxOffScreenOpt; /**< True if using off + * screen + * optimizations */ +extern Bool dmxSubdividePrimitives; /**< True if using the + * primitive subdivision + * optimization */ +extern Bool dmxLazyWindowCreation; /**< True if using the + * lazy window creation + * optimization */ +extern Bool dmxUseXKB; /**< True if the XKB + * extension should be + * used with the backend + * servers */ +extern int dmxDepth; /**< Requested depth if + * non-zero */ +#ifdef GLXEXT +extern Bool dmxGLXProxy; /**< True if glxProxy + * support is enabled */ +extern Bool dmxGLXSwapGroupSupport; /**< True if glxProxy + * support for swap + * groups and barriers + * is enabled */ +extern Bool dmxGLXSyncSwap; /**< True if glxProxy + * should force an XSync + * request after each + * swap buffers call */ +extern Bool dmxGLXFinishSwap; /**< True if glxProxy + * should force a + * glFinish request + * after each swap + * buffers call */ +#endif +extern char *dmxFontPath; /**< NULL if no font + * path is set on the + * command line; + * otherwise, a string + * of comma separated + * paths built from the + * command line + * specified font + * paths */ +extern Bool dmxIgnoreBadFontPaths; /**< True if bad font + * paths should be + * ignored during server + * init */ +extern Bool dmxAddRemoveScreens; /**< True if add and + * remove screens support + * is enabled */ + +/** Wrap screen or GC function pointer */ +#define DMX_WRAP(_entry, _newfunc, _saved, _actual) \ +do { \ + (_saved)->_entry = (_actual)->_entry; \ + (_actual)->_entry = (_newfunc); \ +} while (0) + +/** Unwrap screen or GC function pointer */ +#define DMX_UNWRAP(_entry, _saved, _actual) \ +do { \ + (_actual)->_entry = (_saved)->_entry; \ +} while (0) + +/* Define the MAXSCREENSALLOC/FREE macros, when MAXSCREENS patch has not + * been applied to sources. */ +#ifdef MAXSCREENS +#define MAXSCREEN_MAKECONSTSTR1(x) #x +#define MAXSCREEN_MAKECONSTSTR2(x) MAXSCREEN_MAKECONSTSTR1(x) + +#define MAXSCREEN_FAILED_TXT "Failed at [" \ + MAXSCREEN_MAKECONSTSTR2(__LINE__) ":" __FILE__ "] to allocate object: " + +#define _MAXSCREENSALLOCF(o,size,fatal) \ + do { \ + if (!o) { \ + o = xalloc((size) * sizeof(*(o))); \ + if (o) memset(o, 0, (size) * sizeof(*(o))); \ + if (!o && fatal) FatalError(MAXSCREEN_FAILED_TXT #o); \ + } \ + } while (0) +#define _MAXSCREENSALLOCR(o,size,retval) \ + do { \ + if (!o) { \ + o = xalloc((size) * sizeof(*(o))); \ + if (o) memset(o, 0, (size) * sizeof(*(o))); \ + if (!o) return retval; \ + } \ + } while (0) + +#define MAXSCREENSFREE(o) \ + do { \ + if (o) xfree(o); \ + o = NULL; \ + } while (0) + +#define MAXSCREENSALLOC(o) _MAXSCREENSALLOCF(o,MAXSCREENS, 0) +#define MAXSCREENSALLOC_FATAL(o) _MAXSCREENSALLOCF(o,MAXSCREENS, 1) +#define MAXSCREENSALLOC_RETURN(o,r) _MAXSCREENSALLOCR(o,MAXSCREENS, (r)) +#define MAXSCREENSALLOCPLUSONE(o) _MAXSCREENSALLOCF(o,MAXSCREENS+1,0) +#define MAXSCREENSALLOCPLUSONE_FATAL(o) _MAXSCREENSALLOCF(o,MAXSCREENS+1,1) +#define MAXSCREENSCALLOC(o,m) _MAXSCREENSALLOCF(o,MAXSCREENS*(m),0) +#define MAXSCREENSCALLOC_FATAL(o,m) _MAXSCREENSALLOCF(o,MAXSCREENS*(m),1) +#endif + +#endif /* DMX_H */ |