summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2015-02-06 17:54:08 -0500
committerMike Blumenkrantz <zmike@osg.samsung.com>2015-02-06 17:54:08 -0500
commit7171135792b1f443ef9f27818ab08dadfe3bf267 (patch)
tree9b383682dff96ef24a32cd5df21f3cd843b930ac
parent88e5369eeeba803d44374a577b09f34d5d0f3016 (diff)
ecore evas should not crash when unsetting pointer
ref D812 disappointed.jpg
-rw-r--r--src/lib/ecore_evas/ecore_evas_buffer.c1
-rw-r--r--src/lib/ecore_evas/ecore_evas_ews.c7
-rw-r--r--src/lib/ecore_evas/ecore_evas_private.h1
-rw-r--r--src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c7
-rw-r--r--src/modules/ecore_evas/engines/drm/ecore_evas_drm.c8
-rw-r--r--src/modules/ecore_evas/engines/extn/ecore_evas_extn.c2
-rw-r--r--src/modules/ecore_evas/engines/fb/ecore_evas_fb.c7
-rw-r--r--src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c7
-rw-r--r--src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c7
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c6
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c1
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h1
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c1
-rw-r--r--src/modules/ecore_evas/engines/win32/ecore_evas_win32.c9
-rw-r--r--src/modules/ecore_evas/engines/x/ecore_evas_x.c7
15 files changed, 71 insertions, 1 deletions
diff --git a/src/lib/ecore_evas/ecore_evas_buffer.c b/src/lib/ecore_evas/ecore_evas_buffer.c
index fa7bab232d..70a64ac4f8 100644
--- a/src/lib/ecore_evas/ecore_evas_buffer.c
+++ b/src/lib/ecore_evas/ecore_evas_buffer.c
@@ -572,6 +572,7 @@ static Ecore_Evas_Engine_Func _ecore_buffer_engine_func =
572 NULL, 572 NULL,
573 NULL, 573 NULL,
574 NULL, 574 NULL,
575 NULL,
575 _ecore_evas_buffer_alpha_set, 576 _ecore_evas_buffer_alpha_set,
576 NULL, //transparent 577 NULL, //transparent
577 NULL, // profiles_set 578 NULL, // profiles_set
diff --git a/src/lib/ecore_evas/ecore_evas_ews.c b/src/lib/ecore_evas/ecore_evas_ews.c
index afffa5e9f2..cf4e6e3113 100644
--- a/src/lib/ecore_evas/ecore_evas_ews.c
+++ b/src/lib/ecore_evas/ecore_evas_ews.c
@@ -407,6 +407,12 @@ _ecore_evas_ews_object_cursor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *
407} 407}
408 408
409static void 409static void
410_ecore_evas_ews_object_cursor_unset(Ecore_Evas *ee)
411{
412 evas_object_event_callback_del_full(ee->prop.cursor.object, EVAS_CALLBACK_DEL, _ecore_evas_ews_object_cursor_del, ee);
413}
414
415static void
410_ecore_evas_ews_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y) 416_ecore_evas_ews_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
411{ 417{
412 int x, y; 418 int x, y;
@@ -671,6 +677,7 @@ static const Ecore_Evas_Engine_Func _ecore_ews_engine_func =
671 _ecore_evas_ews_size_base_set, 677 _ecore_evas_ews_size_base_set,
672 _ecore_evas_ews_size_step_set, 678 _ecore_evas_ews_size_step_set,
673 _ecore_evas_ews_object_cursor_set, 679 _ecore_evas_ews_object_cursor_set,
680 _ecore_evas_ews_object_cursor_unset,
674 _ecore_evas_ews_layer_set, 681 _ecore_evas_ews_layer_set,
675 _ecore_evas_ews_focus_set, 682 _ecore_evas_ews_focus_set,
676 _ecore_evas_ews_iconified_set, 683 _ecore_evas_ews_iconified_set,
diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h
index 34635991f5..dc11228ff8 100644
--- a/src/lib/ecore_evas/ecore_evas_private.h
+++ b/src/lib/ecore_evas/ecore_evas_private.h
@@ -87,6 +87,7 @@ struct _Ecore_Evas_Engine_Func
87 void (*fn_size_base_set) (Ecore_Evas *ee, int w, int h); 87 void (*fn_size_base_set) (Ecore_Evas *ee, int w, int h);
88 void (*fn_size_step_set) (Ecore_Evas *ee, int w, int h); 88 void (*fn_size_step_set) (Ecore_Evas *ee, int w, int h);
89 void (*fn_object_cursor_set) (Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y); 89 void (*fn_object_cursor_set) (Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y);
90 void (*fn_object_cursor_unset) (Ecore_Evas *ee);
90 void (*fn_layer_set) (Ecore_Evas *ee, int layer); 91 void (*fn_layer_set) (Ecore_Evas *ee, int layer);
91 void (*fn_focus_set) (Ecore_Evas *ee, Eina_Bool on); 92 void (*fn_focus_set) (Ecore_Evas *ee, Eina_Bool on);
92 void (*fn_iconified_set) (Ecore_Evas *ee, Eina_Bool on); 93 void (*fn_iconified_set) (Ecore_Evas *ee, Eina_Bool on);
diff --git a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
index f66b7be16e..3ac93c3e61 100644
--- a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
+++ b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
@@ -346,6 +346,12 @@ _ecore_evas_object_cursor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj
346} 346}
347 347
348static void 348static void
349_ecore_evas_object_cursor_unset(Ecore_Evas *ee)
350{
351 evas_object_event_callback_del_full(ee->prop.cursor.object, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
352}
353
354static void
349_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y) 355_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
350{ 356{
351 int x, y; 357 int x, y;
@@ -465,6 +471,7 @@ static Ecore_Evas_Engine_Func _ecore_cocoa_engine_func =
465 NULL, 471 NULL,
466 NULL, 472 NULL,
467 _ecore_evas_object_cursor_set, 473 _ecore_evas_object_cursor_set,
474 _ecore_evas_object_cursor_unset,
468 NULL, 475 NULL,
469 NULL, 476 NULL,
470 NULL, 477 NULL,
diff --git a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
index 8ff1d394d7..3de46684ba 100644
--- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
+++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
@@ -53,6 +53,7 @@ static void _ecore_evas_drm_size_max_set(Ecore_Evas *ee, int w, int h);
53static void _ecore_evas_drm_size_base_set(Ecore_Evas *ee, int w, int h); 53static void _ecore_evas_drm_size_base_set(Ecore_Evas *ee, int w, int h);
54static void _ecore_evas_drm_size_step_set(Ecore_Evas *ee, int w, int h); 54static void _ecore_evas_drm_size_step_set(Ecore_Evas *ee, int w, int h);
55static void _ecore_evas_drm_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y); 55static void _ecore_evas_drm_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y);
56static void _ecore_evas_drm_object_cursor_unset(Ecore_Evas *ee);
56static void _ecore_evas_drm_layer_set(Ecore_Evas *ee, int layer); 57static void _ecore_evas_drm_layer_set(Ecore_Evas *ee, int layer);
57static void _ecore_evas_drm_iconified_set(Ecore_Evas *ee, Eina_Bool on); 58static void _ecore_evas_drm_iconified_set(Ecore_Evas *ee, Eina_Bool on);
58static void _ecore_evas_drm_borderless_set(Ecore_Evas *ee, Eina_Bool on); 59static void _ecore_evas_drm_borderless_set(Ecore_Evas *ee, Eina_Bool on);
@@ -110,6 +111,7 @@ static Ecore_Evas_Engine_Func _ecore_evas_drm_engine_func =
110 _ecore_evas_drm_size_base_set, 111 _ecore_evas_drm_size_base_set,
111 _ecore_evas_drm_size_step_set, 112 _ecore_evas_drm_size_step_set,
112 _ecore_evas_drm_object_cursor_set, 113 _ecore_evas_drm_object_cursor_set,
114 _ecore_evas_drm_object_cursor_unset,
113 _ecore_evas_drm_layer_set, 115 _ecore_evas_drm_layer_set,
114 NULL, //void (*fn_focus_set) (Ecore_Evas *ee, Eina_Bool on); 116 NULL, //void (*fn_focus_set) (Ecore_Evas *ee, Eina_Bool on);
115 _ecore_evas_drm_iconified_set, 117 _ecore_evas_drm_iconified_set,
@@ -764,6 +766,12 @@ _ecore_evas_drm_object_cursor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *
764} 766}
765 767
766static void 768static void
769_ecore_evas_drm_object_cursor_unset(Ecore_Evas *ee)
770{
771 evas_object_event_callback_del_full(ee->prop.cursor.object, EVAS_CALLBACK_DEL, _ecore_evas_drm_object_cursor_del, ee);
772}
773
774static void
767_ecore_evas_drm_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y) 775_ecore_evas_drm_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
768{ 776{
769 int x, y; 777 int x, y;
diff --git a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
index a524a43ddf..9cb7f6f3ce 100644
--- a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
+++ b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
@@ -850,6 +850,7 @@ static const Ecore_Evas_Engine_Func _ecore_extn_plug_engine_func =
850 NULL, 850 NULL,
851 NULL, 851 NULL,
852 NULL, 852 NULL,
853 NULL,
853 NULL, //transparent 854 NULL, //transparent
854 NULL, // profiles_set 855 NULL, // profiles_set
855 _ecore_evas_extn_plug_profile_set, 856 _ecore_evas_extn_plug_profile_set,
@@ -1986,6 +1987,7 @@ static const Ecore_Evas_Engine_Func _ecore_extn_socket_engine_func =
1986 NULL, 1987 NULL,
1987 NULL, 1988 NULL,
1988 NULL, 1989 NULL,
1990 NULL,
1989 _ecore_evas_extn_socket_alpha_set, 1991 _ecore_evas_extn_socket_alpha_set,
1990 NULL, //transparent 1992 NULL, //transparent
1991 _ecore_evas_extn_socket_available_profiles_set, 1993 _ecore_evas_extn_socket_available_profiles_set,
diff --git a/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c b/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c
index 5373dd7e41..8d008ac600 100644
--- a/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c
+++ b/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c
@@ -426,6 +426,12 @@ _ecore_evas_object_cursor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj
426} 426}
427 427
428static void 428static void
429_ecore_evas_object_cursor_unset(Ecore_Evas *ee)
430{
431 evas_object_event_callback_del_full(ee->prop.cursor.object, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
432}
433
434static void
429_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y) 435_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
430{ 436{
431 int x, y; 437 int x, y;
@@ -572,6 +578,7 @@ static Ecore_Evas_Engine_Func _ecore_fb_engine_func =
572 NULL, 578 NULL,
573 NULL, 579 NULL,
574 _ecore_evas_object_cursor_set, 580 _ecore_evas_object_cursor_set,
581 _ecore_evas_object_cursor_unset,
575 NULL, 582 NULL,
576 NULL, 583 NULL,
577 NULL, 584 NULL,
diff --git a/src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c b/src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c
index 71de3b94b6..011aeda7af 100644
--- a/src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c
+++ b/src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c
@@ -316,6 +316,12 @@ _ecore_evas_object_cursor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj
316} 316}
317 317
318static void 318static void
319_ecore_evas_object_cursor_unset(Ecore_Evas *ee)
320{
321 evas_object_event_callback_del_full(ee->prop.cursor.object, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
322}
323
324static void
319_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y) 325_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
320{ 326{
321 int x, y; 327 int x, y;
@@ -394,6 +400,7 @@ static Ecore_Evas_Engine_Func _ecore_psl1ght_engine_func =
394 NULL, 400 NULL,
395 NULL, 401 NULL,
396 _ecore_evas_object_cursor_set, 402 _ecore_evas_object_cursor_set,
403 _ecore_evas_object_cursor_unset,
397 NULL, 404 NULL,
398 NULL, 405 NULL,
399 NULL, 406 NULL,
diff --git a/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c b/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c
index 4ffbf3d02e..9a0e69b712 100644
--- a/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c
+++ b/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c
@@ -404,6 +404,12 @@ _ecore_evas_object_cursor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj
404} 404}
405 405
406static void 406static void
407_ecore_evas_object_cursor_unset(Ecore_Evas *ee)
408{
409 evas_object_event_callback_del_full(ee->prop.cursor.object, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
410}
411
412static void
407_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y) 413_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
408{ 414{
409 int x, y; 415 int x, y;
@@ -483,6 +489,7 @@ static Ecore_Evas_Engine_Func _ecore_sdl_engine_func =
483 NULL, 489 NULL,
484 NULL, 490 NULL,
485 _ecore_evas_object_cursor_set, 491 _ecore_evas_object_cursor_set,
492 _ecore_evas_object_cursor_unset,
486 NULL, 493 NULL,
487 NULL, 494 NULL,
488 NULL, 495 NULL,
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
index 424a5aa87a..47fd54dd6f 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
@@ -1212,6 +1212,12 @@ _ecore_evas_object_cursor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj
1212} 1212}
1213 1213
1214void 1214void
1215_ecore_evas_wl_common_object_cursor_unset(Ecore_Evas *ee)
1216{
1217 evas_object_event_callback_del_full(ee->prop.cursor.object, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
1218}
1219
1220void
1215_ecore_evas_wl_common_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y) 1221_ecore_evas_wl_common_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
1216{ 1222{
1217 int x, y, fx, fy; 1223 int x, y, fx, fy;
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
index dc3428bf58..46003e8555 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
@@ -51,6 +51,7 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func =
51 _ecore_evas_wl_common_size_base_set, 51 _ecore_evas_wl_common_size_base_set,
52 _ecore_evas_wl_common_size_step_set, 52 _ecore_evas_wl_common_size_step_set,
53 _ecore_evas_wl_common_object_cursor_set, 53 _ecore_evas_wl_common_object_cursor_set,
54 _ecore_evas_wl_common_object_cursor_unset,
54 _ecore_evas_wl_common_layer_set, 55 _ecore_evas_wl_common_layer_set,
55 NULL, // focus set 56 NULL, // focus set
56 _ecore_evas_wl_common_iconified_set, 57 _ecore_evas_wl_common_iconified_set,
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
index 905aa261d8..98e2624936 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
@@ -63,6 +63,7 @@ void _ecore_evas_wl_common_size_base_set(Ecore_Evas *ee, int w, int h);
63void _ecore_evas_wl_common_size_step_set(Ecore_Evas *ee, int w, int h); 63void _ecore_evas_wl_common_size_step_set(Ecore_Evas *ee, int w, int h);
64void _ecore_evas_wl_common_aspect_set(Ecore_Evas *ee, double aspect); 64void _ecore_evas_wl_common_aspect_set(Ecore_Evas *ee, double aspect);
65void _ecore_evas_wl_common_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y); 65void _ecore_evas_wl_common_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y);
66void _ecore_evas_wl_common_object_cursor_unset(Ecore_Evas *ee);
66void _ecore_evas_wl_common_layer_set(Ecore_Evas *ee, int layer); 67void _ecore_evas_wl_common_layer_set(Ecore_Evas *ee, int layer);
67void _ecore_evas_wl_common_iconified_set(Ecore_Evas *ee, Eina_Bool on); 68void _ecore_evas_wl_common_iconified_set(Ecore_Evas *ee, Eina_Bool on);
68void _ecore_evas_wl_common_maximized_set(Ecore_Evas *ee, Eina_Bool on); 69void _ecore_evas_wl_common_maximized_set(Ecore_Evas *ee, Eina_Bool on);
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
index 42e3ec41d3..9355e50b03 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
@@ -51,6 +51,7 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func =
51 _ecore_evas_wl_common_size_base_set, 51 _ecore_evas_wl_common_size_base_set,
52 _ecore_evas_wl_common_size_step_set, 52 _ecore_evas_wl_common_size_step_set,
53 _ecore_evas_wl_common_object_cursor_set, 53 _ecore_evas_wl_common_object_cursor_set,
54 _ecore_evas_wl_common_object_cursor_unset,
54 _ecore_evas_wl_common_layer_set, 55 _ecore_evas_wl_common_layer_set,
55 NULL, // focus set 56 NULL, // focus set
56 _ecore_evas_wl_common_iconified_set, 57 _ecore_evas_wl_common_iconified_set,
diff --git a/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c b/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c
index 933345584a..36587b96a2 100644
--- a/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c
+++ b/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c
@@ -821,7 +821,13 @@ _ecore_evas_object_cursor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj
821 ee = data; 821 ee = data;
822 if (ee) ee->prop.cursor.object = NULL; 822 if (ee) ee->prop.cursor.object = NULL;
823} 823}
824 824
825static void
826_ecore_evas_win32_object_cursor_unset(Ecore_Evas *ee)
827{
828 evas_object_event_callback_del_full(ee->prop.cursor.object, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
829}
830
825static void 831static void
826_ecore_evas_win32_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y) 832_ecore_evas_win32_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
827{ 833{
@@ -1131,6 +1137,7 @@ static Ecore_Evas_Engine_Func _ecore_win32_engine_func =
1131 _ecore_evas_win32_size_base_set, 1137 _ecore_evas_win32_size_base_set,
1132 _ecore_evas_win32_size_step_set, 1138 _ecore_evas_win32_size_step_set,
1133 _ecore_evas_win32_cursor_set, 1139 _ecore_evas_win32_cursor_set,
1140 _ecore_evas_win32_cursor_unset,
1134 NULL, /* _ecore_evas_x_layer_set */ 1141 NULL, /* _ecore_evas_x_layer_set */
1135 _ecore_evas_win32_focus_set, 1142 _ecore_evas_win32_focus_set,
1136 _ecore_evas_win32_iconified_set, 1143 _ecore_evas_win32_iconified_set,
diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c
index 60c623f71d..31d5108075 100644
--- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c
+++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c
@@ -2979,6 +2979,12 @@ _ecore_evas_object_cursor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj
2979} 2979}
2980 2980
2981static void 2981static void
2982_ecore_evas_x_object_cursor_unset(Ecore_Evas *ee)
2983{
2984 evas_object_event_callback_del_full(ee->prop.cursor.object, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
2985}
2986
2987static void
2982_ecore_evas_x_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y) 2988_ecore_evas_x_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
2983{ 2989{
2984 int x = 0, y = 0; 2990 int x = 0, y = 0;
@@ -3552,6 +3558,7 @@ static Ecore_Evas_Engine_Func _ecore_x_engine_func =
3552 _ecore_evas_x_size_base_set, 3558 _ecore_evas_x_size_base_set,
3553 _ecore_evas_x_size_step_set, 3559 _ecore_evas_x_size_step_set,
3554 _ecore_evas_x_object_cursor_set, 3560 _ecore_evas_x_object_cursor_set,
3561 _ecore_evas_x_object_cursor_unset,
3555 _ecore_evas_x_layer_set, 3562 _ecore_evas_x_layer_set,
3556 _ecore_evas_x_focus_set, 3563 _ecore_evas_x_focus_set,
3557 _ecore_evas_x_iconified_set, 3564 _ecore_evas_x_iconified_set,