From b3d5e485948e501bd8a64635787c5c86540faced Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Michel=20D=C3=A4nzer?= Date: Mon, 23 Feb 2009 10:45:41 +0100 Subject: EXA: Re-hide pixmap data pointer after ModifyPixmapHeader(). --- exa/exa.c | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-) diff --git a/exa/exa.c b/exa/exa.c index 9329f10..e23bbfd 100644 --- a/exa/exa.c +++ b/exa/exa.c @@ -318,11 +318,6 @@ exaCreatePixmap(ScreenPtr pScreen, int w, int h, int depth, datasize = h * paddedWidth; - /* Set this before driver hooks, to allow for !offscreen pixmaps. - * !offscreen pixmaps have a valid pointer at all times. - */ - pPixmap->devPrivate.ptr = NULL; - pExaPixmap->driverPriv = pExaScr->info->CreatePixmap(pScreen, datasize, 0); if (!pExaPixmap->driverPriv) { swap(pExaScr, pScreen, DestroyPixmap); @@ -336,7 +331,6 @@ exaCreatePixmap(ScreenPtr pScreen, int w, int h, int depth, pExaPixmap->score = EXA_PIXMAP_SCORE_PINNED; pExaPixmap->fb_ptr = NULL; pExaPixmap->pDamage = NULL; - pExaPixmap->sys_ptr = pPixmap->devPrivate.ptr; } else { pExaPixmap->driverPriv = NULL; @@ -434,14 +428,20 @@ exaModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, int depth, } - if (pExaScr->info->ModifyPixmapHeader) { + if (pExaScr->info->ModifyPixmapHeader) ret = pExaScr->info->ModifyPixmapHeader(pPixmap, width, height, depth, bitsPerPixel, devKind, pPixData); - if (ret == TRUE) - return ret; - } - return pExaScr->SavedModifyPixmapHeader(pPixmap, width, height, depth, - bitsPerPixel, devKind, pPixData); + else + ret = FALSE; + + if (!ret) + ret = pExaScr->SavedModifyPixmapHeader(pPixmap, width, height, depth, + bitsPerPixel, devKind, pPixData); + + pExaPixmap->sys_ptr = pPixmap->devPrivate.ptr; + pPixmap->devPrivate.ptr = NULL; + + return ret; } /** -- 1.6.2.rc1