File Index

Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals

# dmx.h

Go to the documentation of this file.

    00001 /* $XFree86$ */
    00002 /*
    00003  * Copyright 2001-2003 Red Hat Inc., Durham, North Carolina.
    00004  *
    00005  * All Rights Reserved.
    00006  *
    00007  * Permission is hereby granted, free of charge, to any person obtaining
    00008  * a copy of this software and associated documentation files (the
    00009  * "Software"), to deal in the Software without restriction, including
    00010  * without limitation on the rights to use, copy, modify, merge,
    00011  * publish, distribute, sublicense, and/or sell copies of the Software,
    00012  * and to permit persons to whom the Software is furnished to do so,
    00013  * subject to the following conditions:
    00014  *
    00015  * The above copyright notice and this permission notice (including the
    00016  * next paragraph) shall be included in all copies or substantial
    00017  * portions of the Software.
    00018  *
    00019  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    00020  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    00021  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    00022  * NON-INFRINGEMENT.  IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
    00023  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
    00024  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    00025  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    00026  * SOFTWARE.
    00027  */
    00028
    00029 /*
    00030  * Authors:
    00031  *   Kevin E. Martin <kem@redhat.com>
    00032  *   David H. Dawes <dawes@xfree86.org>
    00033  *   Rickard E. (Rik) Faith <faith@redhat.com>
    00034  *
    00035  */
    00036
    00051 #ifndef DMX_H
    00052 #define DMX_H
    00053
    00054 #include "gcstruct.h"
    00055
    00056 /* Handle client-side include files in one place. */
    00057 #include "dmxclient.h"
    00058
    00059 #include "globals.h"
    00060 #include "scrnintstr.h"
    00061
    00062 #ifdef RENDER
    00063 #include "picturestr.h"
    00064 #endif
    00065
    00066 #ifdef GLXEXT
    00067 #include <GL/glx.h>
    00068 #include <GL/glxint.h>
    00069 #endif
    00070
    00071 typedef enum {
    00072     PosNone = -1,
    00073     PosAbsolute = 0,
    00074     PosRightOf,
    00075     PosLeftOf,
    00076     PosAbove,
    00077     PosBelow,
    00078     PosRelative
    00079 } PositionType;
    00080
    00083 typedef struct _DMXInputInfo DMXInputInfo;
    00084
    00087 typedef struct _DMXStatInfo DMXStatInfo;
    00088
    00090 typedef struct _DMXScreenInfo {
    00091     const char   *name;
    00092     int           index;
    00094     /*---------- Back-end X server information ----------*/
    00095
    00096     Display      *beDisplay;
    00097     int           beWidth;
    00098     int           beHeight;
    00099     int           beDepth;
    00100     int           beBPP;
    00101     int           beXDPI;
    00102     int           beYDPI;
    00104     int           beNumDepths;
    00105     int          *beDepths;
    00107     int           beNumPixmapFormats;
    00108     XPixmapFormatValues *bePixmapFormats;
    00110     int           beNumVisuals;
    00111     XVisualInfo  *beVisuals;
    00112     int           beDefVisualIndex;
    00114     int           beNumDefColormaps;
    00115     Colormap     *beDefColormaps;
    00117     Pixel         beBlackPixel;
    00118     Pixel         beWhitePixel;
    00120     /*---------- Screen window information ----------*/
    00121
    00122     Window        scrnWin;
    00123     int           scrnX;
    00124     int           scrnY;
    00125     int           scrnWidth;
    00126     int           scrnHeight;
    00127     int           scrnXSign;
    00128     int           scrnYSign;
    00131     Drawable      scrnDefDrawables[MAXFORMATS];
    00132
    00133     struct _DMXScreenInfo *next;
    00134     struct _DMXScreenInfo *over;
    00136     /*---------- Root window information ----------*/
    00137
    00138     Window        rootWin;
    00139     int           rootX;
    00140     int           rootY;
    00141     int           rootWidth;
    00142     int           rootHeight;
    00144     int           rootXOrigin;
    00145     int           rootYOrigin;
    00147     /*---------- Shadow framebuffer information ----------*/
    00148
    00149     void         *shadow;
    00150     XlibGC        shadowGC;
    00151     XImage       *shadowFBImage;
    00153     /*---------- Other related information ----------*/
    00154
    00155     int           shared;
    00157     Bool          WMRunningOnBE;
    00158
    00159     Cursor        noCursor;
    00160     Cursor        curCursor;
    00161                                 /* Support for cursors on overlapped
    00162                                  * backend displays. */
    00163     CursorPtr     cursor;
    00164     int           cursorVisible;
    00165     int           cursorNotShared; /* for overlapping screens on a backend */
    00166
    00167     PositionType  where;
    00168     int           whereX;
    00169     int           whereY;
    00170     int           whereRefScreen;
    00172     int           savedTimeout;
    00173     int           dpmsCapable;
    00174     int           dpmsEnabled;
    00175     int           dpmsStandby;
    00176     int           dpmsSuspend;
    00177     int           dpmsOff;
    00179     DMXStatInfo  *stat;
    00180     Bool          needsSync;
    00182 #ifdef GLXEXT
    00183
    00184     int           numGlxVisuals;
    00185     __GLXvisualConfig *glxVisuals;
    00186     int           glxMajorOpcode;
    00187     int           glxErrorBase;
    00188
    00190     __GLXFBConfig *fbconfigs;
    00191     int           numFBConfigs;
    00192 #endif
    00193
    00196     CloseScreenProcPtr             CloseScreen;
    00197     SaveScreenProcPtr              SaveScreen;
    00198
    00199     CreateGCProcPtr                CreateGC;
    00200
    00201     CreateWindowProcPtr            CreateWindow;
    00202     DestroyWindowProcPtr           DestroyWindow;
    00203     PositionWindowProcPtr          PositionWindow;
    00204     ChangeWindowAttributesProcPtr  ChangeWindowAttributes;
    00205     RealizeWindowProcPtr           RealizeWindow;
    00206     UnrealizeWindowProcPtr         UnrealizeWindow;
    00207     RestackWindowProcPtr           RestackWindow;
    00208     WindowExposuresProcPtr         WindowExposures;
    00209     PaintWindowBackgroundProcPtr   PaintWindowBackground;
    00210     PaintWindowBorderProcPtr       PaintWindowBorder;
    00211     CopyWindowProcPtr              CopyWindow;
    00212
    00213     ResizeWindowProcPtr            ResizeWindow;
    00214     ReparentWindowProcPtr          ReparentWindow;
    00215
    00216     ChangeBorderWidthProcPtr       ChangeBorderWidth;
    00217
    00218     GetImageProcPtr                GetImage;
    00219     GetSpansProcPtr                GetSpans;
    00220
    00221     CreatePixmapProcPtr            CreatePixmap;
    00222     DestroyPixmapProcPtr           DestroyPixmap;
    00223     BitmapToRegionProcPtr          BitmapToRegion;
    00224
    00225     RealizeFontProcPtr             RealizeFont;
    00226     UnrealizeFontProcPtr           UnrealizeFont;
    00227
    00228     CreateColormapProcPtr          CreateColormap;
    00229     DestroyColormapProcPtr         DestroyColormap;
    00230     InstallColormapProcPtr         InstallColormap;
    00231     StoreColorsProcPtr             StoreColors;
    00232
    00233 #ifdef SHAPE
    00234     SetShapeProcPtr                SetShape;
    00235 #endif
    00236
    00237 #ifdef RENDER
    00238     CreatePictureProcPtr           CreatePicture;
    00239     DestroyPictureProcPtr          DestroyPicture;
    00240     ChangePictureClipProcPtr       ChangePictureClip;
    00241     DestroyPictureClipProcPtr      DestroyPictureClip;
    00242
    00243     ChangePictureProcPtr           ChangePicture;
    00244     ValidatePictureProcPtr         ValidatePicture;
    00245
    00246     CompositeProcPtr               Composite;
    00247     GlyphsProcPtr                  Glyphs;
    00248     CompositeRectsProcPtr          CompositeRects;
    00249
    00250     InitIndexedProcPtr             InitIndexed;
    00251     CloseIndexedProcPtr            CloseIndexed;
    00252     UpdateIndexedProcPtr           UpdateIndexed;
    00253
    00254     TrapezoidsProcPtr              Trapezoids;
    00255     TrianglesProcPtr               Triangles;
    00256     TriStripProcPtr                TriStrip;
    00257     TriFanProcPtr                  TriFan;
    00258 #endif
    00259 } DMXScreenInfo;
    00260
    00261 /* Global variables available to all Xserver/hw/dmx routines. */
    00262 extern int              dmxNumScreens;
    00263 extern DMXScreenInfo   *dmxScreens;
    00264 extern int              dmxShadowFB;
    00267 extern XErrorEvent      dmxLastErrorEvent;
    00269 extern Bool             dmxErrorOccurred;
    00271 extern Bool             dmxOffScreenOpt;
    00274 extern Bool             dmxSubdividePrimitives;
    00277 extern Bool             dmxLazyWindowCreation;
    00280 extern Bool             dmxUseXKB;
    00284 extern int              dmxDepth;
    00286 extern Bool             dmxNoRender;
    00289 #ifdef GLXEXT
    00290 extern Bool             dmxGLXProxy;
    00292 extern Bool             dmxGLXSwapGroupSupport;
    00296 extern Bool             dmxGLXSyncSwap;
    00300 extern Bool             dmxGLXFinishSwap;
    00305 #endif
    00306 extern char            *dmxFontPath;
    00315 extern Bool             dmxIgnoreBadFontPaths;
    00319 extern Bool             dmxAddRemoveScreens;
    00324 #define DMX_WRAP(_entry, _newfunc, _saved, _actual)                     \
    00325 do {                                                                    \
    00326     (_saved)->_entry  = (_actual)->_entry;                              \
    00327     (_actual)->_entry = (_newfunc);                                     \
    00328 } while (0)
    00329
    00331 #define DMX_UNWRAP(_entry, _saved, _actual)                             \
    00332 do {                                                                    \
    00333     (_actual)->_entry = (_saved)->_entry;                               \
    00334 } while (0)
    00335
    00336 #endif /* DMX_H */