hermet pushed a commit to branch elementary-1.13.

http://git.enlightenment.org/core/elementary.git/commit/?id=2214d290b1f1492d76c1089a399104d91e0bd7e4

commit 2214d290b1f1492d76c1089a399104d91e0bd7e4
Author: SangHyeon Lee <[email protected]>
Date:   Mon Apr 6 10:54:15 2015 +0900

    Elm_Win: Fix _elm_win_focus_prev_target_del callback added repeatly without 
callback del.
    
    Summary:
    When object in elm_win lose their focus, elm_win save it on 
focus_highlight.prev structure,
    and add **EVAS_CALLBACK_DEL** event callback. But after changed focus 
object also lose their focus from other,
    **EVAS_CALLBACK_DEL** on prev object is not deleted if their in_theme is 
not **EINA_TRUE**.
    This could be cause **'Memory Leak' **until previous focused objects are 
deleting.
    checking in_theme of prev focus_highlight is for send signal on prev 
focused view(edje),
    so 'if' sentence for checking previous existance and in_theme need to be 
separated.
    
    @fix
    
    Test Plan:
    You can easily check this on elementary_test. launch radio sample and make 
focus by keyboard and
    change focus repeatly, callback is added as per focus movement, but 
callback del is not called.
    
    Reviewers: seoz, woohyun, raster, Hermet
    
    Reviewed By: Hermet
    
    Subscribers: jaehwan
    
    Differential Revision: https://phab.enlightenment.org/D2276
---
 src/lib/elm_win.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c
index 57935f0..717017b 100644
--- a/src/lib/elm_win.c
+++ b/src/lib/elm_win.c
@@ -920,12 +920,13 @@ _elm_win_focus_highlight_reconfigure_job(void *data)
        (!sd->focus_highlight.theme_changed))
      return;
 
-   if ((previous) && (sd->focus_highlight.prev.in_theme))
+   if (previous)
      {
         evas_object_event_callback_del_full
            (previous, EVAS_CALLBACK_DEL, _elm_win_focus_prev_target_del, data);
-        elm_widget_signal_emit
-           (previous, "elm,action,focus_highlight,hide", "elm");
+        if (sd->focus_highlight.prev.in_theme)
+          elm_widget_signal_emit
+             (previous, "elm,action,focus_highlight,hide", "elm");
      }
 
    if (!target)

-- 


Reply via email to