diff options
-rw-r--r-- | exa/exa.c | 2 | ||||
-rw-r--r-- | exa/exa_mixed.c | 1 |
2 files changed, 2 insertions, 1 deletions
@@ -336,7 +336,7 @@ ExaDoPrepareAccess(DrawablePtr pDrawable, int index) if (!offscreen) { /* Do we need to allocate our system buffer? */ if ((pExaScr->info->flags & EXA_HANDLES_PIXMAPS) && (pExaScr->info->flags & EXA_MIXED_PIXMAPS)) { - if (!pExaPixmap->sys_ptr) { + if (!pExaPixmap->sys_ptr && !exaPixmapIsPinned(pPixmap)) { pExaPixmap->sys_ptr = malloc(pExaPixmap->sys_pitch * pDrawable->height); if (!pExaPixmap->sys_ptr) FatalError("EXA: malloc failed for size %d bytes\n", pExaPixmap->sys_pitch * pDrawable->height); diff --git a/exa/exa_mixed.c b/exa/exa_mixed.c index abfa95790..7ba62ea5f 100644 --- a/exa/exa_mixed.c +++ b/exa/exa_mixed.c @@ -82,6 +82,7 @@ exaCreatePixmap_mixed(ScreenPtr pScreen, int w, int h, int depth, datasize = h * paddedWidth; /* We will allocate the system pixmap later if needed. */ + pPixmap->devPrivate.ptr = NULL; pExaPixmap->sys_ptr = NULL; pExaPixmap->sys_pitch = paddedWidth; |