summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Bradford <rob@linux.intel.com>2012-10-12 18:50:33 +0100
committerRob Bradford <rob@linux.intel.com>2012-10-12 18:50:33 +0100
commitdf21c7a3dcb61f8e8cc8291cbf27bbc1eda8dc68 (patch)
tree56be496eed413d30ee3dfbd41b2656c793ea94d9
parentcb274ad727c5b604c5a00df8546707f7c3ec088d (diff)
downloadcogl-rbradford/cogl-1.12/wayland-0.99.tar.gz
wayland: Port to new Wayland protocolrbradford/cogl-1.12/wayland-0.99
-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 c1dec244..9c45a7d5 100644
--- a/cogl/winsys/cogl-winsys-egl-wayland.c
+++ b/cogl/winsys/cogl-winsys-egl-wayland.c
@@ -48,6 +48,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
@@ -73,21 +74,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
@@ -101,6 +102,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,
GError **error)
@@ -145,9 +150,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);
}
/*