Also check for interface version wl_display_get_object_id().

This commit is contained in:
Kristian Høgsberg 2008-12-21 22:50:32 -05:00
parent 97079ad52c
commit 8049cbb88a
3 changed files with 8 additions and 6 deletions

View 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;