Release memory before unloading PanelAgent module 67/101367/1
authorLi Zhang <li2012.zhang@samsung.com>
Thu, 1 Dec 2016 04:39:55 +0000 (12:39 +0800)
committerLi Zhang <li2012.zhang@samsung.com>
Thu, 1 Dec 2016 04:39:55 +0000 (12:39 +0800)
Change-Id: I27c76eeabe4746cadbf331d6416139ce41354f3a

ism/modules/panelagent/ecoresocket/ecore_socket_panel_agent_module.cpp
ism/modules/panelagent/socketconfigserver/socket_config_server_panel_agent_module.cpp

index 838fe01..dc7393b 100755 (executable)
@@ -111,6 +111,7 @@ public:
     }
 
     ~EcoreSocketPanelAgent() {
+        stop ();
         for (unsigned int ii = 0; ii < _read_handler_list.size(); ++ii) {
             ecore_main_fd_handler_del(_read_handler_list[ii]);
         }
index cb9a8d3..fd2a257 100644 (file)
@@ -82,7 +82,6 @@ class SocketConfigServerPanelAgent: public PanelAgentBase
     Transaction                         m_send_trans;
     Transaction                         m_recv_trans;
 
-    bool                                m_ise_exiting;
     bool                                m_config_readonly;
 
     Ecore_Thread                        *m_thread;
@@ -94,7 +93,6 @@ public:
         : PanelAgentBase ("socket_config_server"),
           m_should_exit (false),
           m_socket_timeout (scim_get_default_socket_timeout ()),
-          m_ise_exiting (false),
           m_config_readonly (false),
           m_thread (NULL) {
         m_socket_server.signal_connect_accept (slot (this, &SocketConfigServerPanelAgent::socket_accept_callback));
@@ -103,6 +101,7 @@ public:
     }
 
     ~SocketConfigServerPanelAgent () {
+        stop ();
     }
 
     static void
@@ -119,6 +118,7 @@ public:
         SocketConfigServerPanelAgent *thiz = (SocketConfigServerPanelAgent *)data;
         thiz->close ();
     }
+
     static void
     _thread_cancel_cb(void *data, Ecore_Thread *th) {
         LOGW ("");
@@ -129,6 +129,7 @@ public:
     void run() {
         m_socket_server.run ();
     }
+
     void close() {
         SocketClient  client;
         if (client.connect (SocketAddress (m_socket_address))) {
@@ -171,14 +172,14 @@ public:
         LOGD ("");
         m_config_connection.disconnect ();
         lock ();
-
+        m_should_exit = true;
         if (m_thread && !ecore_thread_check(m_thread)) {
             ecore_thread_cancel(m_thread);
-            m_thread = NULL;
+            if (!ecore_thread_wait (m_thread, 5))
+                LOGW ("We couldn't terminate in less than 5s some pending IO");
         }
-        m_should_exit = true;
+        m_thread = NULL;
         unlock ();
-        m_clients.clear ();
         _config.reset ();
     }
 private: