1255 lines
		
	
	
		
			33 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			1255 lines
		
	
	
		
			33 KiB
		
	
	
	
		
			C
		
	
	
	
| #ifdef HAVE_XORG_CONFIG_H
 | |
| #include <xorg-config.h>
 | |
| #endif
 | |
| 
 | |
| #include "misc.h"
 | |
| #include "xf86.h"
 | |
| #include "xf86_OSproc.h"
 | |
| 
 | |
| #include <X11/X.h>
 | |
| #include "colormapst.h"
 | |
| #include "scrnintstr.h"
 | |
| #include "screenint.h"
 | |
| #include "gcstruct.h"
 | |
| #include "pixmapstr.h"
 | |
| #include "pixmap.h"
 | |
| #include "windowstr.h"
 | |
| #include "window.h"
 | |
| #include "xf86str.h"
 | |
| #include "xf86RAC.h"
 | |
| #include "mipointer.h"
 | |
| #include "mipointrst.h"
 | |
| #ifdef RENDER
 | |
| # include "picturestr.h"
 | |
| #endif
 | |
| 
 | |
| #ifdef DEBUG
 | |
| #define DPRINT_S(x,y) ErrorF(x ": %i\n",y);
 | |
| #define DPRINT(x) ErrorF(x "\n");
 | |
| #else
 | |
| #define DPRINT_S(x,y)
 | |
| #define DPRINT(x)
 | |
| #endif
 | |
| 
 | |
| #define WRAP_SCREEN(x,y)     {pScreenPriv->x = pScreen->x;\
 | |
|                               pScreen->x = y;}
 | |
| #define WRAP_SCREEN_COND(x,y,cond) \
 | |
|                              {pScreenPriv->x = pScreen->x;\
 | |
|                                 if (flag & (cond))\
 | |
|                                   pScreen->x = y;}
 | |
| #define UNWRAP_SCREEN(x)    pScreen->x = pScreenPriv->x
 | |
| 
 | |
| #define SCREEN_PROLOG(x) \
 | |
|             pScreen->x = \
 | |
|              ((RACScreenPtr) (pScreen)->devPrivates[RACScreenIndex].ptr)->x
 | |
| #define SCREEN_EPILOG(x,y) pScreen->x = y;
 | |
| 
 | |
| #define WRAP_PICT_COND(x,y,cond) if (ps)\
 | |
| 				{pScreenPriv->x = ps->x;\
 | |
| 					if (flag & (cond))\
 | |
| 					ps->x = y;}
 | |
| #define UNWRAP_PICT(x) 	if (ps) {ps->x = pScreenPriv->x;}
 | |
| 
 | |
| #define PICTURE_PROLOGUE(field) \
 | |
| 	ps->field = \
 | |
| 	((RACScreenPtr) (pScreen)->devPrivates[RACScreenIndex].ptr)->field
 | |
| #define PICTURE_EPILOGUE(field, wrap) \
 | |
| 	ps->field = wrap
 | |
| 
 | |
| #define WRAP_SCREEN_INFO(x,y) {pScreenPriv->x = pScrn->x;\
 | |
|                                    pScrn->x = y;}
 | |
| #define WRAP_SCREEN_INFO_COND(x,y,cond) \
 | |
|                               {pScreenPriv->x = pScrn->x;\
 | |
| 	                          if (flag & (cond))\
 | |
|                                      pScrn->x = y;}
 | |
| #define UNWRAP_SCREEN_INFO(x)    pScrn->x = pScreenPriv->x
 | |
| 
 | |
| #define SPRITE_PROLOG     miPointerScreenPtr PointPriv = \
 | |
| (miPointerScreenPtr)pScreen->devPrivates[miPointerScreenIndex].ptr;\
 | |
|                                RACScreenPtr pScreenPriv = \
 | |
| ((RACScreenPtr) (pScreen)->devPrivates[RACScreenIndex].ptr);\
 | |
| 			PointPriv->spriteFuncs = pScreenPriv->miSprite;
 | |
| #define SPRITE_EPILOG pScreenPriv->miSprite = PointPriv->spriteFuncs;\
 | |
| 	              PointPriv->spriteFuncs  = &RACSpriteFuncs;
 | |
| #define WRAP_SPRITE_COND(cond){pScreenPriv->miSprite = PointPriv->spriteFuncs;\
 | |
| 	                      if(flag & (cond))\
 | |
| 	                      PointPriv->spriteFuncs  = &RACSpriteFuncs;}
 | |
| #define UNWRAP_SPRITE PointPriv->spriteFuncs = pScreenPriv->miSprite
 | |
|     
 | |
| 	    
 | |
| #define GC_WRAP(x) pGCPriv->wrapOps = (x)->ops;\
 | |
| 		 pGCPriv->wrapFuncs = (x)->funcs;\
 | |
|                            (x)->ops = &RACGCOps;\
 | |
|                          (x)->funcs = &RACGCFuncs;
 | |
| #define GC_UNWRAP(x)\
 | |
|            RACGCPtr  pGCPriv = (RACGCPtr) (x)->devPrivates[RACGCIndex].ptr;\
 | |
|                     (x)->ops = pGCPriv->wrapOps;\
 | |
| 	          (x)->funcs = pGCPriv->wrapFuncs;
 | |
| 
 | |
| #define GC_SCREEN register ScrnInfoPtr pScrn \
 | |
|                            = xf86Screens[pGC->pScreen->myNum]
 | |
| 
 | |
| #define ENABLE xf86EnableAccess(xf86Screens[pScreen->myNum])
 | |
| #define ENABLE_GC  xf86EnableAccess(xf86Screens[pGC->pScreen->myNum])
 | |
| 
 | |
| typedef struct _RACScreen {
 | |
|     CreateGCProcPtr 		CreateGC;
 | |
|     CloseScreenProcPtr 		CloseScreen;
 | |
|     GetImageProcPtr 		GetImage;
 | |
|     GetSpansProcPtr 		GetSpans;
 | |
|     SourceValidateProcPtr 	SourceValidate;
 | |
|     PaintWindowBackgroundProcPtr PaintWindowBackground;
 | |
|     PaintWindowBorderProcPtr 	PaintWindowBorder;
 | |
|     CopyWindowProcPtr 		CopyWindow;
 | |
|     ClearToBackgroundProcPtr 	ClearToBackground;
 | |
|     BSFuncRec 			BackingStoreFuncs;
 | |
|     CreatePixmapProcPtr         CreatePixmap;
 | |
|     SaveScreenProcPtr           SaveScreen;
 | |
|     /* Colormap */
 | |
|     StoreColorsProcPtr          StoreColors;
 | |
|     /* Cursor */
 | |
|     DisplayCursorProcPtr         DisplayCursor;
 | |
|     RealizeCursorProcPtr         RealizeCursor;
 | |
|     UnrealizeCursorProcPtr       UnrealizeCursor;
 | |
|     RecolorCursorProcPtr         RecolorCursor;
 | |
|     SetCursorPositionProcPtr     SetCursorPosition;
 | |
|     void                         (*AdjustFrame)(int,int,int,int);
 | |
|     Bool                         (*SwitchMode)(int, DisplayModePtr,int);
 | |
|     Bool                         (*EnterVT)(int, int);
 | |
|     void                         (*LeaveVT)(int, int);
 | |
|     void                         (*FreeScreen)(int, int);
 | |
|     miPointerSpriteFuncPtr       miSprite;
 | |
| #ifdef RENDER
 | |
|     CompositeProcPtr			Composite;
 | |
|     GlyphsProcPtr			Glyphs;
 | |
|     CompositeRectsProcPtr		CompositeRects;
 | |
| #endif
 | |
| } RACScreenRec, *RACScreenPtr;
 | |
| 
 | |
| typedef struct _RACGC {
 | |
|     GCOps 	*wrapOps;
 | |
|     GCFuncs 	*wrapFuncs;
 | |
| } RACGCRec, *RACGCPtr;
 | |
| 
 | |
| /* Screen funcs */		     
 | |
| static Bool RACCloseScreen (int i, ScreenPtr pScreen);
 | |
| static void RACGetImage (DrawablePtr pDrawable, int sx, int sy,
 | |
| 			 int w, int h, unsigned int format,
 | |
| 			 unsigned long planemask, char *pdstLine);
 | |
| static void RACGetSpans (DrawablePtr pDrawable, int wMax, DDXPointPtr	ppt,
 | |
| 			 int *pwidth, int nspans, char	*pdstStart);
 | |
| static void RACSourceValidate (DrawablePtr	pDrawable,
 | |
| 			       int x, int y, int width, int height );
 | |
| static void RACPaintWindowBackground(WindowPtr pWin, RegionPtr prgn, int what);
 | |
| static void RACPaintWindowBorder(WindowPtr pWin, RegionPtr prgn, int what);
 | |
| static void RACCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
 | |
| 			  RegionPtr prgnSrc );
 | |
| static void RACClearToBackground (WindowPtr pWin, int x, int y,
 | |
| 				  int w, int h, Bool generateExposures );
 | |
| static void RACSaveAreas (PixmapPtr pPixmap, RegionPtr prgnSave,
 | |
| 			  int xorg, int yorg, WindowPtr pWin);
 | |
| static void RACRestoreAreas (PixmapPtr pPixmap, RegionPtr prgnRestore,
 | |
| 			     int xorg, int yorg, WindowPtr pWin);
 | |
| static PixmapPtr RACCreatePixmap(ScreenPtr pScreen, int w, int h, int depth);
 | |
| static Bool  RACCreateGC(GCPtr pGC);
 | |
| static Bool RACSaveScreen(ScreenPtr pScreen, Bool unblank);
 | |
| static void RACStoreColors (ColormapPtr pmap, int ndef, xColorItem *pdefs);
 | |
| static void RACRecolorCursor (ScreenPtr pScreen, CursorPtr pCurs,
 | |
| 			      Bool displayed);
 | |
| static Bool RACRealizeCursor (ScreenPtr   pScreen, CursorPtr   pCursor);
 | |
| static Bool RACUnrealizeCursor (ScreenPtr   pScreen, CursorPtr   pCursor);
 | |
| static Bool RACDisplayCursor (ScreenPtr pScreen, CursorPtr pCursor);
 | |
| static Bool RACSetCursorPosition (ScreenPtr   pScreen, int x, int y,
 | |
| 				  Bool generateEvent);
 | |
| static void RACAdjustFrame(int index, int x, int y, int flags);
 | |
| static Bool RACSwitchMode(int index, DisplayModePtr mode, int flags);
 | |
| static Bool RACEnterVT(int index, int flags);
 | |
| static void RACLeaveVT(int index, int flags);
 | |
| static void RACFreeScreen(int index, int flags);
 | |
| /* GC funcs */
 | |
| static void RACValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDraw);
 | |
| static void RACChangeGC(GCPtr pGC, unsigned long mask);
 | |
| static void RACCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst);
 | |
| static void RACDestroyGC(GCPtr pGC);
 | |
| static void RACChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects);
 | |
| static void RACDestroyClip(GCPtr pGC);
 | |
| static void RACCopyClip(GCPtr pgcDst, GCPtr pgcSrc);
 | |
| /* GC ops */
 | |
| static void RACFillSpans( DrawablePtr pDraw, GC *pGC, int nInit,	
 | |
| 			  DDXPointPtr pptInit, int *pwidthInit, int fSorted );
 | |
| static void RACSetSpans(DrawablePtr pDraw, GCPtr pGC, char *pcharsrc,
 | |
| 			register DDXPointPtr ppt, int *pwidth, int nspans,
 | |
| 			int fSorted );
 | |
| static void RACPutImage(DrawablePtr pDraw, GCPtr pGC, int depth, 
 | |
| 			int x, int y, int w, int h, int	leftPad,
 | |
| 			int format, char *pImage );
 | |
| static RegionPtr RACCopyArea(DrawablePtr pSrc, DrawablePtr pDst,
 | |
| 			     GC *pGC, int srcx, int srcy,
 | |
| 			     int width, int height,
 | |
| 			     int dstx, int dsty );
 | |
| static RegionPtr RACCopyPlane(DrawablePtr pSrc, DrawablePtr pDst,
 | |
| 			      GCPtr pGC, int srcx, int srcy,
 | |
| 			      int width, int height, int dstx, int dsty,
 | |
| 			      unsigned long bitPlane );
 | |
| static void RACPolyPoint(DrawablePtr pDraw, GCPtr pGC, int mode,
 | |
| 			 int npt, xPoint *pptInit );
 | |
| static void RACPolylines(DrawablePtr pDraw, GCPtr pGC, int mode,
 | |
| 			 int npt, DDXPointPtr pptInit );
 | |
| static void RACPolySegment(DrawablePtr	pDraw, GCPtr pGC, int nseg,
 | |
| 			   xSegment	*pSeg );
 | |
| static void RACPolyRectangle(DrawablePtr  pDraw, GCPtr pGC, int  nRectsInit,
 | |
| 			     xRectangle  *pRectsInit );
 | |
| static void RACPolyArc(DrawablePtr pDraw, GCPtr	pGC, int narcs,
 | |
| 		       xArc *parcs );
 | |
| static void RACFillPolygon(DrawablePtr	pDraw, GCPtr pGC, int shape, int mode,
 | |
| 			   int count, DDXPointPtr ptsIn );
 | |
| static void RACPolyFillRect( DrawablePtr pDraw, GCPtr	pGC, int nrectFill, 
 | |
| 			     xRectangle	*prectInit );
 | |
| static void RACPolyFillArc(DrawablePtr	pDraw, GCPtr pGC, int	narcs,
 | |
| 			   xArc	*parcs );
 | |
| static int RACPolyText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
 | |
| 			int count,  char *chars );
 | |
| static int RACPolyText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
 | |
| 			 int count, unsigned short *chars );
 | |
| static void RACImageText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
 | |
