From aded1f6823079db0a2d4f20a78f8e658aa1919c8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kristian=20H=C3=B8gsberg?= Date: Wed, 8 Feb 2012 16:33:57 -0500 Subject: [PATCH] compositor: Don't destroy sprite surface, just hide it --- src/compositor.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/compositor.c b/src/compositor.c index 18cbfcc..1545990 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -1668,19 +1668,16 @@ input_device_attach(struct wl_client *client, if (device->sprite) weston_surface_damage_below(device->sprite); - if (!buffer_resource) { - if (device->sprite) { - destroy_surface(&device->sprite->surface.resource); - device->sprite = NULL; - } + if (!buffer_resource && device->sprite->output) { + wl_list_remove(&device->sprite->link); + device->sprite->visual = WESTON_NONE_VISUAL; + device->sprite->output = NULL; return; } - if (!device->sprite) { - device->sprite = weston_surface_create(compositor); + if (!device->sprite->output) wl_list_insert(&compositor->surface_list, &device->sprite->link); - } buffer = buffer_resource->data; device->hotspot_x = x; @@ -1725,7 +1722,7 @@ weston_input_device_init(struct weston_input_device *device, wl_display_add_global(ec->wl_display, &wl_input_device_interface, device, bind_input_device); - device->sprite = NULL; + device->sprite = weston_surface_create(ec); device->compositor = ec; device->hotspot_x = 16; -- 2.7.4