raster pushed a commit to branch efl-1.20. http://git.enlightenment.org/core/efl.git/commit/?id=369c6a8949720217240f840676ef714717474215
commit 369c6a8949720217240f840676ef714717474215 Author: Mike Blumenkrantz <[email protected]> Date: Wed Jan 17 17:33:57 2018 -0500 efl-wl: immediately unset a destroyed surface's cursor @fix --- src/lib/efl_wl/efl_wl.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/lib/efl_wl/efl_wl.c b/src/lib/efl_wl/efl_wl.c index 50bb2ee517..6d2ee785c5 100644 --- a/src/lib/efl_wl/efl_wl.c +++ b/src/lib/efl_wl/efl_wl.c @@ -1777,7 +1777,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); --
