compositor: allow multiple input_device_attach()'s with a nil buffer
authorAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Fri, 16 Mar 2012 15:25:10 +0000 (17:25 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 21 Mar 2012 02:43:55 +0000 (22:43 -0400)
Without this change, weston would crash whenever a nil buffer was
passed to input_device_attach() if the cursor sprite was not mapped.
While at it, change the unmapping code to use weston_surface_unmap().

src/compositor.c

index f2ae2f6..09b14ae 100644 (file)
@@ -1831,10 +1831,9 @@ input_device_attach(struct wl_client *client,
        if (device->input_device.pointer_focus->resource.client != client)
                return;
 
-       if (!buffer_resource && device->sprite->output) {
-               wl_list_remove(&device->sprite->link);
-               wl_list_remove(&device->sprite->layer_link);
-               device->sprite->output = NULL;
+       if (!buffer_resource) {
+               if (device->sprite->output)
+                       weston_surface_unmap(device->sprite);
                return;
        }