Commit slight variation of bug #5460 which is the merge of the new shadow

code from kdrive.
This commit is contained in:
Alan Hourihane 2006-01-23 13:59:14 +00:00
parent cfd3988ed9
commit 9148d8700b
7 changed files with 140 additions and 1442 deletions

File diff suppressed because it is too large Load Diff

View File

@ -31,6 +31,8 @@
#include "picturestr.h" #include "picturestr.h"
#endif #endif
#include "damage.h"
#include "damagestr.h"
typedef struct _shadowBuf *shadowBufPtr; typedef struct _shadowBuf *shadowBufPtr;
typedef void (*ShadowUpdateProc) (ScreenPtr pScreen, typedef void (*ShadowUpdateProc) (ScreenPtr pScreen,
@ -47,14 +49,19 @@ typedef void *(*ShadowWindowProc) (ScreenPtr pScreen,
CARD32 *size, CARD32 *size,
void *closure); void *closure);
/* BC hack: do not move the damage member. see shadow.c for explanation. */
typedef struct _shadowBuf { typedef struct _shadowBuf {
shadowBufPtr pNext; DamagePtr pDamage;
ShadowUpdateProc update; ShadowUpdateProc update;
ShadowWindowProc window; ShadowWindowProc window;
RegionRec damage; RegionRec damage;
PixmapPtr pPixmap; PixmapPtr pPixmap;
void *closure; void *closure;
int randr; int randr;
/* screen wrappers */
GetImageProcPtr GetImage;
CloseScreenProcPtr CloseScreen;
} shadowBufRec; } shadowBufRec;
/* Match defines from randr extension */ /* Match defines from randr extension */
@ -68,25 +75,11 @@ typedef struct _shadowBuf {
#define SHADOW_REFLECT_Y 32 #define SHADOW_REFLECT_Y 32
#define SHADOW_REFLECT_ALL (SHADOW_REFLECT_X|SHADOW_REFLECT_Y) #define SHADOW_REFLECT_ALL (SHADOW_REFLECT_X|SHADOW_REFLECT_Y)
typedef struct _shadowScrPriv {
PaintWindowBackgroundProcPtr PaintWindowBackground;
PaintWindowBorderProcPtr PaintWindowBorder;
CopyWindowProcPtr CopyWindow;
CloseScreenProcPtr CloseScreen;
CreateGCProcPtr CreateGC;
GetImageProcPtr GetImage;
#ifdef RENDER
CompositeProcPtr Composite;
GlyphsProcPtr Glyphs;
#endif
shadowBufPtr pBuf;
BSFuncRec BackingStoreFuncs;
} shadowScrPrivRec, *shadowScrPrivPtr;
extern int shadowScrPrivateIndex; extern int shadowScrPrivateIndex;
#define shadowGetScrPriv(pScr) ((shadowScrPrivPtr) (pScr)->devPrivates[shadowScrPrivateIndex].ptr) #define shadowGetBuf(pScr) ((shadowBufPtr) (pScr)->devPrivates[shadowScrPrivateIndex].ptr)
#define shadowScrPriv(pScr) shadowScrPrivPtr pScrPriv = shadowGetScrPriv(pScr) #define shadowBuf(pScr) shadowBufPtr pBuf = shadowGetBuf(pScr)
#define shadowDamage(pBuf) DamageRegion(pBuf->pDamage)
Bool Bool
shadowSetup (ScreenPtr pScreen); shadowSetup (ScreenPtr pScreen);
@ -170,10 +163,4 @@ shadowUpdateProc shadowUpdatePlanar4Weak(void);
shadowUpdateProc shadowUpdatePlanar4x8Weak(void); shadowUpdateProc shadowUpdatePlanar4x8Weak(void);
shadowUpdateProc shadowUpdateRotatePackedWeak(void); shadowUpdateProc shadowUpdateRotatePackedWeak(void);
void
shadowWrapGC (GCPtr pGC);
void
shadowUnwrapGC (GCPtr pGC);
#endif /* _SHADOW_H_ */ #endif /* _SHADOW_H_ */

View File

@ -43,7 +43,7 @@ void
shadowUpdatePacked (ScreenPtr pScreen, shadowUpdatePacked (ScreenPtr pScreen,
shadowBufPtr pBuf) shadowBufPtr pBuf)
{ {
RegionPtr damage = &pBuf->damage; RegionPtr damage = shadowDamage (pBuf);
PixmapPtr pShadow = pBuf->pPixmap; PixmapPtr pShadow = pBuf->pPixmap;
int nbox = REGION_NUM_RECTS (damage); int nbox = REGION_NUM_RECTS (damage);
BoxPtr pbox = REGION_RECTS (damage); BoxPtr pbox = REGION_RECTS (damage);

View File

@ -89,7 +89,7 @@ void
shadowUpdatePlanar4 (ScreenPtr pScreen, shadowUpdatePlanar4 (ScreenPtr pScreen,
shadowBufPtr pBuf) shadowBufPtr pBuf)
{ {
RegionPtr damage = &pBuf->damage; RegionPtr damage = shadowDamage (pBuf);
PixmapPtr pShadow = pBuf->pPixmap; PixmapPtr pShadow = pBuf->pPixmap;
int nbox = REGION_NUM_RECTS (damage); int nbox = REGION_NUM_RECTS (damage);
BoxPtr pbox = REGION_RECTS (damage); BoxPtr pbox = REGION_RECTS (damage);

View File

@ -92,7 +92,7 @@ void
shadowUpdatePlanar4x8 (ScreenPtr pScreen, shadowUpdatePlanar4x8 (ScreenPtr pScreen,
shadowBufPtr pBuf) shadowBufPtr pBuf)
{ {
RegionPtr damage = &pBuf->damage; RegionPtr damage = shadowDamage (pBuf);
PixmapPtr pShadow = pBuf->pPixmap; PixmapPtr pShadow = pBuf->pPixmap;
int nbox = REGION_NUM_RECTS (damage); int nbox = REGION_NUM_RECTS (damage);
BoxPtr pbox = REGION_RECTS (damage); BoxPtr pbox = REGION_RECTS (damage);

View File

@ -53,7 +53,7 @@ void
shadowUpdateRotatePacked (ScreenPtr pScreen, shadowUpdateRotatePacked (ScreenPtr pScreen,
shadowBufPtr pBuf) shadowBufPtr pBuf)
{ {
RegionPtr damage = &pBuf->damage; RegionPtr damage = shadowDamage (pBuf);
PixmapPtr pShadow = pBuf->pPixmap; PixmapPtr pShadow = pBuf->pPixmap;
int nbox = REGION_NUM_RECTS (damage); int nbox = REGION_NUM_RECTS (damage);
BoxPtr pbox = REGION_RECTS (damage); BoxPtr pbox = REGION_RECTS (damage);

View File

@ -96,7 +96,7 @@ void
FUNC (ScreenPtr pScreen, FUNC (ScreenPtr pScreen,
shadowBufPtr pBuf) shadowBufPtr pBuf)
{ {
RegionPtr damage = &pBuf->damage; RegionPtr damage = shadowDamage (pBuf);
PixmapPtr pShadow = pBuf->pPixmap; PixmapPtr pShadow = pBuf->pPixmap;
int nbox = REGION_NUM_RECTS (damage); int nbox = REGION_NUM_RECTS (damage);
BoxPtr pbox = REGION_RECTS (damage); BoxPtr pbox = REGION_RECTS (damage);