aboutsummaryrefslogtreecommitdiffstats
path: root/compositor.c
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2010-08-16 17:46:25 -0400
committerKristian Høgsberg <krh@bitplanet.net>2010-08-16 17:46:25 -0400
commitf4cb20139279f325420d39eb61817b4c2b861a04 (patch)
tree45d4da29c778ab72100d76c1e714c424e9cf6edf /compositor.c
parentRemove duplicate #define ARRAY_LENGTH (diff)
downloadwayland-f4cb20139279f325420d39eb61817b4c2b861a04.tar
wayland-f4cb20139279f325420d39eb61817b4c2b861a04.tar.gz
wayland-f4cb20139279f325420d39eb61817b4c2b861a04.tar.bz2
wayland-f4cb20139279f325420d39eb61817b4c2b861a04.tar.lz
wayland-f4cb20139279f325420d39eb61817b4c2b861a04.tar.xz
wayland-f4cb20139279f325420d39eb61817b4c2b861a04.tar.zst
wayland-f4cb20139279f325420d39eb61817b4c2b861a04.zip
Fix a few bugs in compositor cursor handling
Diffstat (limited to 'compositor.c')
-rw-r--r--compositor.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/compositor.c b/compositor.c
index 89fc1a6..00da446 100644
--- a/compositor.c
+++ b/compositor.c
@@ -914,11 +914,23 @@ input_device_attach(struct wl_client *client,
device->pointer_focus->base.client != client)
return;
+ if (buffer == NULL) {
+ wlsc_input_device_set_pointer_image(device,
+ WLSC_POINTER_LEFT_PTR);
+ return;
+ }
+
glBindTexture(GL_TEXTURE_2D, device->sprite->texture);
glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, buffer->image);
device->sprite->visual = buffer->visual;
device->hotspot_x = x;
device->hotspot_y = y;
+
+ device->sprite->x = device->x - device->hotspot_x;
+ device->sprite->y = device->y - device->hotspot_y;
+ wlsc_surface_update_matrix(device->sprite);
+
+ wlsc_compositor_schedule_repaint(device->ec);
}
const static struct wl_input_device_interface input_device_interface = {