A could of comments below, the rest looks good to me.
2014-09-23 8:21 GMT+03:00 kabeer khan <[email protected]>: > window : compare version and call appropriate destructor > data-device : change version of creation of data_device_manager and > data_device interfaces Maybe it would be better to split these two changes in separate commits. > > Signed-off-by: kabeer khan <[email protected]> > --- > clients/window.c | 15 ++++++++++----- > src/data-device.c | 15 ++++++++++----- > 2 files changed, 20 insertions(+), 10 deletions(-) > > diff --git a/clients/window.c b/clients/window.c > index e44d65c..5e9a2d4 100644 > --- a/clients/window.c > +++ b/clients/window.c > @@ -133,6 +133,7 @@ struct display { > > int has_rgb565; > int seat_version; > + int data_device_manager_version; > }; > > struct window_output { > @@ -5126,9 +5127,12 @@ input_destroy(struct input *input) > if (input->selection_offer) > data_offer_destroy(input->selection_offer); > > - if (input->data_device) > - wl_data_device_destroy(input->data_device); > - > + if (input->data_device) { > + if(input->display->data_device_manager_version >= 2) > + wl_data_device_release(input->data_device); > + else > + wl_data_device_destroy(input->data_device); > + } > if (input->display->seat_version >= 3) { > if (input->pointer) > wl_pointer_release(input->pointer); > @@ -5212,9 +5216,10 @@ registry_handle_global(void *data, struct wl_registry > *registry, uint32_t id, > d->shm = wl_registry_bind(registry, id, &wl_shm_interface, 1); > wl_shm_add_listener(d->shm, &shm_listener, d); > } else if (strcmp(interface, "wl_data_device_manager") == 0) { > + d->data_device_manager_version = MIN(version, 2); > d->data_device_manager = > - wl_registry_bind(registry, id, > - &wl_data_device_manager_interface, > 1); > + wl_registry_bind(registry, id, > + &wl_data_device_manager_interface, > d->data_device_manager_version); > } else if (strcmp(interface, "xdg_shell") == 0) { > d->xdg_shell = wl_registry_bind(registry, id, > &xdg_shell_interface, 1); > diff --git a/src/data-device.c b/src/data-device.c > index 75fc60c..de6ad2a 100644 > --- a/src/data-device.c > +++ b/src/data-device.c > @@ -761,10 +761,16 @@ data_device_set_selection(struct wl_client *client, > wl_resource_get_user_data(source_resource), > serial); > } > +static void > +data_device_release(struct wl_client *client, struct wl_resource *resource) > +{ > + wl_resource_destroy(resource); > +} > > static const struct wl_data_device_interface data_device_interface = { > data_device_start_drag, > data_device_set_selection, > + data_device_release > }; > > static void > @@ -844,7 +850,7 @@ get_data_device(struct wl_client *client, > struct wl_resource *resource; > > resource = wl_resource_create(client, > - &wl_data_device_interface, 1, id); > + &wl_data_device_interface, > wl_resource_get_version(manager_resource), id); > if (resource == NULL) { > wl_resource_post_no_memory(manager_resource); > return; > @@ -867,9 +873,8 @@ bind_manager(struct wl_client *client, > { > struct wl_resource *resource; > > - resource = > - wl_resource_create(client, > - &wl_data_device_manager_interface, 1, id); > + resource = wl_resource_create(client, > + &wl_data_device_manager_interface, > version, id); If i understand it correctly, the version used here should be MIN(version, 2), since the value of 'version' here is just the one the client passes to wl_registry.bind. > if (resource == NULL) { > wl_client_post_no_memory(client); > return; > @@ -909,7 +914,7 @@ WL_EXPORT int > wl_data_device_manager_init(struct wl_display *display) > { > if (wl_global_create(display, > - &wl_data_device_manager_interface, 1, > + &wl_data_device_manager_interface, 2, > NULL, bind_manager) == NULL) > return -1; > > -- > 2.1.0 > > _______________________________________________ > wayland-devel mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
