diff options
author | Rob Bradford <rob@linux.intel.com> | 2012-10-12 18:50:33 +0100 |
---|---|---|
committer | Neil Roberts <neil@linux.intel.com> | 2012-10-18 17:24:25 +0100 |
commit | db50c3015c589375029a4c26c58db8295bb17bca (patch) | |
tree | 764511da8747ae7c28176c43b6e4def9f1d89b28 | |
parent | 22183265b021dd038338b4398056c0a1eae77edb (diff) | |
download | cogl-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.c | 28 |
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, + ®istry_listener, + egl_renderer); } /* |