commit fd0e372626f5593a16e8ffdc411d5ebda4fb9802
parent 682473bd7dc97c72031c5264637783fccd243d45
Author: Michael Forney <mforney@mforney.org>
Date: Thu, 16 Jan 2014 02:16:47 -0800
Port to new wld API
This temporarily drops SHM support.
Diffstat:
13 files changed, 88 insertions(+), 315 deletions(-)
diff --git a/libswc/compositor.c b/libswc/compositor.c
@@ -1,6 +1,5 @@
#include "swc.h"
#include "compositor.h"
-#include "cursor_surface.h"
#include "data_device_manager.h"
#include "drm.h"
#include "drm_buffer.h"
@@ -11,6 +10,7 @@
#include "seat.h"
#include "surface.h"
#include "util.h"
+#include "view.h"
#include <stdlib.h>
#include <stdio.h>
@@ -47,54 +47,22 @@ struct view
struct buffer_state
{
- struct wld_drawable * drawable;
- /* Only used for SHM buffers */
- pixman_image_t * dst, * src;
+ struct wld_buffer * buffer;
struct wl_listener destroy_listener;
};
struct render_target
{
- struct wld_drawable * drawable;
+ struct wld_buffer * buffer;
pixman_rectangle32_t geometry;
};
-static inline uint32_t pixman_format(uint32_t format)
-{
- switch (format)
- {
- case WL_SHM_FORMAT_XRGB8888:
- return PIXMAN_x8r8g8b8;
- case WL_SHM_FORMAT_ARGB8888:
- return PIXMAN_a8r8g8b8;
- }
-
- return 0;
-}
-
-static inline uint32_t wld_format(uint32_t format)
-{
- switch (format)
- {
- case WL_SHM_FORMAT_XRGB8888:
- return WLD_FORMAT_XRGB8888;
- case WL_SHM_FORMAT_ARGB8888:
- return WLD_FORMAT_ARGB8888;
- }
-
- return 0;
-}
-
static void handle_buffer_destroy(struct wl_listener * listener, void * data)
{
struct buffer_state * state
= CONTAINER_OF(listener, typeof(*state), destroy_listener);
- if (state->dst)
- pixman_image_unref(state->dst);
- if (state->src)
- pixman_image_unref(state->src);
- wld_destroy_drawable(state->drawable);
+ wld_destroy_buffer(state->buffer);
free(state);
}
@@ -147,9 +115,10 @@ static void repaint_surface(struct render_target * target,
pixman_region32_translate(&surface_damage,
-surface->geometry.x, -surface->geometry.y);
- wld_copy_region(state->drawable, target->drawable, &surface_damage,
+ wld_copy_region(swc.drm->renderer, state->buffer,
surface->geometry.x - target->geometry.x,
- surface->geometry.y - target->geometry.y);
+ surface->geometry.y - target->geometry.y,
+ &surface_damage);
}
pixman_region32_fini(&surface_damage);
@@ -161,7 +130,7 @@ static void repaint_surface(struct render_target * target,
pixman_region32_translate(&border_damage,
-target->geometry.x, -target->geometry.y);
- wld_fill_region(target->drawable, view->border.color, &border_damage);
+ wld_fill_region(swc.drm->renderer, view->border.color, &border_damage);
}
pixman_region32_fini(&border_damage);
@@ -183,7 +152,7 @@ static void renderer_repaint(struct render_target * target,
{
pixman_region32_translate(base_damage,
-target->geometry.x, -target->geometry.y);
- wld_fill_region(target->drawable, 0xff000000, base_damage);
+ wld_fill_region(swc.drm->renderer, 0xff000000, base_damage);
}
wl_list_for_each_reverse(surface, surfaces, link)
@@ -192,14 +161,13 @@ static void renderer_repaint(struct render_target * target,
repaint_surface(target, surface, damage);
}
- wld_flush(target->drawable);
+ wld_flush(swc.drm->renderer);
}
static void renderer_attach(struct swc_surface * surface,
struct wl_resource * resource)
{
struct buffer_state * state;
- struct wl_shm_buffer * shm_buffer;
struct swc_drm_buffer * drm_buffer;
if (!resource)
@@ -212,30 +180,12 @@ static void renderer_attach(struct swc_surface * surface,
if (!(state = malloc(sizeof *state)))
return;
- if ((shm_buffer = wl_shm_buffer_get(resource)))
- {
- uint32_t width = wl_shm_buffer_get_width(shm_buffer),
- height = wl_shm_buffer_get_height(shm_buffer),
- format = wl_shm_buffer_get_format(shm_buffer),
- pitch = wl_shm_buffer_get_stride(shm_buffer);
- void * data = wl_shm_buffer_get_data(shm_buffer);
-
- state->drawable = wld_drm_create_drawable(swc.drm->context,
- width, height,
- wld_format(format));
- state->src = pixman_image_create_bits_no_clear(pixman_format(format),
- width, height,
- data, pitch);
- state->dst = wld_map(state->drawable);
- }
- else if ((drm_buffer = swc_drm_buffer_get(resource)))
+ if ((drm_buffer = swc_drm_buffer_get(resource)))
{
if (!(state = malloc(sizeof *state)))
return;
- state->drawable = drm_buffer->drawable;
- state->src = NULL;
- state->dst = NULL;
+ state->buffer = drm_buffer->wld;
}
else
{
@@ -249,18 +199,6 @@ static void renderer_attach(struct swc_surface * surface,
static void renderer_flush_surface(struct swc_surface * surface)
{
- struct buffer_state * state;
-
- state = buffer_state(surface->state.buffer);
- assert(state);
-
- if (!state->src || !state->dst)
- return;
-
- pixman_image_set_clip_region32(state->src, &surface->state.damage);
- pixman_image_composite32(PIXMAN_OP_SRC, state->src, NULL, state->dst,
- 0, 0, 0, 0, 0, 0,
- state->drawable->width, state->drawable->height);
}
/* }}} */
@@ -636,13 +574,13 @@ static void repaint_output(struct swc_compositor * compositor,
pixman_region32_init(&base_damage);
pixman_region32_subtract(&base_damage, damage, &compositor->opaque);
- target.drawable = swc_plane_get_buffer(&output->framebuffer_plane);
+ target.buffer = swc_plane_get_buffer(&output->framebuffer_plane);
target.geometry.x = output->framebuffer_plane.output->geometry.x
+ output->framebuffer_plane.x;
target.geometry.y = output->framebuffer_plane.output->geometry.y
+ output->framebuffer_plane.y;
- target.geometry.width = target.drawable->width;
- target.geometry.height = target.drawable->height;
+ target.geometry.width = target.buffer->width;
+ target.geometry.height = target.buffer->height;
renderer_repaint(&target, damage, &base_damage,
&compositor->surfaces);
@@ -778,26 +716,6 @@ static void handle_drm_event(struct wl_listener * listener, void * data)
}
}
-static void handle_pointer_event(struct wl_listener * listener, void * data)
-{
- struct swc_event * event = data;
- struct swc_pointer_event_data * event_data = event->data;
- struct swc_compositor * compositor;
-
- compositor = CONTAINER_OF(listener, typeof(*compositor), pointer_listener);
-
- switch (event->type)
- {
- case SWC_POINTER_CURSOR_CHANGED:
- if (event_data->old)
- swc_surface_set_view(event_data->old, NULL);
-
- if (event_data->new)
- swc_surface_set_view(event_data->new, &compositor->cursor_view);
- break;
- }
-}
-
static void handle_terminate(uint32_t time, uint32_t value, void * data)
{
struct wl_display * display = data;
@@ -873,10 +791,8 @@ bool swc_compositor_initialize(struct swc_compositor * compositor,
compositor->display = display;
compositor->drm_listener.notify = &handle_drm_event;
- compositor->pointer_listener.notify = &handle_pointer_event;
compositor->scheduled_updates = 0;
compositor->pending_flips = 0;
- swc_view_initialize(&compositor->cursor_view, &swc_cursor_view_impl);
compositor->pointer_handler = (struct swc_pointer_handler) {
.focus = &handle_focus,
.motion = &handle_motion
diff --git a/libswc/compositor.h b/libswc/compositor.h
@@ -29,12 +29,9 @@ struct swc_compositor
uint32_t scheduled_updates;
};
- struct swc_view cursor_view;
-
struct swc_pointer_handler pointer_handler;
struct wl_listener drm_listener;
- struct wl_listener pointer_listener;
};
bool swc_compositor_initialize(struct swc_compositor * compositor,
diff --git a/libswc/cursor_surface.c b/libswc/cursor_surface.c
@@ -1,114 +0,0 @@
-/* swc: cursor_surface.c
- *
- * Copyright (c) 2013 Michael Forney
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include "cursor_surface.h"
-#include "compositor.h"
-#include "output.h"
-#include "plane.h"
-
-#include <string.h>
-#include <wld/wld.h>
-
-/* Cursor view */
-static const uint32_t cursor_buffer_size = 64 * 64 * 4;
-
-static void update_plane(struct swc_plane * plane, void * data)
-{
- struct wld_drawable * drawable = swc_plane_get_buffer(plane);
-
- wld_write(drawable, data, cursor_buffer_size);
- swc_plane_flip(plane);
-}
-
-static void attach(struct swc_surface * surface,
- struct wl_resource * resource)
-{
- struct swc_compositor * compositor = CONTAINER_OF
- (surface->view, typeof(*compositor), cursor_view);
-
- if (pixman_region32_not_empty(&surface->state.damage))
- {
- struct wl_shm_buffer * buffer = wl_shm_buffer_get(resource);
- uint32_t width, height;
-
- if (!buffer)
- return;
-
- width = wl_shm_buffer_get_width(buffer);
- height = wl_shm_buffer_get_height(buffer);
-
- if (width <= 64 && height <= 64)
- {
- struct swc_output * output;
- char data[cursor_buffer_size];
-
- memset(data, 0, sizeof data);
- pixman_blt(wl_shm_buffer_get_data(buffer), (uint32_t *) data,
- wl_shm_buffer_get_stride(buffer) >> 2, 64, 32, 32,
- 0, 0, 0, 0, width, height);
- wl_buffer_send_release(resource);
- pixman_region32_clear(&surface->state.damage);
-
- wl_list_for_each(output, &compositor->outputs, link)
- {
- if (swc_rectangle_overlap(&output->geometry,
- &surface->geometry))
- {
- update_plane(&output->cursor_plane, data);
- }
- }
- }
- }
-}
-
-static void update(struct swc_surface * surface)
-{
- swc_surface_send_frame_callbacks(surface, swc_time());
-}
-
-static void move(struct swc_surface * surface, int32_t x, int32_t y)
-{
- struct swc_compositor * compositor = CONTAINER_OF
- (surface->view, typeof(*compositor), cursor_view);
- struct swc_output * output;
-
- surface->geometry.x = x;
- surface->geometry.y = y;
-
- wl_list_for_each(output, &compositor->outputs, link)
- {
- if (swc_rectangle_overlap(&output->geometry, &surface->geometry))
- {
- swc_plane_move(&output->cursor_plane,
- surface->geometry.x - output->geometry.x,
- surface->geometry.y - output->geometry.y);
- }
- }
-}
-
-const struct swc_view_impl swc_cursor_view_impl = {
- .attach = &attach,
- .update = &update,
- .move = &move
-};
-
diff --git a/libswc/cursor_surface.h b/libswc/cursor_surface.h
@@ -1,32 +0,0 @@
-/* swc: cursor_surface.h
- *
- * Copyright (c) 2013 Michael Forney
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef SWC_CURSOR_SURFACE_H
-#define SWC_CURSOR_SURFACE_H
-
-#include "view.h"
-
-extern const struct swc_view_impl swc_cursor_view_impl;
-
-#endif
-
diff --git a/libswc/drm.c b/libswc/drm.c
@@ -72,16 +72,17 @@ static void create_buffer(struct wl_client * client,
uint32_t name, int32_t width, int32_t height,
uint32_t stride, uint32_t format)
{
- struct wld_drawable * drawable;
+ struct wld_buffer * wld;
struct swc_drm_buffer * buffer;
+ union wld_object object = { .u32 = name };
- drawable = wld_drm_import_gem(swc.drm->context, width, height, format,
- name, stride);
+ wld = wld_import_buffer(swc.drm->context, WLD_DRM_OBJECT_GEM_NAME, object,
+ width, height, format, stride);
- if (!drawable)
+ if (!wld)
goto error0;
- buffer = swc_drm_buffer_new(client, id, drawable);
+ buffer = swc_drm_buffer_new(client, id, wld);
if (!buffer)
goto error1;
@@ -89,7 +90,7 @@ static void create_buffer(struct wl_client * client,
return;
error1:
- wld_destroy_drawable(drawable);
+ wld_destroy_buffer(wld);
error0:
wl_resource_post_no_memory(resource);
}
@@ -114,17 +115,18 @@ static void create_prime_buffer(struct wl_client * client,
int32_t offset1, int32_t stride1,
int32_t offset2, int32_t stride2)
{
- struct wld_drawable * drawable;
+ struct wld_buffer * wld;
struct swc_drm_buffer * buffer;
+ union wld_object object = { .i = fd };
- drawable = wld_drm_import(swc.drm->context, width, height, format,
- fd, stride0);
+ wld = wld_import_buffer(swc.drm->context, WLD_DRM_OBJECT_PRIME_FD, object,
+ width, height, format, stride0);
close(fd);
- if (!drawable)
+ if (!wld)
goto error0;
- buffer = swc_drm_buffer_new(client, id, drawable);
+ buffer = swc_drm_buffer_new(client, id, wld);
if (!buffer)
goto error1;
@@ -132,7 +134,7 @@ static void create_prime_buffer(struct wl_client * client,
return;
error1:
- wld_destroy_drawable(drawable);
+ wld_destroy_buffer(wld);
error0:
wl_resource_post_no_memory(resource);
}
@@ -350,13 +352,19 @@ bool swc_drm_initialize(const char * seat_name)
goto error2;
}
+ if (!(swc.drm->renderer = wld_create_renderer(swc.drm->context)))
+ {
+ ERROR("Could not create WLD DRM renderer\n");
+ goto error3;
+ }
+
drm.global = wl_global_create(swc.display, &wl_drm_interface, 2,
NULL, &bind_drm);
if (!drm.global)
{
ERROR("Could not create wl_drm global\n");
- goto error3;
+ goto error4;
}
drm.event_source = wl_event_loop_add_fd
@@ -365,15 +373,17 @@ bool swc_drm_initialize(const char * seat_name)
if (!drm.event_source)
{
ERROR("Could not create DRM event source\n");
- goto error4;
+ goto error5;
}
return true;
- error4:
+ error5:
wl_global_destroy(drm.global);
+ error4:
+ wld_destroy_renderer(swc.drm->renderer);
error3:
- wld_drm_destroy_context(swc.drm->context);
+ wld_destroy_context(swc.drm->context);
error2:
close(swc.drm->fd);
error1:
@@ -386,7 +396,8 @@ void swc_drm_finalize()
{
wl_event_source_remove(drm.event_source);
wl_global_destroy(drm.global);
- wld_drm_destroy_context(swc.drm->context);
+ wld_destroy_renderer(swc.drm->renderer);
+ wld_destroy_context(swc.drm->context);
free(drm.path);
close(swc.drm->fd);
}
diff --git a/libswc/drm.h b/libswc/drm.h
@@ -19,7 +19,8 @@ struct swc_drm_event_data
struct swc_drm
{
int fd;
- struct wld_drm_context * context;
+ struct wld_context * context;
+ struct wld_renderer * renderer;
struct wl_signal event_signal;
};
diff --git a/libswc/drm_buffer.c b/libswc/drm_buffer.c
@@ -45,7 +45,7 @@ static void buffer_destroy(struct wl_resource * resource)
}
struct swc_drm_buffer * swc_drm_buffer_new
- (struct wl_client * client, uint32_t id, struct wld_drawable * drawable)
+ (struct wl_client * client, uint32_t id, struct wld_buffer * wld)
{
struct swc_drm_buffer * buffer;
@@ -57,7 +57,7 @@ struct swc_drm_buffer * swc_drm_buffer_new
buffer->resource = wl_resource_create(client, &wl_buffer_interface, 1, id);
wl_resource_set_implementation(buffer->resource, &drm_buffer_implementation,
buffer, &buffer_destroy);
- buffer->drawable = drawable;
+ buffer->wld = wld;
return buffer;
}
diff --git a/libswc/drm_buffer.h b/libswc/drm_buffer.h
@@ -31,11 +31,11 @@ struct wl_client;
struct swc_drm_buffer
{
struct wl_resource * resource;
- struct wld_drawable * drawable;
+ struct wld_buffer * wld;
};
struct swc_drm_buffer * swc_drm_buffer_new
- (struct wl_client * client, uint32_t id, struct wld_drawable * drawable);
+ (struct wl_client * client, uint32_t id, struct wld_buffer * wld);
struct swc_drm_buffer * swc_drm_buffer_get(struct wl_resource * resource);
diff --git a/libswc/local.mk b/libswc/local.mk
@@ -35,7 +35,6 @@ SWC_SOURCES = \
libswc/output.c \
libswc/plane.c \
libswc/surface.c \
- libswc/cursor_surface.c \
libswc/region.c \
libswc/input_focus.c \
libswc/keyboard.c \
diff --git a/libswc/plane.c b/libswc/plane.c
@@ -35,56 +35,54 @@
struct framebuffer
{
- struct wld_drawable * drawable;
- uint32_t fb_id;
+ struct wld_buffer * buffer;
+ uint32_t id;
};
static bool framebuffer_initialize(struct swc_plane * plane)
{
- struct framebuffer * buffer
- = swc_double_buffer_front(&plane->double_buffer);
+ struct framebuffer * fb = swc_double_buffer_front(&plane->double_buffer);
return drmModeSetCrtc(swc.drm->fd, plane->output->crtc_id,
- buffer->fb_id, 0, 0, &plane->output->connector_id, 1,
+ fb->id, 0, 0, &plane->output->connector_id, 1,
&plane->output->current_mode->info) == 0;
}
static void * framebuffer_create_buffer(struct swc_plane * plane)
{
- struct wld_drawable * drawable;
+ struct wld_buffer * buffer;
struct swc_output * output = plane->output;
- struct framebuffer * buffer;
- uint32_t handle;
+ struct framebuffer * fb;
+ union wld_object object;
- if (!(buffer = malloc(sizeof *buffer)))
+ if (!(fb = malloc(sizeof *fb)))
goto error0;
- drawable = wld_drm_create_drawable(swc.drm->context,
- output->geometry.width,
- output->geometry.height,
- WLD_FORMAT_XRGB8888);
+ buffer = wld_create_buffer(swc.drm->context,
+ output->geometry.width, output->geometry.height,
+ WLD_FORMAT_XRGB8888);
- if (!drawable)
+ if (!buffer)
{
- fprintf(stderr, "Could not create DRM drawable for framebuffer\n");
+ fprintf(stderr, "Could not create DRM buffer for framebuffer\n");
goto error1;
}
- handle = wld_drm_get_handle(drawable);
+ wld_export(buffer, WLD_DRM_OBJECT_HANDLE, &object);
- if (drmModeAddFB(swc.drm->fd, drawable->width, drawable->height,
- 24, 32, drawable->pitch, handle, &buffer->fb_id) != 0)
+ if (drmModeAddFB(swc.drm->fd, buffer->width, buffer->height,
+ 24, 32, buffer->pitch, object.u32, &fb->id) != 0)
{
fprintf(stderr, "drmModeAddFB failed\n");
goto error2;
}
- buffer->drawable = drawable;
+ fb->buffer = buffer;
return buffer;
error2:
- wld_destroy_drawable(drawable);
+ wld_destroy_buffer(buffer);
error1:
free(buffer);
error0:
@@ -93,25 +91,25 @@ static void * framebuffer_create_buffer(struct swc_plane * plane)
static void framebuffer_destroy_buffer(struct swc_plane * plane, void * data)
{
- struct framebuffer * buffer = data;
+ struct framebuffer * fb = data;
- drmModeRmFB(swc.drm->fd, buffer->fb_id);
- wld_destroy_drawable(buffer->drawable);
+ drmModeRmFB(swc.drm->fd, fb->id);
+ wld_destroy_buffer(fb->buffer);
}
-static struct wld_drawable * framebuffer_get_buffer(void * data)
+static struct wld_buffer * framebuffer_get_buffer(void * data)
{
- struct framebuffer * buffer = data;
+ struct framebuffer * fb = data;
- return buffer->drawable;
+ return fb->buffer;
}
static bool framebuffer_flip(struct swc_plane * plane)
{
struct swc_output * output = plane->output;
- struct framebuffer * buffer = swc_double_buffer_back(&plane->double_buffer);
+ struct framebuffer * fb = swc_double_buffer_back(&plane->double_buffer);
- return drmModePageFlip(swc.drm->fd, output->crtc_id, buffer->fb_id,
+ return drmModePageFlip(swc.drm->fd, output->crtc_id, fb->id,
DRM_MODE_PAGE_FLIP_EVENT, output) == 0;
}
@@ -130,30 +128,29 @@ static bool cursor_initialize(struct swc_plane * plane)
static void * cursor_create_buffer(struct swc_plane * plane)
{
- return wld_drm_create_drawable(swc.drm->context, 64, 64,
- WLD_FORMAT_ARGB8888);
+ return wld_create_buffer(swc.drm->context, 64, 64, WLD_FORMAT_ARGB8888);
}
static void cursor_destroy_buffer(struct swc_plane * plane, void * data)
{
- struct wld_drawable * drawable = data;
+ struct wld_buffer * buffer = data;
- wld_destroy_drawable(drawable);
+ wld_destroy_buffer(buffer);
}
-static struct wld_drawable * cursor_get_buffer(void * data)
+static struct wld_buffer * cursor_get_buffer(void * data)
{
return data;
}
static bool cursor_flip(struct swc_plane * plane)
{
- struct wld_drawable * drawable
- = swc_double_buffer_back(&plane->double_buffer);
- int handle = wld_drm_get_handle(drawable);
+ struct wld_buffer * buffer = swc_double_buffer_back(&plane->double_buffer);
+ union wld_object object;
+ wld_export(buffer, WLD_DRM_OBJECT_HANDLE, &object);
return drmModeSetCursor(swc.drm->fd, plane->output->crtc_id,
- handle, 64, 64) == 0;
+ object.u32, 64, 64) == 0;
}
static bool cursor_move(struct swc_plane * plane, int32_t x, int32_t y)
@@ -216,7 +213,7 @@ bool swc_plane_move(struct swc_plane * plane, int32_t x, int32_t y)
return false;
}
-struct wld_drawable * swc_plane_get_buffer(struct swc_plane * plane)
+struct wld_buffer * swc_plane_get_buffer(struct swc_plane * plane)
{
void * back = swc_double_buffer_back(&plane->double_buffer);
diff --git a/libswc/plane.h b/libswc/plane.h
@@ -33,7 +33,7 @@ struct swc_plane_interface
bool (* initialize)(struct swc_plane * plane);
void * (* create_buffer)(struct swc_plane * plane);
void (* destroy_buffer)(struct swc_plane * plane, void * data);
- struct wld_drawable * (* get_buffer)(void * data);
+ struct wld_buffer * (* get_buffer)(void * data);
bool (* flip)(struct swc_plane * plane);
bool (* move)(struct swc_plane * plane, int32_t x, int32_t y);
};
@@ -57,7 +57,7 @@ bool swc_plane_flip(struct swc_plane * plane);
bool swc_plane_move(struct swc_plane * plane, int32_t x, int32_t y);
-struct wld_drawable * swc_plane_get_buffer(struct swc_plane * plane);
+struct wld_buffer * swc_plane_get_buffer(struct swc_plane * plane);
extern const struct swc_plane_interface swc_framebuffer_plane;
extern const struct swc_plane_interface swc_cursor_plane;
diff --git a/libswc/surface.c b/libswc/surface.c
@@ -255,8 +255,8 @@ static void commit(struct wl_client * client, struct wl_resource * resource)
}
else if ((drm_buffer = swc_drm_buffer_get(surface->state.buffer)))
{
- set_size(surface, drm_buffer->drawable->width,
- drm_buffer->drawable->height);
+ set_size(surface,
+ drm_buffer->wld->width, drm_buffer->wld->height);
}
else
WARNING("Unknown buffer type attached\n");
diff --git a/libswc/swc.c b/libswc/swc.c
@@ -61,8 +61,6 @@ static void setup_compositor()
swc.seat->pointer->handler = &compositor.pointer_handler;
wl_signal_add(&swc.seat->pointer->focus.event_signal,
swc_window_enter_listener);
- wl_signal_add(&swc.seat->pointer->event_signal,
- &compositor.pointer_listener);
/* Calculate pointer region */
pixman_region32_init(&pointer_region);