summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@redhat.com>2008-12-21 22:50:32 -0500
committerKristian Høgsberg <krh@redhat.com>2008-12-21 23:33:10 -0500
commit8049cbb88a4d2c93cdee9188eeb1d219aebcd343 (patch)
tree320f3cc0c4daef99d18351596ba1cbfbba9f0bae
parent97079ad52c313d4b622110cae978ee7c2392b714 (diff)
downloadwayland-8049cbb88a4d2c93cdee9188eeb1d219aebcd343.tar.gz
wayland-8049cbb88a4d2c93cdee9188eeb1d219aebcd343.tar.xz
wayland-8049cbb88a4d2c93cdee9188eeb1d219aebcd343.zip
Also check for interface version wl_display_get_object_id().
-rw-r--r--screenshot.c2
-rw-r--r--wayland-client.c10
-rw-r--r--wayland-client.h2
3 files changed, 8 insertions, 6 deletions
diff --git a/screenshot.c b/screenshot.c
index 931afa3..e3e677c 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 8a597f5..f3358b4 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 4f4adcc..1a41217 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,