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);

-- 


Reply via email to