From 8049cbb88a4d2c93cdee9188eeb1d219aebcd343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Sun, 21 Dec 2008 22:50:32 -0500 Subject: [PATCH] Also check for interface version wl_display_get_object_id(). --- screenshot.c | 2 +- wayland-client.c | 10 ++++++---- wayland-client.h | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/screenshot.c b/screenshot.c index 931afa39..e3e677ca 100644 --- a/screenshot.c +++ b/screenshot.c @@ -47,7 +47,7 @@ screenshooter_create(struct wl_display *display) struct screenshooter *screenshooter; uint32_t id; - id = wl_display_get_object_id(display, "screenshooter"); + id = wl_display_get_object_id(display, "screenshooter", 1); if (id == 0) { fprintf(stderr, "server doesn't support screenshooter interface\n"); return NULL; diff --git a/wayland-client.c b/wayland-client.c index 8a597f55..f3358b40 100644 --- a/wayland-client.c +++ b/wayland-client.c @@ -166,7 +166,7 @@ wl_display_create(const char *name, size_t name_size) wl_list_init(&display->visual_list); display->proxy.interface = &wl_display_interface; - display->proxy.id = wl_display_get_object_id(display, "display"); + display->proxy.id = wl_display_get_object_id(display, "display", 1); display->proxy.display = display; display->connection = wl_connection_create(display->fd, @@ -188,14 +188,16 @@ wl_display_destroy(struct wl_display *display) } WL_EXPORT uint32_t -wl_display_get_object_id(struct wl_display *display, const char *interface) +wl_display_get_object_id(struct wl_display *display, + const char *interface, uint32_t version) { struct wl_global *global; global = container_of(display->global_list.next, struct wl_global, link); while (&global->link != &display->global_list) { - if (strcmp(global->interface, interface) == 0) + if (strcmp(global->interface, interface) == 0 && + global->version >= version) return global->id; global = container_of(global->link.next, @@ -342,7 +344,7 @@ wl_display_get_compositor(struct wl_display *display) struct wl_compositor *compositor; uint32_t id; - id = wl_display_get_object_id(display, "compositor"); + id = wl_display_get_object_id(display, "compositor", 1); if (id == 0) return NULL; diff --git a/wayland-client.h b/wayland-client.h index 4f4adcca..1a412177 100644 --- a/wayland-client.h +++ b/wayland-client.h @@ -88,7 +88,7 @@ void wl_surface_damage(struct wl_surface *surface, * objects. */ uint32_t wl_display_get_object_id(struct wl_display *display, - const char *interface); + const char *interface, uint32_t version); uint32_t wl_display_allocate_id(struct wl_display *display); void wl_display_write(struct wl_display *display, const void *data,