compositor: Use pointer_cursor_surface_configure() in wl_pointer.set_cursor
authorKristian Høgsberg <krh@bitplanet.net>
Mon, 13 Aug 2012 22:14:15 +0000 (18:14 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Mon, 13 Aug 2012 22:18:32 +0000 (18:18 -0400)
This way we map the surface if it currently isn't mapped and avoid
duplicating some of the code already in pointer_cursor_surface_configure().
Without this, the cursor code relied on a wl_surface.attach() to show the
new pointer surface.  If we're not changing the cursor buffer, we don't
get that, but we still need to map the cursor.

src/compositor.c

index 6e8afb6..7370435 100644 (file)
@@ -2269,15 +2269,12 @@ pointer_set_cursor(struct wl_client *client, struct wl_resource *resource,
 
        surface->configure = pointer_cursor_surface_configure;
        surface->private = seat;
-       empty_region(&surface->input);
-
        seat->sprite = surface;
        seat->hotspot_x = x;
        seat->hotspot_y = y;
 
-       weston_surface_set_position(surface,
-                                   wl_fixed_to_int(seat->seat.pointer->x) - x,
-                                   wl_fixed_to_int(seat->seat.pointer->y) - y);
+       if (surface->buffer)
+               pointer_cursor_surface_configure(surface, 0, 0);
 }
 
 static const struct wl_pointer_interface pointer_interface = {