ecore_ipc: close dialer io closer when dialer is deleted.
authorHosang Kim <hosang12.kim@samsung.com>
Wed, 22 May 2019 12:01:58 +0000 (08:01 -0400)
committerJunsuChoi <jsuya.choi@samsung.com>
Thu, 30 May 2019 08:17:52 +0000 (17:17 +0900)
Summary:
dialer uses copier class, so dialer's close on invalidate flag is EINA_FALSE.
Therefore dialer io closer is not closed automatically.

Reviewers: barbieri, raster, Hermet, zmike

Reviewed By: zmike

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8922

src/lib/ecore_ipc/ecore_ipc.c

index 64b3990..609ee9d 100644 (file)
@@ -562,6 +562,8 @@ ecore_ipc_server_add(Ecore_Ipc_Type type, const char *name, int port, const void
     return ecore_ipc_server_with_fd_add(type, name, port, -1, data);
 }
 
+static Efl_Callback_Array_Item *_ecore_ipc_dialer_cbs(void);
+
 static void
 _ecore_ipc_dialer_del(Ecore_Ipc_Server *svr)
 {
@@ -587,6 +589,10 @@ _ecore_ipc_dialer_del(Ecore_Ipc_Server *svr)
 
    if (svr->dialer.dialer)
      {
+        efl_event_callback_array_del(svr->dialer.dialer, _ecore_ipc_dialer_cbs(), svr);
+        if (!efl_io_closer_closed_get(svr->dialer.dialer))
+          efl_io_closer_close(svr->dialer.dialer);
+
         efl_del(svr->dialer.dialer);
         svr->dialer.dialer = NULL;
      }