window: Use new wl_pointer/keyboard_release request

Since we bump the version we ask for from the compositor it is also
necessary to implement the new "name" event in the seat listener.
dev
Rob Bradford 12 years ago committed by Kristian Høgsberg
parent 69e25fc538
commit 080311879e
  1. 23
      clients/window.c

@ -130,6 +130,7 @@ struct display {
void *dummy_surface_data;
int has_rgb565;
int seat_version;
};
enum {
@ -3395,8 +3396,16 @@ seat_handle_capabilities(void *data, struct wl_seat *seat,
}
}
static void
seat_handle_name(void *data, struct wl_seat *seat,
const char *name)
{
}
static const struct wl_seat_listener seat_listener = {
seat_handle_capabilities,
seat_handle_name
};
void
@ -4937,6 +4946,8 @@ fini_xkb(struct input *input)
xkb_map_unref(input->xkb.keymap);
}
#define MAX(a,b) ((a) > (b) ? a : b)
static void
display_add_input(struct display *d, uint32_t id)
{
@ -4944,7 +4955,8 @@ display_add_input(struct display *d, uint32_t id)
input = xzalloc(sizeof *input);
input->display = d;
input->seat = wl_registry_bind(d->registry, id, &wl_seat_interface, 1);
input->seat = wl_registry_bind(d->registry, id, &wl_seat_interface,
MAX(d->seat_version, 3));
input->touch_focus = NULL;
input->pointer_focus = NULL;
input->keyboard_focus = NULL;
@ -4982,6 +4994,14 @@ input_destroy(struct input *input)
data_offer_destroy(input->selection_offer);
wl_data_device_destroy(input->data_device);
if (input->display->seat_version >= 3) {
if (input->pointer)
wl_pointer_release(input->pointer);
if (input->keyboard)
wl_keyboard_release(input->keyboard);
}
fini_xkb(input);
wl_surface_destroy(input->pointer_surface);
@ -5036,6 +5056,7 @@ registry_handle_global(void *data, struct wl_registry *registry, uint32_t id,
} else if (strcmp(interface, "wl_output") == 0) {
display_add_output(d, id);
} else if (strcmp(interface, "wl_seat") == 0) {
d->seat_version = version;
display_add_input(d, id);
} else if (strcmp(interface, "wl_shell") == 0) {
d->shell = wl_registry_bind(registry,

Loading…
Cancel
Save