hermet pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=b03f5bbb04cc99b40ee40507f247956dc524cb8a
commit b03f5bbb04cc99b40ee40507f247956dc524cb8a 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 67114b4..8674105 100644 --- a/src/lib/elm_win.c +++ b/src/lib/elm_win.c @@ -922,12 +922,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) --
