efl-wl: immediately unset a destroyed surface's cursor

@fix
This commit is contained in:
Mike Blumenkrantz 2018-01-17 17:33:57 -05:00
parent c13ae0a630
commit beb430a00b
1 changed files with 13 additions and 1 deletions

View File

@ -1861,7 +1861,19 @@ comp_surface_impl_destroy(struct wl_resource *resource)
{
if (s->kbd.enter == cs) s->kbd.enter = NULL;
if (s->ptr.enter == cs) s->ptr.enter = NULL;
if (s->ptr.cursor.surface == cs) s->ptr.cursor.surface = NULL;
if (s->ptr.cursor.surface == cs)
{
if (s->ptr.in)
{
const Eina_List *l;
Eo *dev;
Ecore_Evas *ee = ecore_evas_ecore_evas_get(s->c->evas);
EINA_LIST_FOREACH(evas_device_list(s->c->evas, s->dev), l, dev)
if (evas_device_class_get(dev) == EVAS_DEVICE_CLASS_MOUSE)
ecore_evas_cursor_device_unset(ee, dev);
}
s->ptr.cursor.surface = NULL;
}
if (s->drag.surface == cs) s->drag.surface = NULL;
}
eina_hash_list_remove(cs->c->client_surfaces, &client, cs);