static void cwDestroyPicture (PicturePtr pPicture) { ScreenPtr pScreen = pPicture->pDrawable->pScreen; cwPsDecl(pScreen); cwPsUnwrap(DestroyPicture); cwDestroyPicturePrivate (pPicture); (*ps->DestroyPicture) (pPicture); cwPsWrap(DestroyPicture, cwDestroyPicture); }
static void cwValidatePicture(PicturePtr pPicture, Mask mask) { DrawablePtr pDrawable = pPicture->pDrawable; ScreenPtr pScreen = pDrawable->pScreen; cwPsDecl(pScreen); cwPicturePrivate; cwPsUnwrap(ValidatePicture); /* * Must call ValidatePicture to ensure pPicture->pCompositeClip is valid */ (*ps->ValidatePicture) (pPicture, mask); if (!cwDrawableIsRedirWindow(pDrawable)) { if (pPicturePrivate) cwDestroyPicturePrivate(pPicture); } else { PicturePtr pBackingPicture; DrawablePtr pBackingDrawable; int x_off, y_off; pBackingDrawable = cwGetBackingDrawable(pDrawable, &x_off, &y_off); if (pPicturePrivate && pPicturePrivate->pBackingPicture->pDrawable != pBackingDrawable) { cwDestroyPicturePrivate(pPicture); pPicturePrivate = 0; } if (!pPicturePrivate) { pPicturePrivate = cwCreatePicturePrivate(pPicture); if (!pPicturePrivate) { cwPsWrap(ValidatePicture, cwValidatePicture); return; } } pBackingPicture = pPicturePrivate->pBackingPicture; /* * Always copy transform and filters because there's no * indication of when they've changed */ SetPictureTransform(pBackingPicture, pPicture->transform); if (pBackingPicture->filter != pPicture->filter || pPicture->filter_nparams > 0) { char *filter = PictureGetFilterName(pPicture->filter); SetPictureFilter(pBackingPicture, filter, strlen(filter), pPicture->filter_params, pPicture->filter_nparams); } pPicturePrivate->stateChanges |= mask; if (pPicturePrivate->serialNumber != pDrawable->serialNumber || (pPicturePrivate-> stateChanges & (CPClipXOrigin | CPClipYOrigin | CPClipMask))) { SetPictureClipRegion(pBackingPicture, x_off - pDrawable->x, y_off - pDrawable->y, pPicture->pCompositeClip); pPicturePrivate->serialNumber = pDrawable->serialNumber; pPicturePrivate->stateChanges &= ~(CPClipXOrigin | CPClipYOrigin | CPClipMask); } CopyPicture(pPicture, pPicturePrivate->stateChanges, pBackingPicture); ValidatePicture(pBackingPicture); } cwPsWrap(ValidatePicture, cwValidatePicture); }