Fix ConfigPointer release issue 64/71464/1
authorLi Zhang <li2012.zhang@samsung.com>
Wed, 25 May 2016 11:14:07 +0000 (19:14 +0800)
committerLi Zhang <li2012.zhang@samsung.com>
Wed, 25 May 2016 11:17:33 +0000 (19:17 +0800)
Change-Id: I677bd5e9f9b9cdb299b1664e722c0a86a98de465

ism/extras/efl_panel/isf_panel_efl.cpp
ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp

index 93fc1dd..1fecf8f 100644 (file)
@@ -394,6 +394,8 @@ static bool               _is_click                         = true;
 static String             _initial_ise_uuid                 = String ("");
 static String             _locale_string                    = String ("");
 static ConfigPointer      _config;
+static Connection         _config_connection;
+
 static InfoManager       *_info_manager                      = 0;
 
 static clock_t            _clock_start;
@@ -7186,7 +7188,7 @@ int main (int argc, char *argv [])
     }
 
     /* Connect the configuration reload signal. */
-    _config->signal_connect_reload (slot (config_reload_cb));
+    _config_connection = _config->signal_connect_reload (slot (config_reload_cb));
 
 #if HAVE_ECOREX
     if (!efl_create_control_window ()) {
@@ -7354,8 +7356,6 @@ cleanup:
 
     unregister_edbus_signal_handler ();
 
-    elm_shutdown ();
-
     if (_info_manager) {
         try {
             _info_manager->stop ();
@@ -7364,12 +7364,16 @@ cleanup:
         }
         delete _info_manager;
     }
-
+    _config_connection.disconnect ();
     if (!_config.null ())
         _config.reset ();
+    ConfigBase::set (0);
+
     if (config_module)
         delete config_module;
 
+    elm_shutdown ();
+
     if ((display_name_c > 0) && new_argv [display_name_c]) {
         free (new_argv [display_name_c]);
     }
index 4951049..0660e53 100644 (file)
@@ -2713,6 +2713,8 @@ reload_config_callback (const ConfigPointer &config)
 
 class WaylandPanelAgent: public PanelAgentBase
 {
+    Connection _config_connection;
+
 public:
     WaylandPanelAgent ()
         : PanelAgentBase ("wayland") {
@@ -2729,7 +2731,7 @@ public:
             return false;
         }
 
-        _config->signal_connect_reload (slot (reload_config_callback));
+        _config_connection = _config->signal_connect_reload (slot (reload_config_callback));
 
         return true;
     }
@@ -2738,6 +2740,7 @@ public:
     }
 
     void stop (void) {
+        _config_connection.disconnect ();
         isf_wsc_context_shutdown ();
     }