ecore ipc - fix flush to not lose messages
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Mon, 26 Mar 2018 09:18:30 +0000 (18:18 +0900)
committerWonki Kim <wonki_.kim@samsung.com>
Tue, 10 Apr 2018 11:22:02 +0000 (20:22 +0900)
it wasn't looking at the copier queue "todo" at all thus skipping it
on flush. this will fix flushing of ecore ipc message buffers. this
happens to also now fix terminology's "one process" mode.

@fix

src/lib/ecore_ipc/ecore_ipc.c

index 09fc818..02fdb28 100644 (file)
@@ -1099,7 +1099,8 @@ ecore_ipc_server_flush(Ecore_Ipc_Server *svr)
         while (!efl_io_closer_closed_get(svr->dialer.dialer) &&
                !efl_net_dialer_connected_get(svr->dialer.dialer))
           ecore_main_loop_iterate();
-        while (efl_io_queue_usage_get(svr->dialer.input) > 0)
+        while ((efl_io_queue_usage_get(svr->dialer.input) > 0) ||
+               (efl_io_copier_pending_size_get(svr->dialer.send_copier) > 0))
           efl_io_copier_flush(svr->dialer.send_copier, EINA_TRUE, EINA_TRUE);
         return;
      }