summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorentin Chary <corentin.chary@gmail.com>2011-06-15 13:58:58 +0200
committerCorentin Chary <corentin.chary@gmail.com>2011-06-15 13:58:58 +0200
commit036c6cf807c9351ef3a1044e2a789fd5f1738e61 (patch)
tree8ae1c9dec1e2916afc4c0f39e84e1cab1b3a27e7
parentd90d1d92e3eef05024ae2fc79f588607186ad4d5 (diff)
wlshm: fix pixmap issues in rooted mode
Signed-off-by: Corentin Chary <corentin.chary@gmail.com>
-rw-r--r--src/wlshm.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/wlshm.c b/src/wlshm.c
index 34d59cf..8f5cf8a 100644
--- a/src/wlshm.c
+++ b/src/wlshm.c
@@ -208,6 +208,9 @@ wlshm_free_window_pixmap(WindowPtr pWindow)
struct wlshm_pixmap *d;
PixmapPtr pixmap;
+ if (!xorgRootless && pWindow->parent)
+ return ;
+
pixmap = pScreen->GetWindowPixmap(pWindow);
if (!pixmap)
return ;
@@ -219,6 +222,7 @@ wlshm_free_window_pixmap(WindowPtr pWindow)
dixSetPrivate(&pixmap->devPrivates, &wlshm_pixmap_private_key, NULL);
pixmap->devPrivate.ptr = d->orig;
+ pixmap->devPrivate.fptr = d->orig;
memcpy(d->orig, d->data, d->bytes);
munmap(d->data, d->bytes);
@@ -287,7 +291,7 @@ wlshm_create_window(WindowPtr pWin)
wlshm->CreateWindow = pScreen->CreateWindow;
pScreen->CreateWindow = wlshm_create_window;
- if (!window_own_pixmap(pWin))
+ if (!xorgRootless || !window_own_pixmap(pWin))
return ret;
PixmapPtr pixmap = fbCreatePixmap(pScreen,
@@ -483,7 +487,7 @@ wlshm_create_window_buffer(struct xwl_window *xwl_window,
d->orig = pixmap->devPrivate.ptr;
pixmap->devPrivate.ptr = d->data;
-
+ pixmap->devPrivate.fptr = d->data;
memcpy(d->data, d->orig, d->bytes);
dixSetPrivate(&pixmap->devPrivates, &wlshm_pixmap_private_key, d);