summaryrefslogtreecommitdiff
path: root/exa
diff options
context:
space:
mode:
authorMaarten Maathuis <madman2003@gmail.com>2009-08-08 11:32:05 +0200
committerMaarten Maathuis <madman2003@gmail.com>2009-08-08 11:38:51 +0200
commitd573cc46d3106824902ab4f926617bd9959af57c (patch)
treef959775a556b98f0d011cab60544209717e14db4 /exa
parent8b652435cd42929e2d187b353b3b20e798569356 (diff)
exa: more safety
Diffstat (limited to 'exa')
-rw-r--r--exa/exa.c2
-rw-r--r--exa/exa_mixed.c1
2 files changed, 2 insertions, 1 deletions
diff --git a/exa/exa.c b/exa/exa.c
index c8fe12e9a..483e3b4eb 100644
--- a/exa/exa.c
+++ b/exa/exa.c
@@ -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;