diff options
author | Tiago Vignatti <tiago.vignatti@intel.com> | 2012-04-16 17:31:49 +0300 |
---|---|---|
committer | Christopher James Halse Rogers <christopher.halse.rogers@canonical.com> | 2012-06-13 15:26:20 +1000 |
commit | c982cc9397093c322a65aa88ca155fc7bfbd0787 (patch) | |
tree | 930f72a5475aefed656d69ccf3a38739a5812ec5 | |
parent | 377e9628dc3fb3cb9d7ee1209f6df8ed0395845d (diff) |
xwayland: track shm pool protocol changes
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
-rw-r--r-- | hw/xfree86/xwayland/xwayland-cursor.c | 7 | ||||
-rw-r--r-- | hw/xfree86/xwayland/xwayland.c | 9 |
2 files changed, 11 insertions, 5 deletions
diff --git a/hw/xfree86/xwayland/xwayland-cursor.c b/hw/xfree86/xwayland/xwayland-cursor.c index e7efdae6f..eae11ab70 100644 --- a/hw/xfree86/xwayland/xwayland-cursor.c +++ b/hw/xfree86/xwayland/xwayland-cursor.c @@ -89,6 +89,7 @@ xwl_realize_cursor(DeviceIntPtr device, ScreenPtr screen, CursorPtr cursor) int size; char filename[] = "/tmp/wayland-shm-XXXXXX"; int fd; + struct wl_shm_pool *pool; struct wl_buffer *buffer; void *data; @@ -121,11 +122,13 @@ xwl_realize_cursor(DeviceIntPtr device, ScreenPtr screen, CursorPtr cursor) expand_source_and_mask(cursor, data); munmap(data, size); - buffer = wl_shm_create_buffer(xwl_screen->shm, fd, + pool = wl_shm_create_pool(xwl_screen->shm, fd, size); + close(fd); + buffer = wl_shm_pool_create_buffer(pool, 0, cursor->bits->width, cursor->bits->height, cursor->bits->width * 4, WL_SHM_FORMAT_ARGB8888); - close(fd); + wl_shm_pool_destroy(pool); dixSetPrivate(&cursor->devPrivates, &xwl_cursor_private_key, buffer); diff --git a/hw/xfree86/xwayland/xwayland.c b/hw/xfree86/xwayland/xwayland.c index 829b4c251..9fb8e6e80 100644 --- a/hw/xfree86/xwayland/xwayland.c +++ b/hw/xfree86/xwayland/xwayland.c @@ -277,7 +277,8 @@ xwl_create_window_buffer_shm(struct xwl_window *xwl_window, uint32_t format; WindowPtr window = xwl_window->window; ScreenPtr screen = window->drawable.pScreen; - int i; + struct wl_shm_pool *pool; + int i, size; visual = wVisual(window); for (i = 0; i < screen->numVisuals; i++) @@ -289,10 +290,12 @@ xwl_create_window_buffer_shm(struct xwl_window *xwl_window, else format = WL_SHM_FORMAT_XRGB8888; - xwl_window->buffer = - wl_shm_create_buffer(xwl_window->xwl_screen->shm, fd, + size = pixmap->drawable.width * pixmap->drawable.width * 4; + pool = wl_shm_create_pool(xwl_window->xwl_screen->shm, fd, size); + xwl_window->buffer = wl_shm_pool_create_buffer(pool, 0, pixmap->drawable.width, pixmap->drawable.height, pixmap->drawable.width * 4, format); + wl_shm_pool_destroy(pool); return xwl_window->buffer ? Success : BadDrawable; } |