From: Li Zhang Date: Wed, 25 May 2016 11:14:07 +0000 (+0800) Subject: Fix ConfigPointer release issue X-Git-Tag: accepted/tizen/common/20160525.160357~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F64%2F71464%2F1;p=platform%2Fcore%2Fuifw%2Fisf.git Fix ConfigPointer release issue Change-Id: I677bd5e9f9b9cdb299b1664e722c0a86a98de465 --- diff --git a/ism/extras/efl_panel/isf_panel_efl.cpp b/ism/extras/efl_panel/isf_panel_efl.cpp index 93fc1dd..1fecf8f 100644 --- a/ism/extras/efl_panel/isf_panel_efl.cpp +++ b/ism/extras/efl_panel/isf_panel_efl.cpp @@ -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]); } diff --git a/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp b/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp index 4951049..0660e53 100644 --- a/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp +++ b/ism/modules/panelagent/wayland/wayland_panel_agent_module.cpp @@ -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 (); }