diff --git a/protocol/wayland.xml b/protocol/wayland.xml index acaa7061..fd542454 100644 --- a/protocol/wayland.xml +++ b/protocol/wayland.xml @@ -144,6 +144,9 @@ + + + diff --git a/wayland/wayland-server.h b/wayland/wayland-server.h index d1c655a8..1fd16eba 100644 --- a/wayland/wayland-server.h +++ b/wayland/wayland-server.h @@ -134,9 +134,10 @@ struct wl_resource { struct wl_buffer { struct wl_resource resource; - struct wl_compositor *compositor; + struct wl_client *client; struct wl_visual *visual; int32_t width, height; + uint32_t busy_count; void *user_data; }; diff --git a/wayland/wayland-shm.c b/wayland/wayland-shm.c index cdd78745..90d2fcfb 100644 --- a/wayland/wayland-shm.c +++ b/wayland/wayland-shm.c @@ -80,20 +80,21 @@ const static struct wl_buffer_interface shm_buffer_interface = { }; static struct wl_shm_buffer * -wl_shm_buffer_init(struct wl_shm *shm, uint32_t id, +wl_shm_buffer_init(struct wl_shm *shm, struct wl_client *client, uint32_t id, int32_t width, int32_t height, int32_t stride, struct wl_visual *visual, void *data) { struct wl_shm_buffer *buffer; - buffer = malloc(sizeof *buffer); + buffer = calloc(1, sizeof *buffer); if (buffer == NULL) return NULL; buffer->buffer.width = width; buffer->buffer.height = height; buffer->buffer.visual = visual; + buffer->buffer.client = client; buffer->stride = stride; buffer->data = data; @@ -147,7 +148,7 @@ shm_create_buffer(struct wl_client *client, struct wl_shm *shm, return; } - buffer = wl_shm_buffer_init(shm, id, + buffer = wl_shm_buffer_init(shm, client, id, width, height, stride, visual, data); if (buffer == NULL) {