summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2004-08-07 01:02:41 +0000
committerKeith Packard <keithp@keithp.com>2004-08-07 01:02:41 +0000
commit2bdbc2c0d39b1618440a6a8ed1c38a11703e898c (patch)
tree5f5fa3e273fdd6ea8c40da4ac49dd1a82f9152c9
parentcff0043a347ba06e8ab16a84a35c99794b45149b (diff)
Clean up cw initialization, make sure wrappers re-wrap on exit.
-rw-r--r--miext/cw/cw.c30
1 files changed, 11 insertions, 19 deletions
diff --git a/miext/cw/cw.c b/miext/cw/cw.c
index 708ebe323..4a73d8be2 100644
--- a/miext/cw/cw.c
+++ b/miext/cw/cw.c
@@ -344,8 +344,7 @@ cwCheapValidateGC(GCPtr pGC, unsigned long stateChanges, DrawablePtr pDrawable)
* cwCreateGCPrivate will wrap with the backing-pixmap GC funcs and we won't
* re-wrap on return.
*/
- if (pDrawable->type == DRAWABLE_WINDOW &&
- cwDrawableIsRedirWindow(pDrawable) &&
+ if (cwDrawableIsRedirWindow(pDrawable) &&
cwCreateGCPrivate(pGC, pDrawable))
{
(*pGC->funcs->ValidateGC)(pGC, stateChanges, pDrawable);
@@ -427,11 +426,11 @@ cwCheapDestroyClip(GCPtr pGC)
*/
#define SCREEN_PROLOGUE(pScreen, field)\
- ((pScreen)->field = ((cwScreenPtr) \
- (pScreen)->devPrivates[cwScreenIndex].ptr)->field)
+ ((pScreen)->field = getCwScreen(pScreen)->field)
#define SCREEN_EPILOGUE(pScreen, field, wrapper)\
- ((pScreen)->field = wrapper)
+ ((getCwScreen(pScreen)->field = (pScreen)->field), \
+ ((pScreen)->field = (wrapper)))
static Bool
cwCreateGC(GCPtr pGC)
@@ -667,21 +666,14 @@ miInitializeCompositeWrapper(ScreenPtr pScreen)
if (!pScreenPriv)
return;
- pScreenPriv->CloseScreen = pScreen->CloseScreen;
- pScreenPriv->GetImage = pScreen->GetImage;
- pScreenPriv->GetSpans = pScreen->GetSpans;
- pScreenPriv->CreateGC = pScreen->CreateGC;
- pScreenPriv->PaintWindowBackground = pScreen->PaintWindowBackground;
- pScreenPriv->PaintWindowBorder = pScreen->PaintWindowBorder;
-
- pScreen->CloseScreen = cwCloseScreen;
- pScreen->GetImage = cwGetImage;
- pScreen->GetSpans = cwGetSpans;
- pScreen->CreateGC = cwCreateGC;
- pScreen->PaintWindowBackground = cwPaintWindowBackground;
- pScreen->PaintWindowBorder = cwPaintWindowBorder;
-
pScreen->devPrivates[cwScreenIndex].ptr = (pointer)pScreenPriv;
+
+ SCREEN_EPILOGUE(pScreen, CloseScreen, cwCloseScreen);
+ SCREEN_EPILOGUE(pScreen, GetImage, cwGetImage);
+ SCREEN_EPILOGUE(pScreen, GetSpans, cwGetSpans);
+ SCREEN_EPILOGUE(pScreen, CreateGC, cwCreateGC);
+ SCREEN_EPILOGUE(pScreen, PaintWindowBackground, cwPaintWindowBackground);
+ SCREEN_EPILOGUE(pScreen, PaintWindowBorder, cwPaintWindowBorder);
#ifdef RENDER
if (GetPictureScreen (pScreen))