devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=84a01216e7b02c1709d6a88bc4188e38c3022754
commit 84a01216e7b02c1709d6a88bc4188e38c3022754 Author: Chris Michael <cp.mich...@samsung.com> Date: Wed Sep 30 12:41:50 2015 -0400 ecore-wl2: Provide internal function to stop any cursor update timers Signed-off-by: Chris Michael <cp.mich...@samsung.com> --- src/lib/ecore_wl2/ecore_wl2_input.c | 12 ++++++++++++ src/lib/ecore_wl2/ecore_wl2_private.h | 1 + src/lib/ecore_wl2/ecore_wl2_window.c | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/src/lib/ecore_wl2/ecore_wl2_input.c b/src/lib/ecore_wl2/ecore_wl2_input.c index 3e5ca95..c73908c 100644 --- a/src/lib/ecore_wl2/ecore_wl2_input.c +++ b/src/lib/ecore_wl2/ecore_wl2_input.c @@ -1249,6 +1249,8 @@ _ecore_wl2_input_del(Ecore_Wl2_Input *input) if (input->repeat.timer) ecore_timer_del(input->repeat.timer); + _ecore_wl2_input_cursor_update_stop(input); + if (input->cursor.theme) wl_cursor_theme_destroy(input->cursor.theme); if (input->cursor.surface) wl_surface_destroy(input->cursor.surface); if (input->cursor.name) eina_stringshare_del(input->cursor.name); @@ -1286,6 +1288,8 @@ _ecore_wl2_input_cursor_set(Ecore_Wl2_Input *input, const char *cursor) { struct wl_cursor *wl_cursor; + _ecore_wl2_input_cursor_update_stop(input); + eina_stringshare_replace(&input->cursor.name, cursor); if (!cursor) eina_stringshare_replace(&input->cursor.name, "left_ptr"); @@ -1318,3 +1322,11 @@ _ecore_wl2_input_cursor_set(Ecore_Wl2_Input *input, const char *cursor) _ecore_wl2_input_cursor_update(input); } + +void +_ecore_wl2_input_cursor_update_stop(Ecore_Wl2_Input *input) +{ + if (!input->cursor.timer) return; + ecore_timer_del(input->cursor.timer); + input->cursor.timer = NULL; +} diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h index 4ac1182..eac52db 100644 --- a/src/lib/ecore_wl2/ecore_wl2_private.h +++ b/src/lib/ecore_wl2/ecore_wl2_private.h @@ -231,6 +231,7 @@ void _ecore_wl2_input_ungrab(Ecore_Wl2_Input *input); void _ecore_wl2_input_grab(Ecore_Wl2_Input *input, Ecore_Wl2_Window *window, unsigned int button); void _ecore_wl2_input_cursor_set(Ecore_Wl2_Input *input, const char *cursor); +void _ecore_wl2_input_cursor_update_stop(Ecore_Wl2_Input *input); void _ecore_wl2_dnd_add(Ecore_Wl2_Input *input, struct wl_data_offer *offer); void _ecore_wl2_dnd_enter(Ecore_Wl2_Input *input, struct wl_data_offer *offer, struct wl_surface *surface, int x, int y, unsigned int timestamp); diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c index 17a5621..c74794d 100644 --- a/src/lib/ecore_wl2/ecore_wl2_window.c +++ b/src/lib/ecore_wl2/ecore_wl2_window.c @@ -833,6 +833,8 @@ ecore_wl2_window_pointer_set(Ecore_Wl2_Window *window, struct wl_surface *surfac if (!window->input) return; + _ecore_wl2_input_cursor_update_stop(window->input); + if (window->input->wl.pointer) wl_pointer_set_cursor(window->input->wl.pointer, window->input->pointer.enter_serial, @@ -848,6 +850,8 @@ ecore_wl2_window_cursor_from_name_set(Ecore_Wl2_Window *window, const char *curs eina_stringshare_replace(&window->cursor, cursor); if (!window->input) return; + + _ecore_wl2_input_cursor_update_stop(window->input); _ecore_wl2_input_cursor_set(window->input, cursor); } --