bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=e5d1c1f195180b301fb403f0f691dfe1df0867ac

commit e5d1c1f195180b301fb403f0f691dfe1df0867ac
Author: Marcel Hollerbach <marcel-hollerb...@t-online.de>
Date:   Fri Sep 29 11:09:33 2017 +0200

    Revert "elm focus manager - dont leak child lists when updating focus order"
    
    This reverts commit bd6dcbb044ffea543f27cc69c421317bdea4a14a.
    
    This was not fixing the issue, just ducktaping over a bug in eolian, the
    bug is now probebly fixed in eo / eolian.
---
 src/lib/elementary/efl_ui_focus_manager_calc.c  |  8 +++----
 src/lib/elementary/efl_ui_focus_manager_calc.eo |  2 +-
 src/lib/elementary/elc_fileselector.c           | 30 ++++++++++++-------------
 src/lib/elementary/elm_box.c                    |  8 ++-----
 src/lib/elementary/elm_grid.c                   |  8 ++-----
 src/lib/elementary/elm_table.c                  |  8 ++-----
 src/lib/elementary/elm_toolbar.c                | 29 ++++++++++--------------
 src/tests/elementary/elm_test_focus.c           |  1 -
 8 files changed, 36 insertions(+), 58 deletions(-)

diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c 
b/src/lib/elementary/efl_ui_focus_manager_calc.c
index 62a33b213b..d6066bb7fe 100644
--- a/src/lib/elementary/efl_ui_focus_manager_calc.c
+++ b/src/lib/elementary/efl_ui_focus_manager_calc.c
@@ -552,7 +552,6 @@ _efl_ui_focus_manager_calc_register_logical(Eo *obj, 
Efl_Ui_Focus_Manager_Calc_D
 
         tmp = eina_list_clone(T(pnode).saved_order);
         efl_ui_focus_manager_calc_update_order(obj, parent, tmp);
-        eina_list_free(tmp);
      }
 
    return EINA_TRUE;
@@ -595,7 +594,6 @@ _efl_ui_focus_manager_calc_register(Eo *obj, 
Efl_Ui_Focus_Manager_Calc_Data *pd,
 
         tmp = eina_list_clone(T(pnode).saved_order);
         efl_ui_focus_manager_calc_update_order(obj, parent, tmp);
-        eina_list_free(tmp);
      }
 
    return EINA_TRUE;