| 			  int 	count, char *chars );
 | |
| static void RACImageText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
 | |
| 			   int 	count, unsigned short *chars );
 | |
| static void RACImageGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
 | |
| 			     int yInit, unsigned int nglyph,
 | |
| 			     CharInfoPtr *ppci, pointer pglyphBase );
 | |
| static void RACPolyGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
 | |
| 			    int yInit, unsigned int nglyph,
 | |
| 			    CharInfoPtr *ppci, pointer pglyphBase );
 | |
| static void RACPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDraw,
 | |
| 			  int dx, int dy, int xOrg, int yOrg );
 | |
| /* miSpriteFuncs */
 | |
| static Bool RACSpriteRealizeCursor(ScreenPtr pScreen, CursorPtr pCur);
 | |
| static Bool RACSpriteUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCur);
 | |
| static void RACSpriteSetCursor(ScreenPtr pScreen, CursorPtr pCur,
 | |
| 			       int x, int y);
 | |
| static void RACSpriteMoveCursor(ScreenPtr pScreen, int x, int y);
 | |
| #ifdef RENDER
 | |
| static void RACComposite(CARD8 op, PicturePtr pSrc,  PicturePtr pMask,
 | |
| 			 PicturePtr pDst, INT16 xSrc, INT16 ySrc,
 | |
| 			 INT16 xMask, INT16 yMask, INT16 xDst,
 | |
| 			 INT16 yDst, CARD16 width, CARD16 height);
 | |
| static void RACGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
 | |
| 		      PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc,
 | |
| 		      int nlist, GlyphListPtr list, GlyphPtr *glyphs);
 | |
| static void RACCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color,
 | |
| 			      int nRect, xRectangle *rects);
 | |
| #endif
 | |
| 
 | |
| static GCFuncs RACGCFuncs = {
 | |
|     RACValidateGC, RACChangeGC, RACCopyGC, RACDestroyGC,
 | |
|     RACChangeClip, RACDestroyClip, RACCopyClip
 | |
| };
 | |
| 
 | |
| static GCOps RACGCOps = {
 | |
|     RACFillSpans, RACSetSpans, RACPutImage, RACCopyArea, 
 | |
|     RACCopyPlane, RACPolyPoint, RACPolylines, RACPolySegment, 
 | |
|     RACPolyRectangle, RACPolyArc, RACFillPolygon, RACPolyFillRect, 
 | |
|     RACPolyFillArc, RACPolyText8, RACPolyText16, RACImageText8, 
 | |
|     RACImageText16, RACImageGlyphBlt, RACPolyGlyphBlt, RACPushPixels,
 | |
|     {NULL}		/* devPrivate */
 | |
| };
 | |
| 
 | |
| static miPointerSpriteFuncRec RACSpriteFuncs = {
 | |
|     RACSpriteRealizeCursor, RACSpriteUnrealizeCursor, RACSpriteSetCursor,
 | |
|     RACSpriteMoveCursor
 | |
| };
 | |
| 
 | |
| static int RACScreenIndex = -1;
 | |
| static int RACGCIndex = -1;
 | |
| static unsigned long RACGeneration = 0;
 | |
| 
 | |
| 
 | |
| Bool 
 | |
| xf86RACInit(ScreenPtr pScreen, unsigned int flag)
 | |
| {
 | |
|     ScrnInfoPtr pScrn;
 | |
|     RACScreenPtr pScreenPriv;
 | |
|     miPointerScreenPtr PointPriv;
 | |
| #ifdef RENDER
 | |
|     PictureScreenPtr	ps = GetPictureScreenIfSet(pScreen);
 | |
| #endif
 | |
| 
 | |
|     pScrn = xf86Screens[pScreen->myNum];
 | |
|     PointPriv = (miPointerScreenPtr)pScreen->devPrivates[miPointerScreenIndex].ptr;
 | |
| 
 | |
|     DPRINT_S("RACInit",pScreen->myNum);
 | |
|     if (RACGeneration != serverGeneration) {
 | |
| 	if (	((RACScreenIndex = AllocateScreenPrivateIndex()) < 0) ||
 | |
| 		((RACGCIndex = AllocateGCPrivateIndex()) < 0))
 | |
| 	    return FALSE;
 | |
| 
 | |
| 	RACGeneration = serverGeneration;
 | |
|     }
 | |
| 
 | |
|     if (!AllocateGCPrivate(pScreen, RACGCIndex, sizeof(RACGCRec)))
 | |
| 	return FALSE;
 | |
| 
 | |
|     if (!(pScreenPriv = xalloc(sizeof(RACScreenRec))))
 | |
| 	return FALSE;
 | |
| 
 | |
|     pScreen->devPrivates[RACScreenIndex].ptr = (pointer)pScreenPriv;
 | |
|     
 | |
|     WRAP_SCREEN(CloseScreen, RACCloseScreen);
 | |
|     WRAP_SCREEN(SaveScreen, RACSaveScreen);
 | |
|     WRAP_SCREEN_COND(CreateGC, RACCreateGC, RAC_FB);
 | |
|     WRAP_SCREEN_COND(GetImage, RACGetImage, RAC_FB);
 | |
|     WRAP_SCREEN_COND(GetSpans, RACGetSpans, RAC_FB);
 | |
|     WRAP_SCREEN_COND(SourceValidate, RACSourceValidate, RAC_FB);
 | |
|     WRAP_SCREEN_COND(PaintWindowBackground, RACPaintWindowBackground, RAC_FB);
 | |
|     WRAP_SCREEN_COND(PaintWindowBorder, RACPaintWindowBorder, RAC_FB);
 | |
|     WRAP_SCREEN_COND(CopyWindow, RACCopyWindow, RAC_FB);
 | |
|     WRAP_SCREEN_COND(ClearToBackground, RACClearToBackground, RAC_FB);
 | |
|     WRAP_SCREEN_COND(CreatePixmap, RACCreatePixmap, RAC_FB);
 | |
|     WRAP_SCREEN_COND(BackingStoreFuncs.RestoreAreas, RACRestoreAreas, RAC_FB);
 | |
|     WRAP_SCREEN_COND(BackingStoreFuncs.SaveAreas, RACSaveAreas, RAC_FB);
 | |
|     WRAP_SCREEN_COND(StoreColors, RACStoreColors, RAC_COLORMAP);
 | |
|     WRAP_SCREEN_COND(DisplayCursor, RACDisplayCursor, RAC_CURSOR);
 | |
|     WRAP_SCREEN_COND(RealizeCursor, RACRealizeCursor, RAC_CURSOR);
 | |
|     WRAP_SCREEN_COND(UnrealizeCursor, RACUnrealizeCursor, RAC_CURSOR);
 | |
|     WRAP_SCREEN_COND(RecolorCursor, RACRecolorCursor, RAC_CURSOR);
 | |
|     WRAP_SCREEN_COND(SetCursorPosition, RACSetCursorPosition, RAC_CURSOR);
 | |
| #ifdef RENDER
 | |
|     WRAP_PICT_COND(Composite,RACComposite,RAC_FB);
 | |
|     WRAP_PICT_COND(Glyphs,RACGlyphs,RAC_FB);    
 | |
|     WRAP_PICT_COND(CompositeRects,RACCompositeRects,RAC_FB);    
 | |
| #endif
 | |
|     WRAP_SCREEN_INFO_COND(AdjustFrame, RACAdjustFrame, RAC_VIEWPORT);
 | |
|     WRAP_SCREEN_INFO(SwitchMode, RACSwitchMode);
 | |
|     WRAP_SCREEN_INFO(EnterVT, RACEnterVT);
 | |
|     WRAP_SCREEN_INFO(LeaveVT, RACLeaveVT);
 | |
|     WRAP_SCREEN_INFO(FreeScreen, RACFreeScreen);
 | |
|     WRAP_SPRITE_COND(RAC_CURSOR);
 | |
| 
 | |
|     return TRUE;
 | |
| }
 | |
