summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Bradford <rob@linux.intel.com>2012-10-12 18:50:33 +0100
committerNeil Roberts <neil@linux.intel.com>2012-10-18 17:24:25 +0100
commitdb50c3015c589375029a4c26c58db8295bb17bca (patch)
tree764511da8747ae7c28176c43b6e4def9f1d89b28
parent22183265b021dd038338b4398056c0a1eae77edb (diff)
downloadcogl-db50c3015c589375029a4c26c58db8295bb17bca.tar.gz
wayland: Port to new Wayland protocol
Reviewed-by: Neil Roberts <neil@linux.intel.com>
-rw-r--r--cogl/winsys/cogl-winsys-egl-wayland.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/cogl/winsys/cogl-winsys-egl-wayland.c b/cogl/winsys/cogl-winsys-egl-wayland.c
index 9c4480ad..6fda3f4d 100644
--- a/cogl/winsys/cogl-winsys-egl-wayland.c
+++ b/cogl/winsys/cogl-winsys-egl-wayland.c
@@ -49,6 +49,7 @@ typedef struct _CoglRendererWayland
struct wl_display *wayland_display;
struct wl_compositor *wayland_compositor;
struct wl_shell *wayland_shell;
+ struct wl_registry *wayland_registry;
} CoglRendererWayland;
typedef struct _CoglDisplayWayland
@@ -74,21 +75,21 @@ typedef struct _CoglOnscreenWayland
} CoglOnscreenWayland;
static void
-display_handle_global_cb (struct wl_display *display,
- uint32_t id,
- const char *interface,
- uint32_t version,
- void *data)
+registry_handle_global_cb (void *data,
+ struct wl_registry *registry,
+ uint32_t id,
+ const char *interface,
+ uint32_t version)
{
CoglRendererEGL *egl_renderer = (CoglRendererEGL *)data;
CoglRendererWayland *wayland_renderer = egl_renderer->platform;
if (strcmp (interface, "wl_compositor") == 0)
wayland_renderer->wayland_compositor =
- wl_display_bind (display, id, &wl_compositor_interface);
+ wl_registry_bind (registry, id, &wl_compositor_interface, 1);
else if (strcmp(interface, "wl_shell") == 0)
wayland_renderer->wayland_shell =
- wl_display_bind (display, id, &wl_shell_interface);
+ wl_registry_bind (registry, id, &wl_shell_interface, 1);
}
static void
@@ -102,6 +103,10 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
g_slice_free (CoglRendererEGL, egl_renderer);
}
+static const struct wl_registry_listener registry_listener = {
+ registry_handle_global_cb,
+};
+
static CoglBool
_cogl_winsys_renderer_connect (CoglRenderer *renderer,
CoglError **error)
@@ -146,9 +151,12 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
goto error;
}
- wl_display_add_global_listener (wayland_renderer->wayland_display,
- display_handle_global_cb,
- egl_renderer);
+ wayland_renderer->wayland_registry =
+ wl_display_get_registry (wayland_renderer->wayland_display);
+
+ wl_registry_add_listener (wayland_renderer->wayland_registry,
+ &registry_listener,
+ egl_renderer);
}
/*