compositor: Track pointer image protocol change
The request pointer.attach was replaced with pointer.set_cursor that
lets a client set the cursor surface for a given pointer.
diff --git a/clients/window.c b/clients/window.c
index 53022aa..57443d9 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -189,6 +189,7 @@
struct window *pointer_focus;
struct window *keyboard_focus;
int current_cursor;
+ struct wl_surface *pointer_surface;
uint32_t modifiers;
uint32_t pointer_enter_serial;
float sx, sy;
@@ -2295,8 +2296,12 @@
return;
input->current_cursor = pointer;
- wl_pointer_attach(input->pointer, input->pointer_enter_serial,
- buffer, image->hotspot_x, image->hotspot_y);
+ wl_pointer_set_cursor(input->pointer, input->display->serial,
+ input->pointer_surface,
+ image->hotspot_x, image->hotspot_y);
+ wl_surface_attach(input->pointer_surface, buffer, 0, 0);
+ wl_surface_damage(input->pointer_surface, 0, 0,
+ image->width, image->height);
}
void
@@ -3168,6 +3173,8 @@
input->seat);
wl_data_device_add_listener(input->data_device, &data_device_listener,
input);
+
+ input->pointer_surface = wl_compositor_create_surface(d->compositor);
}
static void
@@ -3190,6 +3197,8 @@
wl_data_device_destroy(input->data_device);
fini_xkb(input);
+ wl_surface_destroy(input->pointer_surface);
+
wl_list_remove(&input->link);
wl_seat_destroy(input->seat);
free(input);