summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Vignatti <tiago.vignatti@intel.com>2012-04-16 17:31:49 +0300
committerChristopher James Halse Rogers <christopher.halse.rogers@canonical.com>2012-06-13 15:26:20 +1000
commitc982cc9397093c322a65aa88ca155fc7bfbd0787 (patch)
tree930f72a5475aefed656d69ccf3a38739a5812ec5
parent377e9628dc3fb3cb9d7ee1209f6df8ed0395845d (diff)
xwayland: track shm pool protocol changes
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
-rw-r--r--hw/xfree86/xwayland/xwayland-cursor.c7
-rw-r--r--hw/xfree86/xwayland/xwayland.c9
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;
}