summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2011-06-18 06:22:05 -0400
committerKristian Høgsberg <krh@bitplanet.net>2011-06-20 10:45:57 -0400
commit7c4766792119e24a1dc6b1b2d6b33dab030d9b67 (patch)
treeee03cbc5183cb16d826c1a4ad095d8ca5ac9e800
parent7a5c979f4c69391ea8240b17fdc8bcd7473b8262 (diff)
compositor-wayland: Update to new APIs
-rw-r--r--compositor/compositor-wayland.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/compositor/compositor-wayland.c b/compositor/compositor-wayland.c
index 6cd02ed..750e3e7 100644
--- a/compositor/compositor-wayland.c
+++ b/compositor/compositor-wayland.c
@@ -46,6 +46,7 @@ struct wayland_compositor {
struct wl_compositor *compositor;
struct wl_shell *shell;
struct wl_output *output;
+ struct wl_visual *visual;
struct {
int32_t x, y, width, height;
@@ -215,7 +216,6 @@ wayland_compositor_create_output(struct wayland_compositor *c,
int width, int height)
{
struct wayland_output *output;
- struct wl_visual *visual;
output = malloc(sizeof *output);
if (output == NULL)
@@ -228,11 +228,9 @@ wayland_compositor_create_output(struct wayland_compositor *c,
wl_compositor_create_surface(c->parent.compositor);
wl_surface_set_user_data(output->parent.surface, output);
- visual = wl_display_get_premultiplied_argb_visual(c->parent.display);
-
output->parent.egl_window =
wl_egl_window_create(output->parent.surface,
- width, height, visual);
+ width, height, c->parent.visual);
if (!output->parent.egl_window) {
fprintf(stderr, "failure to create wl_egl_window\n");
goto cleanup_output;
@@ -253,7 +251,7 @@ wayland_compositor_create_output(struct wayland_compositor *c,
return -1;
}
- wl_surface_map_toplevel(output->parent.surface);
+ wl_shell_set_toplevel(c->parent.shell, output->parent.surface);
glClearColor(0, 0, 0, 0.5);
@@ -417,6 +415,24 @@ display_add_input(struct wayland_compositor *c, uint32_t id)
}
static void
+compositor_handle_visual(void *data,
+ struct wl_compositor *compositor,
+ uint32_t id, uint32_t token)
+{
+ struct wayland_compositor *c = data;
+
+ switch (token) {
+ case WL_COMPOSITOR_VISUAL_ARGB32:
+ c->parent.visual = wl_visual_create(c->parent.display, id, 1);
+ break;
+ }
+}
+
+static const struct wl_compositor_listener compositor_listener = {
+ compositor_handle_visual,
+};
+
+static void
display_handle_global(struct wl_display *display, uint32_t id,
const char *interface, uint32_t version, void *data)
{
@@ -424,6 +440,8 @@ display_handle_global(struct wl_display *display, uint32_t id,
if (strcmp(interface, "wl_compositor") == 0) {
c->parent.compositor = wl_compositor_create(display, id, 1);
+ wl_compositor_add_listener(c->parent.compositor,
+ &compositor_listener, c);
} else if (strcmp(interface, "wl_output") == 0) {
c->parent.output = wl_output_create(display, id, 1);
wl_output_add_listener(c->parent.output, &output_listener, c);