Fix for JIRA issue where unwanted wifi error popups were appearing 10/156410/3 accepted/tizen/unified/20171019.061001 submit/tizen/20171018.100117
authorAbhishek Sansanwal <abhishek.s94@samsung.com>
Wed, 18 Oct 2017 07:56:47 +0000 (13:26 +0530)
committerAbhishek Sansanwal <abhishek.s94@samsung.com>
Wed, 18 Oct 2017 09:05:46 +0000 (09:05 +0000)
Description: wifi handle was being initialized for each time
_create() is called for network layout. By initializing the
 wifi handle in _show() instead of _create() the issue is
removed.

Signed-off-by: Abhishek Sansanwal <abhishek.s94@samsung.com>
Change-Id: I4dc697579637bb872f470a07696ac66606e61b33

include/layout/layout_network.h
src/layout/layout_network.c

index 4b17975..4a85f4a 100644 (file)
@@ -19,6 +19,7 @@
 #include "common/layoutmgr.h"
 
 enum network_type {
+       TYPE_NONE = -1,
        TYPE_WIRELESS = 0,
        TYPE_WIRED,
        TYPE_NEW_NETWORK,
index 4888bf2..7d5334b 100755 (executable)
@@ -79,6 +79,7 @@ static void _grid_find_retry_ap(Elm_Object_Item *it, void *data);
 void network_wireless_set_update_callbacks(void *data);
 void network_wired_set_update_callbacks(void *data);
 void _popup_failed_no_retry_wireless_status(struct _priv *priv);
+static void _data_event_cb(enum event_type type, void *data);
 
 struct _priv * current_priv = NULL;
 
@@ -1184,6 +1185,9 @@ static void _data_event_cb(enum event_type type, void *data)
 
        switch (type) {
        case EVENT_DATA_INIT_FAIL_WIRELESS:
+               if (priv->cur_type != TYPE_WIRELESS)
+                       return;
+
                priv->wireless_update_requested = false;
                /* Failed to initialize wireless */
 
@@ -1725,10 +1729,7 @@ static bool _draw_network_buttons(struct _priv *priv, Evas_Object *tab_button)
 static bool _create(layoutmgr *lmgr, void *data)
 {
        struct _priv *priv;
-       struct datamgr *dmgr;
-//     struct listmgr *listmgr;
        Evas_Object *base, *ly;
-       //Evas_Object *wired;
 
        if (!lmgr) {
                _ERR("Invalid argument.");
@@ -1759,76 +1760,24 @@ static bool _create(layoutmgr *lmgr, void *data)
        priv->ly = ly;
 
        current_priv = priv;
-/*
-       wired = utils_add_layout(ly, "grp.layout.wired.content", EINA_TRUE);
-       if (!wired) {
-               _ERR("Add layout failed.");
-               free(priv);
-               evas_object_del(ly);
-               return false;
-       }
-       priv->wired_layout = wired;
-*/
-
-       dmgr = datamgr_create(get_wireless_data_class(), _data_event_cb, priv);
-       if (!dmgr) {
-               _ERR("Create datamgr failed.");
-               free(priv);
-               evas_object_del(ly);
-//             evas_object_del(wired);
-               return false;
-       }
 
-/*     listmgr = listmgr_create(ly);
-       if (!listmgr) {
-               _ERR("Create gridmgr failed.");
-               goto err;
-       }
 
-       if (!listmgr_add_list(listmgr, LIST_WIRELESS,
-                               get_wireless_grid_class(), NULL, priv)) {
-               _ERR("Add wireless list failed.");
-               listmgr_destroy(listmgr);
-               goto err;
-       }
-*/
-       priv->wirelessmgr = dmgr;
-//     priv->listmgr = listmgr;
-       priv->wireless_support = true;
        priv->wireless_update_requested = false;
        // TODO: detect currently selected network type
-       priv->cur_type = TYPE_WIRELESS;
+       priv->cur_type = TYPE_NONE;
 
        if (!_draw_network_buttons(priv, (Evas_Object *)data)) {
                _ERR("Draw network buttons failed.");
-               //listmgr_destroy(listmgr);
                goto err;
        }
 
-       /* wired connection data */
-       if (!wired_connection_init(&priv->wired, _data_event_cb, priv)) {
-               _ERR("Failed to initialize wired connection");
-               goto err;
-       }
 
        layoutmgr_set_layout_data(lmgr, LAYOUT_ID_NETWORK, priv);
 
-/*     listmgr_add_inner_grid_cb(priv->listmgr, LIST_WIRELESS,
-                       &_grid_input_handler, priv);
-
-       if (data) {
-               listmgr_set_list_next_focus(priv->listmgr, LIST_WIRELESS,
-                               (Evas_Object *)data, ELM_FOCUS_UP, EINA_FALSE, ELM_FOCUS_DOWN);
-
-               elm_object_focus_next_object_set((Evas_Object *)data, priv->network_type_btn, ELM_FOCUS_DOWN);
-       }
-*/
 
        return true;
 
 err:
-       //evas_object_del(wired);
-       datamgr_destroy(dmgr);
        free(priv);
        evas_object_del(ly);
 
@@ -1850,6 +1799,7 @@ static void update_style(struct _priv *priv)
 static void _show(void *layout_data)
 {
        struct _priv *priv;
+       struct datamgr *dmgr;
 
        if (!layout_data) {
                _ERR("Invalid argument.");
@@ -1857,16 +1807,32 @@ static void _show(void *layout_data)
        }
 
        priv = layout_data;
+       /* initialize wireless */
+       if (priv->wirelessmgr == NULL) {
+               dmgr = datamgr_create(get_wireless_data_class(), _data_event_cb, priv);
+               if (!dmgr) {
+                       _ERR("Create datamgr failed.");
+               } else {
+                       priv->wirelessmgr = dmgr;
+                       priv->wireless_update_requested = false;
+               }
+       }
+
+       if (priv->wired == NULL) {
+               if (!wired_connection_init(&priv->wired, _data_event_cb, priv)) {
+                       _ERR("Failed to initialize wired connection");
+               }
+       }
 
        if (priv->ly) {
                evas_object_show(priv->ly);
-               //elm_object_part_content_set(priv->base, PART_CONTENT_NETWORK, priv->ly);
                elm_object_part_content_set(priv->base, PART_CONTENT, priv->ly);
-
-//             if (priv->cur_type == TYPE_WIRELESS)
-//                     _retry_wireless_network(priv);
        }
-       update_style(priv);
+
+       priv->cur_type = TYPE_WIRELESS;
+       if (priv->wirelessmgr)
+               update_style(priv);
+
        menumgr_update(priv->menu);
 }
 
@@ -1878,14 +1844,25 @@ static void _hide(void *layout_data)
                _ERR("Invalid argument.");
                return;
        }
-
        priv = layout_data;
 
+
+       if (priv->wirelessmgr) {
+               datamgr_destroy(priv->wirelessmgr);
+               priv->wirelessmgr = NULL;
+       }
+
+       if (priv->wired) {
+               wired_connection_deinit(priv->wired);
+               priv->wired = NULL;
+       }
+
        if (priv->ly) {
                evas_object_hide(priv->ly);
                //elm_object_part_content_unset(priv->base, PART_CONTENT_NETWORK);
                elm_object_part_content_unset(priv->base, PART_CONTENT);
        }
+       priv->cur_type = TYPE_NONE;
 }
 
 static void _destroy(void *layout_data)
@@ -1899,13 +1876,9 @@ static void _destroy(void *layout_data)
 
        priv = layout_data;
 
-       if (priv->wirelessmgr)
+       if (priv->wirelessmgr) {
                datamgr_destroy(priv->wirelessmgr);
-
-       if (priv->listmgr) {
-               listmgr_remove_inner_grid_cb(priv->listmgr, LIST_WIRELESS,
-                               &_grid_input_handler);
-               listmgr_destroy(priv->listmgr);
+               priv->wirelessmgr = NULL;
        }
 
        if (priv->wired) {
@@ -1913,6 +1886,12 @@ static void _destroy(void *layout_data)
                priv->wired = NULL;
        }
 
+       if (priv->listmgr) {
+               listmgr_remove_inner_grid_cb(priv->listmgr, LIST_WIRELESS,
+                               &_grid_input_handler);
+               listmgr_destroy(priv->listmgr);
+       }
+
        menumgr_destroy(priv->menu);
        evas_object_del(priv->ly);