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

-- 


Reply via email to