diff options
author | Corentin Chary <corentin.chary@gmail.com> | 2011-06-15 13:58:58 +0200 |
---|---|---|
committer | Corentin Chary <corentin.chary@gmail.com> | 2011-06-15 13:58:58 +0200 |
commit | 036c6cf807c9351ef3a1044e2a789fd5f1738e61 (patch) | |
tree | 8ae1c9dec1e2916afc4c0f39e84e1cab1b3a27e7 | |
parent | d90d1d92e3eef05024ae2fc79f588607186ad4d5 (diff) |
wlshm: fix pixmap issues in rooted mode
Signed-off-by: Corentin Chary <corentin.chary@gmail.com>
-rw-r--r-- | src/wlshm.c | 8 |
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); |