@@ -695,7 +693,7 @@ _efl_ui_focus_manager_calc_update_order(Eo *obj, 
Efl_Ui_Focus_Manager_Calc_Data
      return;
 
    ELM_SAFE_FREE(T(pnode).saved_order, eina_list_free);
-   T(pnode).saved_order = eina_list_clone(order);
+   T(pnode).saved_order = order;
 
    //get all nodes from the subset
    EINA_LIST_FOREACH(order, n, o)
@@ -728,14 +726,14 @@ _efl_ui_focus_manager_calc_update_children(Eo *obj 
EINA_UNUSED, Efl_Ui_Focus_Man
    Node *pnode;
    Efl_Ui_Focus_Object *o;
    Eina_Bool fail = EINA_FALSE;
-   Eina_List *node_order = NULL, *n;
+   Eina_List *node_order = NULL;
 
    pnode = node_get(obj, pd, parent);
    if (!pnode)
      return EINA_FALSE;
 
    //get all nodes from the subset
-   EINA_LIST_FOREACH(order, n, o)
+   EINA_LIST_FREE(order, o)
      {
         Node *tmp;
 
diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.eo 
b/src/lib/elementary/efl_ui_focus_manager_calc.eo
index 7d622c9786..2b78b259ac 100644
--- a/src/lib/elementary/efl_ui_focus_manager_calc.eo
+++ b/src/lib/elementary/efl_ui_focus_manager_calc.eo
@@ -66,7 +66,7 @@ class Efl.Ui.Focus.Manager.Calc (Efl.Object, 
Efl.Ui.Focus.Manager) {
             [[Give the list of children a different order.]]
             params {
                 parent : Efl.Ui.Focus.Object @nonull; [[the parent to update]]
-                children : list<Efl.Ui.Focus.Object>; [[the list with the new 
order]]
+                children : own(list<Efl.Ui.Focus.Object>); [[the list with the 
new order]]
             }
             return : bool; [[$true if successful, $false otherwise]]
         }
diff --git a/src/lib/elementary/elc_fileselector.c 
b/src/lib/elementary/elc_fileselector.c
index 4b4dda5f9b..74dd7f9581 100644
--- a/src/lib/elementary/elc_fileselector.c
+++ b/src/lib/elementary/elc_fileselector.c
@@ -96,26 +96,24 @@ EFL_CALLBACKS_ARRAY_DEFINE(monitoring_callbacks,
 static void
 _focus_chain_update(Eo *obj, Elm_Fileselector_Data *pd)
 {
-   Eo *fman = efl_ui_focus_user_manager_get(obj);
-   if (fman)
-     {
-        Eina_List *tmp = NULL;
+   Eina_List *tmp = NULL;
 
 #define A(p) tmp = eina_list_append(tmp, p);
-        A(pd->up_button)
-        A(pd->home_button)
-        A(pd->search_entry)
-        A(pd->files_view)
-        A(pd->path_entry)
-        A(pd->name_entry)
-        A(pd->filter_hoversel)
-        A(pd->ok_button)
-        A(pd->cancel_button)
+
+   A(pd->up_button)
+   A(pd->home_button)
+   A(pd->search_entry)
+   A(pd->files_view)
+   A(pd->path_entry)
+   A(pd->name_entry)
+   A(pd->filter_hoversel)
+   A(pd->ok_button)
+   A(pd->cancel_button)
+
+
 #undef A
 
-        
efl_ui_focus_manager_calc_update_order(efl_ui_focus_user_manager_get(obj), obj, 
tmp);
-        eina_list_free(tmp);
-     }
+   efl_ui_focus_manager_calc_update_order(efl_ui_focus_user_manager_get(obj), 
obj, tmp);
 }
 
 static void
diff --git a/src/lib/elementary/elm_box.c b/src/lib/elementary/elm_box.c
index 3f55144f01..b87d33c2b9 100644
--- a/src/lib/elementary/elm_box.c
+++ b/src/lib/elementary/elm_box.c
@@ -26,13 +26,9 @@ static void
 _focus_order_flush(Eo *obj, Elm_Box_Data *pd EINA_UNUSED)
 {
    Elm_Widget_Smart_Data *wpd = efl_data_scope_get(obj, ELM_WIDGET_CLASS);
-   if (wpd->focus.manager)
-     {
-        Eina_List *order = evas_object_box_children_get(wpd->resize_obj);
+   Eina_List *order = evas_object_box_children_get(wpd->resize_obj);
 
-        efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
-        eina_list_free(order);
-     }
+   efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
 }
 
 static void *
diff --git a/src/lib/elementary/elm_grid.c b/src/lib/elementary/elm_grid.c
index 9b37e3e87e..7c85648882 100644
--- a/src/lib/elementary/elm_grid.c
+++ b/src/lib/elementary/elm_grid.c
@@ -17,13 +17,9 @@ static void
 _focus_order_flush(Eo *obj)
 {
    Elm_Widget_Smart_Data *wpd = efl_data_scope_get(obj, ELM_WIDGET_CLASS);
-   if (wpd->focus.manager)
-     {
-        Eina_List *order = evas_object_grid_children_get(wpd->resize_obj);
+   Eina_List *order = evas_object_grid_children_get(wpd->resize_obj);
 
-        efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
-        eina_list_free(order);
-     }
+   efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
 }
 
 
diff --git a/src/lib/elementary/elm_table.c b/src/lib/elementary/elm_table.c
index b1e5b3b7b0..30d5788010 100644
--- a/src/lib/elementary/elm_table.c
+++ b/src/lib/elementary/elm_table.c
@@ -18,13 +18,9 @@ static void
 _focus_order_flush(Eo *obj)
 {
    Elm_Widget_Smart_Data *wpd = efl_data_scope_get(obj, ELM_WIDGET_CLASS);
-   if (wpd->focus.manager)
-     {
-        Eina_List *order = evas_object_table_children_get(wpd->resize_obj);
+   Eina_List *order = evas_object_table_children_get(wpd->resize_obj);
 
-        efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
-        eina_list_free(order);
-     }
+   efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
 }
 
 EOLIAN static Eina_Bool
diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c
index 4e96ac6a07..183d148cd9 100644
--- a/src/lib/elementary/elm_toolbar.c
+++ b/src/lib/elementary/elm_toolbar.c
@@ -102,29 +102,24 @@ _item_focus_eval(Elm_Toolbar_Item_Data *pd)
 static void
 _item_focus_eval_all(Elm_Toolbar *obj, Elm_Toolbar_Data *pd)
 {
+   Elm_Toolbar_Item_Data *it;
    Elm_Widget_Smart_Data *wpd;
+   Eina_List *order = NULL;
 
    wpd = efl_data_scope_get(obj, ELM_WIDGET_CLASS);
-   if (wpd->focus.manager)
+   EINA_INLIST_FOREACH(pd->items, it)
      {
-        Eina_List *order = NULL;
-        Elm_Toolbar_Item_Data *it;
-
-        EINA_INLIST_FOREACH(pd->items, it)
-          {
-             _item_focus_eval(it);
-             order = eina_list_append(order, EO_OBJ(it));
-          }
-
-        if (pd->more_item)
-          {
-             _item_focus_eval(pd->more_item);
-             order = eina_list_append(order, EO_OBJ(pd->more_item));
-          }
+        _item_focus_eval(it);
+        order = eina_list_append(order, EO_OBJ(it));
+     }
 
-        efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
-        eina_list_free(order);
+   if (pd->more_item)
+     {
+        _item_focus_eval(pd->more_item);
+        order = eina_list_append(order, EO_OBJ(pd->more_item));
      }
+
+   efl_ui_focus_manager_calc_update_order(wpd->focus.manager, obj, order);
 }
 
 static int
diff --git a/src/tests/elementary/elm_test_focus.c 
b/src/tests/elementary/elm_test_focus.c
index 063d4cdaa3..ab6c7f558d 100644
--- a/src/tests/elementary/elm_test_focus.c
+++ b/src/tests/elementary/elm_test_focus.c
@@ -320,7 +320,6 @@ START_TEST(order_check)
    order = eina_list_append(order, child3);
    order = eina_list_append(order, child1);
    ck_assert_int_eq(efl_ui_focus_manager_calc_update_children(m, root, order), 
1);
-   eina_list_free(order);
 
    order = NULL;
 

-- 


Reply via email to