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 */

Generated June 13, 2004 for Distributed Multihead X by doxygen 1.3.4.