| 
 | |
| /* Screen funcs */
 | |
| static Bool
 | |
| RACCloseScreen (int i, ScreenPtr pScreen)
 | |
| {
 | |
|     ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
 | |
|     RACScreenPtr pScreenPriv = 
 | |
| 	(RACScreenPtr) pScreen->devPrivates[RACScreenIndex].ptr;
 | |
|     miPointerScreenPtr PointPriv
 | |
| 	= (miPointerScreenPtr)pScreen->devPrivates[miPointerScreenIndex].ptr;
 | |
| #ifdef RENDER
 | |
|     PictureScreenPtr	ps = GetPictureScreenIfSet(pScreen);
 | |
| #endif
 | |
| 
 | |
|     DPRINT_S("RACCloseScreen",pScreen->myNum);
 | |
|     UNWRAP_SCREEN(CreateGC);
 | |
|     UNWRAP_SCREEN(CloseScreen);
 | |
|     UNWRAP_SCREEN(GetImage);
 | |
|     UNWRAP_SCREEN(GetSpans);
 | |
|     UNWRAP_SCREEN(SourceValidate);
 | |
|     UNWRAP_SCREEN(PaintWindowBackground);
 | |
|     UNWRAP_SCREEN(PaintWindowBorder);
 | |
|     UNWRAP_SCREEN(CopyWindow);
 | |
|     UNWRAP_SCREEN(ClearToBackground);
 | |
|     UNWRAP_SCREEN(BackingStoreFuncs.RestoreAreas);
 | |
|     UNWRAP_SCREEN(BackingStoreFuncs.SaveAreas);
 | |
|     UNWRAP_SCREEN(SaveScreen);
 | |
|     UNWRAP_SCREEN(StoreColors);
 | |
|     UNWRAP_SCREEN(DisplayCursor);
 | |
|     UNWRAP_SCREEN(RealizeCursor);
 | |
|     UNWRAP_SCREEN(UnrealizeCursor);
 | |
|     UNWRAP_SCREEN(RecolorCursor);
 | |
|     UNWRAP_SCREEN(SetCursorPosition);
 | |
| #ifdef RENDER
 | |
|     UNWRAP_PICT(Composite);
 | |
|     UNWRAP_PICT(Glyphs);    
 | |
|     UNWRAP_PICT(CompositeRects);    
 | |
| #endif
 | |
|     UNWRAP_SCREEN_INFO(AdjustFrame);
 | |
|     UNWRAP_SCREEN_INFO(SwitchMode);
 | |
|     UNWRAP_SCREEN_INFO(EnterVT);
 | |
|     UNWRAP_SCREEN_INFO(LeaveVT);
 | |
|     UNWRAP_SCREEN_INFO(FreeScreen);
 | |
|     UNWRAP_SPRITE;
 | |
|         
 | |
|     xfree ((pointer) pScreenPriv);
 | |
| 
 | |
|     if (xf86Screens[pScreen->myNum]->vtSema) {
 | |
| 	xf86EnterServerState(SETUP);
 | |
| 	ENABLE;
 | |
|     }
 | |
|     return (*pScreen->CloseScreen) (i, pScreen);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACGetImage (
 | |
|     DrawablePtr pDrawable,
 | |
|     int	sx, int sy, int w, int h,
 | |
|     unsigned int    format,
 | |
|     unsigned long   planemask,
 | |
|     char	    *pdstLine 
 | |
|     )
 | |
| {
 | |
|     ScreenPtr pScreen = pDrawable->pScreen;
 | |
|     DPRINT_S("RACGetImage",pScreen->myNum);
 | |
|     SCREEN_PROLOG(GetImage);
 | |
|     if (xf86Screens[pScreen->myNum]->vtSema) {
 | |
| 	ENABLE;
 | |
|     }
 | |
|     (*pScreen->GetImage) (pDrawable, sx, sy, w, h,
 | |
| 			  format, planemask, pdstLine);
 | |
|     SCREEN_EPILOG (GetImage, RACGetImage);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACGetSpans (
 | |
|     DrawablePtr	pDrawable,
 | |
|     int		wMax,
 | |
|     DDXPointPtr	ppt,
 | |
|     int		*pwidth,
 | |
|     int		nspans,
 | |
|     char	*pdstStart
 | |
|     )
 | |
| {
 | |
|     ScreenPtr	    pScreen = pDrawable->pScreen;
 | |
| 
 | |
|     DPRINT_S("RACGetSpans",pScreen->myNum);
 | |
|     SCREEN_PROLOG (GetSpans);
 | |
|     ENABLE;
 | |
|     (*pScreen->GetSpans) (pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
 | |
|     SCREEN_EPILOG (GetSpans, RACGetSpans);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACSourceValidate (
 | |
|     DrawablePtr	pDrawable,
 | |
|     int	x, int y, int width, int height )
 | |
| {
 | |
|     ScreenPtr	pScreen = pDrawable->pScreen;
 | |
|     DPRINT_S("RACSourceValidate",pScreen->myNum);
 | |
|     SCREEN_PROLOG (SourceValidate);
 | |
|     ENABLE;
 | |
|     if (pScreen->SourceValidate)
 | |
| 	(*pScreen->SourceValidate) (pDrawable, x, y, width, height);
 | |
|     SCREEN_EPILOG (SourceValidate, RACSourceValidate);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACPaintWindowBackground(
 | |
|   WindowPtr pWin,
 | |
|   RegionPtr prgn,
 | |
|   int what 
 | |
|   )
 | |
| {
 | |
|     ScreenPtr pScreen = pWin->drawable.pScreen;
 | |
| 
 | |
|     DPRINT_S("RACPaintWindowBackground",pScreen->myNum);
 | |
|     SCREEN_PROLOG (PaintWindowBackground);
 | |
|     ENABLE;
 | |
|     (*pScreen->PaintWindowBackground) (pWin, prgn, what);
 | |
|     SCREEN_EPILOG (PaintWindowBackground, RACPaintWindowBackground);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACPaintWindowBorder(
 | |
|   WindowPtr pWin,
 | |
|   RegionPtr prgn,
 | |
|   int what 
 | |
| )
 | |
| {
 | |
|     ScreenPtr pScreen = pWin->drawable.pScreen;
 | |
| 
 | |
|     DPRINT_S("RACPaintWindowBorder",pScreen->myNum);
 | |
|     SCREEN_PROLOG (PaintWindowBorder);
 | |
|     ENABLE;
 | |
|     (*pScreen->PaintWindowBorder) (pWin, prgn, what);
 | |
|     SCREEN_EPILOG (PaintWindowBorder, RACPaintWindowBorder);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACCopyWindow(
 | |
|     WindowPtr pWin,
 | |
|     DDXPointRec ptOldOrg,
 | |
|     RegionPtr prgnSrc )
 | |
| {
 | |
|     ScreenPtr pScreen = pWin->drawable.pScreen;
 | |
| 
 | |
|     DPRINT_S("RACCopyWindow",pScreen->myNum);
 | |
|     SCREEN_PROLOG (CopyWindow);
 | |
|     ENABLE;
 | |
|     (*pScreen->CopyWindow) (pWin, ptOldOrg, prgnSrc);
 | |
|     SCREEN_EPILOG (CopyWindow, RACCopyWindow);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACClearToBackground (
 | |
|     WindowPtr pWin,
 | |
|     int x, int y,
 | |
|     int w, int h,
 | |
|     Bool generateExposures )
 | |
| {
 | |
|     ScreenPtr pScreen = pWin->drawable.pScreen;
 | |
| 
 | |
|     DPRINT_S("RACClearToBackground",pScreen->myNum);
 | |
|     SCREEN_PROLOG ( ClearToBackground);
 | |
|     ENABLE;
 | |
|     (*pScreen->ClearToBackground) (pWin, x, y, w, h, generateExposures);
 | |
|     SCREEN_EPILOG (ClearToBackground, RACClearToBackground);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACSaveAreas (
 | |
|     PixmapPtr pPixmap,
 | |
|     RegionPtr prgnSave,
 | |
|     int       xorg,
 | |
|     int       yorg,
 | |
|     WindowPtr pWin
 | |
|     )
 | |
| {
 | |
|     ScreenPtr pScreen = pPixmap->drawable.pScreen;
 | |
|     DPRINT_S("RACSaveAreas",pScreen->myNum);
 | |
|     SCREEN_PROLOG (BackingStoreFuncs.SaveAreas);
 | |
|     ENABLE;
 | |
|     (*pScreen->BackingStoreFuncs.SaveAreas) (
 | |
| 	pPixmap, prgnSave, xorg, yorg, pWin);
 | |
| 
 | |
|     SCREEN_EPILOG (BackingStoreFuncs.SaveAreas, RACSaveAreas);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACRestoreAreas (    
 | |
|     PixmapPtr pPixmap,
 | |
|     RegionPtr prgnRestore,
 | |
|     int       xorg,
 | |
|     int       yorg,
 | |
|     WindowPtr pWin 
 | |
|     )
 | |
| {
 | |
|     ScreenPtr pScreen = pPixmap->drawable.pScreen;
 | |
| 
 | |
|     DPRINT_S("RACRestoreAreas",pScreen->myNum);
 | |
|     SCREEN_PROLOG (BackingStoreFuncs.RestoreAreas);
 | |
|     ENABLE;
 | |
|     (*pScreen->BackingStoreFuncs.RestoreAreas) (
 | |
| 	pPixmap, prgnRestore, xorg, yorg, pWin);
 | |
| 
 | |
|     SCREEN_EPILOG ( BackingStoreFuncs.RestoreAreas, RACRestoreAreas);
 | |
| }
 | |
| 
 | |
| static PixmapPtr 
 | |
| RACCreatePixmap(ScreenPtr pScreen, int w, int h, int depth)
 | |
| {
 | |
|     PixmapPtr pPix;
 | |
| 
 | |
|     DPRINT_S("RACCreatePixmap",pScreen->myNum);
 | |
|     SCREEN_PROLOG ( CreatePixmap);
 | |
|     ENABLE;
 | |
|     pPix = (*pScreen->CreatePixmap) (pScreen, w, h, depth);
 | |
|     SCREEN_EPILOG (CreatePixmap, RACCreatePixmap);
 | |
| 
 | |
|     return pPix;
 | |
| }
 | |
| 
 | |
| static Bool 
 | |
| RACSaveScreen(ScreenPtr pScreen, Bool unblank)
 | |
| {
 | |
|     Bool val;
 | |
| 
 | |
|     DPRINT_S("RACSaveScreen",pScreen->myNum);
 | |
|     SCREEN_PROLOG (SaveScreen);
 | |
|     ENABLE;
 | |
|     val = (*pScreen->SaveScreen) (pScreen, unblank);
 | |
|     SCREEN_EPILOG (SaveScreen, RACSaveScreen);
 | |
| 
 | |
|     return val;
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACStoreColors (
 | |
|     ColormapPtr        pmap,
 | |
|     int                ndef,
 | |
|     xColorItem         *pdefs)
 | |
| {
 | |
|     ScreenPtr pScreen = pmap->pScreen;
 | |
| 
 | |
|     DPRINT_S("RACStoreColors",pScreen->myNum);
 | |
|     SCREEN_PROLOG (StoreColors);
 | |
|     ENABLE;
 | |
|     (*pScreen->StoreColors) (pmap,ndef,pdefs);
 | |
| 
 | |
|     SCREEN_EPILOG ( StoreColors, RACStoreColors);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACRecolorCursor (    
 | |
|     ScreenPtr pScreen,
 | |
|     CursorPtr pCurs,
 | |
|     Bool displayed
 | |
|     )
 | |
| {
 | |
|     DPRINT_S("RACRecolorCursor",pScreen->myNum);
 | |
|     SCREEN_PROLOG (RecolorCursor);
 | |
|     ENABLE;
 | |
|     (*pScreen->RecolorCursor) (pScreen,pCurs,displayed);
 | |
|     
 | |
|     SCREEN_EPILOG ( RecolorCursor, RACRecolorCursor);
 | |
| }
 | |
| 
 | |
| static Bool
 | |
| RACRealizeCursor (    
 | |
|     ScreenPtr   pScreen,
 | |
|     CursorPtr   pCursor
 | |
|     )
 | |
| {
 | |
|     Bool val;
 | |
| 
 | |
|     DPRINT_S("RACRealizeCursor",pScreen->myNum);
 | |
|     SCREEN_PROLOG (RealizeCursor);
 | |
|     ENABLE;
 | |
|     val = (*pScreen->RealizeCursor) (pScreen,pCursor);
 | |
|     
 | |
|     SCREEN_EPILOG ( RealizeCursor, RACRealizeCursor);
 | |
|     return val;
 | |
| }
 | |
| 
 | |
| static Bool
 | |
| RACUnrealizeCursor (    
 | |
|     ScreenPtr   pScreen,
 | |
|     CursorPtr   pCursor
 | |
|     )
 | |
| {
 | |
|     Bool val;
 | |
| 
 | |
|     DPRINT_S("RACUnrealizeCursor",pScreen->myNum);
 | |
|     SCREEN_PROLOG (UnrealizeCursor);
 | |
|     ENABLE;
 | |
|     val = (*pScreen->UnrealizeCursor) (pScreen,pCursor);
 | |
|     
 | |
|     SCREEN_EPILOG ( UnrealizeCursor, RACUnrealizeCursor);
 | |
|     return val;
 | |
| }
 | |
| 
 | |
| static Bool
 | |
| RACDisplayCursor (    
 | |
|     ScreenPtr   pScreen,
 | |
|     CursorPtr   pCursor
 | |
|     )
 | |
| {
 | |
|     Bool val;
 | |
| 
 | |
|     DPRINT_S("RACDisplayCursor",pScreen->myNum);
 | |
|     SCREEN_PROLOG (DisplayCursor);
 | |
|     ENABLE;
 | |
|     val = (*pScreen->DisplayCursor) (pScreen,pCursor);
 | |
|     
 | |
|     SCREEN_EPILOG ( DisplayCursor, RACDisplayCursor);
 | |
|     return val;
 | |
| }
 | |
| 
 | |
| static Bool
 | |
| RACSetCursorPosition (    
 | |
|     ScreenPtr   pScreen,
 | |
|     int x, int y,
 | |
|     Bool generateEvent)
 | |
| {
 | |
|     Bool val;
 | |
| 
 | |
|     DPRINT_S("RACSetCursorPosition",pScreen->myNum);
 | |
|     SCREEN_PROLOG (SetCursorPosition);
 | |
|     ENABLE;
 | |
|     val = (*pScreen->SetCursorPosition) (pScreen,x,y,generateEvent);
 | |
|     
 | |
|     SCREEN_EPILOG ( SetCursorPosition, RACSetCursorPosition);
 | |
|     return val;
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACAdjustFrame(int index, int x, int y, int flags)
 | |
| {
 | |
|     ScreenPtr pScreen = screenInfo.screens[index];
 | |
|     RACScreenPtr pScreenPriv =
 | |
| 	(RACScreenPtr) pScreen->devPrivates[RACScreenIndex].ptr;
 | |
| 
 | |
|     DPRINT_S("RACAdjustFrame",index);
 | |
|     xf86EnableAccess(xf86Screens[index]);
 | |
| 
 | |
|     (*pScreenPriv->AdjustFrame)(index, x, y, flags);
 | |
| }
 | |
| 
 | |
| static Bool
 | |
| RACSwitchMode(int index, DisplayModePtr mode, int flags)
 | |
| {
 | |
|     ScreenPtr pScreen = screenInfo.screens[index];
 | |
|     RACScreenPtr pScreenPriv =
 | |
| 	(RACScreenPtr) pScreen->devPrivates[RACScreenIndex].ptr;
 | |
| 
 | |
|     DPRINT_S("RACSwitchMode",index);
 | |
|     xf86EnableAccess(xf86Screens[index]);
 | |
| 
 | |
|     return (*pScreenPriv->SwitchMode)(index, mode, flags);
 | |
| }
 | |
| 
 | |
| static Bool
 | |
| RACEnterVT(int index, int flags)
 | |
| {
 | |
|     ScreenPtr pScreen = screenInfo.screens[index];
 | |
|     RACScreenPtr pScreenPriv =
 | |
| 	(RACScreenPtr) pScreen->devPrivates[RACScreenIndex].ptr;
 | |
| 
 | |
|     DPRINT_S("RACEnterVT",index);
 | |
|     xf86EnableAccess(xf86Screens[index]);
 | |
| 
 | |
|     return (*pScreenPriv->EnterVT)(index, flags);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACLeaveVT(int index, int flags)
 | |
| {
 | |
|     ScreenPtr pScreen = screenInfo.screens[index];
 | |
|     RACScreenPtr pScreenPriv =
 | |
| 	(RACScreenPtr) pScreen->devPrivates[RACScreenIndex].ptr;
 | |
| 
 | |
|     DPRINT_S("RACLeaveVT",index);
 | |
|     xf86EnableAccess(xf86Screens[index]);
 | |
| 
 | |
|     (*pScreenPriv->LeaveVT)(index, flags);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACFreeScreen(int index, int flags)
 | |
| {
 | |
|     ScreenPtr pScreen = screenInfo.screens[index];
 | |
|     RACScreenPtr pScreenPriv =
 | |
| 	(RACScreenPtr) pScreen->devPrivates[RACScreenIndex].ptr;
 | |
| 
 | |
|     DPRINT_S("RACFreeScreen",index);
 | |
|     xf86EnableAccess(xf86Screens[index]);
 | |
| 
 | |
|     (*pScreenPriv->FreeScreen)(index, flags);
 | |
| }
 | |
| 
 | |
| static Bool
 | |
| RACCreateGC(GCPtr pGC)
 | |
| {
 | |
|     ScreenPtr    pScreen = pGC->pScreen;
 | |
|     RACGCPtr     pGCPriv = (RACGCPtr) (pGC)->devPrivates[RACGCIndex].ptr;
 | |
|     Bool         ret;
 | |
| 
 | |
|     DPRINT_S("RACCreateGC",pScreen->myNum);
 | |
|     SCREEN_PROLOG(CreateGC);
 | |
| 
 | |
|     ret = (*pScreen->CreateGC)(pGC);
 | |
| 	
 | |
|     GC_WRAP(pGC);
 | |
|     SCREEN_EPILOG(CreateGC,RACCreateGC);
 | |
| 
 | |
|     return ret;
 | |
| }
 | |
| 
 | |
| /* GC funcs */
 | |
| static void
 | |
| RACValidateGC(
 | |
|    GCPtr         pGC,
 | |
|    unsigned long changes,
 | |
|    DrawablePtr   pDraw )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACValidateGC");
 | |
|     (*pGC->funcs->ValidateGC)(pGC, changes, pDraw);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| 
 | |
| static void
 | |
| RACDestroyGC(GCPtr pGC)
 | |
| {
 | |
|     GC_UNWRAP (pGC);
 | |
|     DPRINT("RACDestroyGC");
 | |
|     (*pGC->funcs->DestroyGC)(pGC);
 | |
|     GC_WRAP (pGC);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACChangeGC (
 | |
|     GCPtr	    pGC,
 | |
|     unsigned long   mask)
 | |
| {
 | |
|     GC_UNWRAP (pGC);
 | |
|     DPRINT("RACChangeGC");
 | |
|     (*pGC->funcs->ChangeGC) (pGC, mask);
 | |
|     GC_WRAP (pGC);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACCopyGC (
 | |
|     GCPtr	    pGCSrc, 
 | |
|     unsigned long   mask,
 | |
|     GCPtr	    pGCDst)
 | |
| {
 | |
|     GC_UNWRAP (pGCDst);
 | |
|     DPRINT("RACCopyGC");
 | |
|     (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst);
 | |
|     GC_WRAP (pGCDst);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACChangeClip (
 | |
|     GCPtr   pGC,
 | |
|     int		type,
 | |
|     pointer	pvalue,
 | |
|     int		nrects )
 | |
| {
 | |
|     GC_UNWRAP (pGC);
 | |
|     DPRINT("RACChangeClip");
 | |
|     (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects);
 | |
|     GC_WRAP (pGC);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACCopyClip(GCPtr pgcDst, GCPtr pgcSrc)
 | |
| {
 | |
|     GC_UNWRAP (pgcDst);
 | |
|     DPRINT("RACCopyClip");
 | |
|     (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc);
 | |
|     GC_WRAP (pgcDst);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACDestroyClip(GCPtr pGC)
 | |
| {
 | |
|     GC_UNWRAP (pGC);
 | |
|     DPRINT("RACDestroyClip");
 | |
|     (* pGC->funcs->DestroyClip)(pGC);
 | |
|     GC_WRAP (pGC);
 | |
| }
 | |
| 
 | |
| /* GC Ops */
 | |
| static void
 | |
| RACFillSpans(
 | |
|     DrawablePtr pDraw,
 | |
|     GC		*pGC,
 | |
|     int		nInit,	
 | |
|     DDXPointPtr pptInit,	
 | |
|     int *pwidthInit,		
 | |
|     int fSorted )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACFillSpans");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->FillSpans)(pDraw, pGC, nInit, pptInit, pwidthInit, fSorted);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACSetSpans(
 | |
|     DrawablePtr		pDraw,
 | |
|     GCPtr		pGC,
 | |
|     char		*pcharsrc,
 | |
|     register DDXPointPtr ppt,
 | |
|     int			*pwidth,
 | |
|     int			nspans,
 | |
|     int			fSorted )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACSetSpans");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->SetSpans)(pDraw, pGC, pcharsrc, ppt, pwidth, nspans, fSorted);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACPutImage(
 | |
|     DrawablePtr pDraw,
 | |
|     GCPtr	pGC,
 | |
|     int		depth, 
 | |
|     int x, int y, int w, int h,
 | |
|     int		leftPad,
 | |
|     int		format,
 | |
|     char 	*pImage )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACPutImage");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->PutImage)(pDraw, pGC, depth, x, y, w, h, 
 | |
| 			  leftPad, format, pImage);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| static RegionPtr
 | |
| RACCopyArea(
 | |
|     DrawablePtr pSrc,
 | |
|     DrawablePtr pDst,
 | |
|     GC *pGC,
 | |
|     int srcx, int srcy,
 | |
|     int width, int height,
 | |
|     int dstx, int dsty )
 | |
| {
 | |
|     RegionPtr ret;
 | |
| 
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACCopyArea");
 | |
|     ENABLE_GC;
 | |
|     ret = (*pGC->ops->CopyArea)(pSrc, pDst,
 | |
| 				pGC, srcx, srcy, width, height, dstx, dsty);
 | |
|     GC_WRAP(pGC);
 | |
|     return ret;
 | |
| }
 | |
| 
 | |
| static RegionPtr
 | |
| RACCopyPlane(
 | |
|     DrawablePtr	pSrc,
 | |
|     DrawablePtr	pDst,
 | |
|     GCPtr pGC,
 | |
|     int	srcx, int srcy,
 | |
|     int	width, int height,
 | |
|     int	dstx, int dsty,
 | |
|     unsigned long bitPlane )
 | |
| {
 | |
|     RegionPtr ret;
 | |
| 
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACCopyPlane");
 | |
|     ENABLE_GC;
 | |
|     ret = (*pGC->ops->CopyPlane)(pSrc, pDst, pGC, srcx, srcy,
 | |
| 				 width, height, dstx, dsty, bitPlane);
 | |
|     GC_WRAP(pGC);
 | |
|     return ret;
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACPolyPoint(
 | |
|     DrawablePtr pDraw,
 | |
|     GCPtr pGC,
 | |
|     int mode,
 | |
|     int npt,
 | |
|     xPoint *pptInit )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACPolyPoint");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->PolyPoint)(pDraw, pGC, mode, npt, pptInit);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| 
 | |
| static void
 | |
| RACPolylines(
 | |
|     DrawablePtr pDraw,
 | |
|     GCPtr	pGC,
 | |
|     int		mode,		
 | |
|     int		npt,		
 | |
|     DDXPointPtr pptInit )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACPolylines");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->Polylines)(pDraw, pGC, mode, npt, pptInit);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| static void 
 | |
| RACPolySegment(
 | |
|     DrawablePtr	pDraw,
 | |
|     GCPtr	pGC,
 | |
|     int		nseg,
 | |
|     xSegment	*pSeg )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACPolySegment");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->PolySegment)(pDraw, pGC, nseg, pSeg);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACPolyRectangle(
 | |
|     DrawablePtr  pDraw,
 | |
|     GCPtr        pGC,
 | |
|     int	         nRectsInit,
 | |
|     xRectangle  *pRectsInit )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACPolyRectangle");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->PolyRectangle)(pDraw, pGC, nRectsInit, pRectsInit);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACPolyArc(
 | |
|     DrawablePtr	pDraw,
 | |
|     GCPtr	pGC,
 | |
|     int		narcs,
 | |
|     xArc	*parcs )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACPolyArc");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->PolyArc)(pDraw, pGC, narcs, parcs);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACFillPolygon(
 | |
|     DrawablePtr	pDraw,
 | |
|     GCPtr	pGC,
 | |
|     int		shape,
 | |
|     int		mode,
 | |
|     int		count,
 | |
|     DDXPointPtr	ptsIn )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACFillPolygon");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->FillPolygon)(pDraw, pGC, shape, mode, count, ptsIn);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| 
 | |
| static void 
 | |
| RACPolyFillRect(
 | |
|     DrawablePtr	pDraw,
 | |
|     GCPtr	pGC,
 | |
|     int		nrectFill, 
 | |
|     xRectangle	*prectInit )  
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACPolyFillRect");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->PolyFillRect)(pDraw, pGC, nrectFill, prectInit);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| 
 | |
| static void
 | |
| RACPolyFillArc(
 | |
|     DrawablePtr	pDraw,
 | |
|     GCPtr	pGC,
 | |
|     int		narcs,
 | |
|     xArc	*parcs )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACPolyFillArc");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->PolyFillArc)(pDraw, pGC, narcs, parcs);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| static int
 | |
| RACPolyText8(
 | |
|     DrawablePtr pDraw,
 | |
|     GCPtr	pGC,
 | |
|     int		x, 
 | |
|     int 	y,
 | |
|     int 	count,
 | |
|     char	*chars )
 | |
| {
 | |
|     int ret;
 | |
| 
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACPolyText8");
 | |
|     ENABLE_GC;
 | |
|     ret = (*pGC->ops->PolyText8)(pDraw, pGC, x, y, count, chars);
 | |
|     GC_WRAP(pGC);
 | |
|     return ret;
 | |
| }
 | |
| 
 | |
| static int
 | |
| RACPolyText16(
 | |
|     DrawablePtr pDraw,
 | |
|     GCPtr	pGC,
 | |
|     int		x,
 | |
|     int		y,
 | |
|     int 	count,
 | |
|     unsigned short *chars )
 | |
| {
 | |
|     int ret;
 | |
| 
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACPolyText16");
 | |
|     ENABLE_GC;
 | |
|     ret = (*pGC->ops->PolyText16)(pDraw, pGC, x, y, count, chars);
 | |
|     GC_WRAP(pGC);
 | |
|     return ret;
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACImageText8(
 | |
|     DrawablePtr pDraw,
 | |
|     GCPtr	pGC,
 | |
|     int		x, 
 | |
|     int		y,
 | |
|     int 	count,
 | |
|     char	*chars )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACImageText8");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->ImageText8)(pDraw, pGC, x, y, count, chars);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACImageText16(
 | |
|     DrawablePtr pDraw,
 | |
|     GCPtr	pGC,
 | |
|     int		x,
 | |
|     int		y,
 | |
|     int 	count,
 | |
|     unsigned short *chars )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACImageText16");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->ImageText16)(pDraw, pGC, x, y, count, chars);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| 
 | |
| static void
 | |
| RACImageGlyphBlt(
 | |
|     DrawablePtr pDraw,
 | |
|     GCPtr pGC,
 | |
|     int xInit, int yInit,
 | |
|     unsigned int nglyph,
 | |
|     CharInfoPtr *ppci,
 | |
|     pointer pglyphBase )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACImageGlyphBlt");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->ImageGlyphBlt)(pDraw, pGC, xInit, yInit,
 | |
| 			       nglyph, ppci, pglyphBase);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACPolyGlyphBlt(
 | |
|     DrawablePtr pDraw,
 | |
|     GCPtr pGC,
 | |
|     int xInit, int yInit,
 | |
|     unsigned int nglyph,
 | |
|     CharInfoPtr *ppci,
 | |
|     pointer pglyphBase )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACPolyGlyphBlt");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->PolyGlyphBlt)(pDraw, pGC, xInit, yInit,
 | |
| 			      nglyph, ppci, pglyphBase);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACPushPixels(
 | |
|     GCPtr	pGC,
 | |
|     PixmapPtr	pBitMap,
 | |
|     DrawablePtr pDraw,
 | |
|     int	dx, int dy, int xOrg, int yOrg )
 | |
| {
 | |
|     GC_UNWRAP(pGC);
 | |
|     DPRINT("RACPushPixels");
 | |
|     ENABLE_GC;
 | |
|     (*pGC->ops->PushPixels)(pGC, pBitMap, pDraw, dx, dy, xOrg, yOrg);
 | |
|     GC_WRAP(pGC);
 | |
| }
 | |
| 
 | |
| 
 | |
| /* miSpriteFuncs */
 | |
| static Bool
 | |
| RACSpriteRealizeCursor(ScreenPtr pScreen, CursorPtr pCur)
 | |
| {
 | |
|     Bool val;
 | |
|     SPRITE_PROLOG;
 | |
|     DPRINT_S("RACSpriteRealizeCursor",pScreen->myNum);
 | |
|     ENABLE;
 | |
|     val = PointPriv->spriteFuncs->RealizeCursor(pScreen, pCur);
 | |
|     SPRITE_EPILOG;
 | |
|     return val;
 | |
| }
 | |
| 
 | |
| static Bool
 | |
| RACSpriteUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCur)
 | |
| {
 | |
|     Bool val;
 | |
|     SPRITE_PROLOG;
 | |
|     DPRINT_S("RACSpriteUnrealizeCursor",pScreen->myNum);
 | |
|     ENABLE;
 | |
|     val = PointPriv->spriteFuncs->UnrealizeCursor(pScreen, pCur);
 | |
|     SPRITE_EPILOG;
 | |
|     return val;
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACSpriteSetCursor(ScreenPtr pScreen, CursorPtr pCur, int x, int y)
 | |
| {
 | |
|     SPRITE_PROLOG;
 | |
|     DPRINT_S("RACSpriteSetCursor",pScreen->myNum);
 | |
|     ENABLE;
 | |
|     PointPriv->spriteFuncs->SetCursor(pScreen, pCur, x, y);
 | |
|     SPRITE_EPILOG;
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACSpriteMoveCursor(ScreenPtr pScreen, int x, int y)
 | |
| {
 | |
|     SPRITE_PROLOG;
 | |
|     DPRINT_S("RACSpriteMoveCursor",pScreen->myNum);
 | |
|     ENABLE;
 | |
|     PointPriv->spriteFuncs->MoveCursor(pScreen, x, y);
 | |
|     SPRITE_EPILOG;
 | |
| }
 | |
| 
 | |
| #ifdef RENDER
 | |
| static void
 | |
| RACComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
 | |
| 	     PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask,
 | |
| 	     INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width,
 | |
| 	     CARD16 height)
 | |
| {
 | |
|     ScreenPtr		pScreen = pDst->pDrawable->pScreen;
 | |
|     PictureScreenPtr	ps = GetPictureScreen(pScreen);
 | |
| 
 | |
|     PICTURE_PROLOGUE(Composite);
 | |
| 
 | |
|     ENABLE;
 | |
|     (*ps->Composite) (op, pSrc, pMask, pDst, xSrc, ySrc, xMask, yMask, xDst,
 | |
| 		      yDst, width, height);
 | |
|     
 | |
|     PICTURE_EPILOGUE(Composite, RACComposite);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
 | |
| 	  PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlist,
 | |
| 	  GlyphListPtr list, GlyphPtr *glyphs)
 | |
| {
 | |
|     ScreenPtr		pScreen = pDst->pDrawable->pScreen;
 | |
|     PictureScreenPtr	ps = GetPictureScreen(pScreen);
 | |
| 
 | |
|     PICTURE_PROLOGUE(Glyphs);
 | |
| 
 | |
|     ENABLE;
 | |
|     (*ps->Glyphs)(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
 | |
|     
 | |
|     PICTURE_EPILOGUE (Glyphs, RACGlyphs);
 | |
| }
 | |
| 
 | |
| static void
 | |
| RACCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color, int nRect,
 | |
| 		  xRectangle *rects)
 | |
| {
 | |
|     ScreenPtr		pScreen = pDst->pDrawable->pScreen;
 | |
|     PictureScreenPtr	ps = GetPictureScreen(pScreen);
 | |
| 
 | |
|     PICTURE_PROLOGUE(CompositeRects);
 | |
| 
 | |
|     ENABLE;
 | |
|     (*ps->CompositeRects)(op, pDst, color, nRect, rects);
 | |
|     
 | |
|     PICTURE_EPILOGUE (CompositeRects, RACCompositeRects);
 | |
| }
 | |
| #endif
 | |
| 
 |