From 43ef2c1359f6e2afbb409ccf842d9a73265ae4c5 Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Michel=20D=C3=A4nzer?= Date: Mon, 23 Feb 2009 11:38:26 +0100 Subject: EXA: Re-hide pixmap data pointer after ModifyPixmapHeader(). --- exa/exa.c | 26 +++++++++++++------------- 1 files changed, 13 insertions(+), 13 deletions(-) diff --git a/exa/exa.c b/exa/exa.c index 9329f10..8fe916a 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; } /** @@ -517,7 +517,7 @@ ExaDoPrepareAccess(DrawablePtr pDrawable, int index) Bool offscreen = exaPixmapIsOffscreen(pPixmap); /* Unhide pixmap pointer */ - if (pPixmap->devPrivate.ptr == NULL && !(pExaScr->info->flags & EXA_HANDLES_PIXMAPS)) { + if (pPixmap->devPrivate.ptr == NULL) { pPixmap->devPrivate.ptr = ExaGetPixmapAddress(pPixmap); } -- 1.6.2.rc1