Also check for interface version wl_display_get_object_id().
authorKristian Høgsberg <krh@redhat.com>
Mon, 22 Dec 2008 03:50:32 +0000 (22:50 -0500)
committerKristian Høgsberg <krh@redhat.com>
Mon, 22 Dec 2008 04:33:10 +0000 (23:33 -0500)
screenshot.c
wayland-client.c
wayland-client.h

index 931afa3..e3e677c 100644 (file)
@@ -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;
index 8a597f5..f3358b4 100644 (file)
@@ -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;
 
index 4f4adcc..1a41217 100644 (file)
@@ -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,