summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2018-02-02 16:59:56 -0500
committerMike Blumenkrantz <zmike@osg.samsung.com>2018-02-02 16:59:44 -0500
commit10ce0cbd8ac8d176a13d9be2e9e53a56a2a616ac (patch)
tree0f678014f8938968485db39d85e26ae848c79d88
parentaaf3659fafa3151e9ac685a9c07a2fa97113d30e (diff)
downloadefl-10ce0cbd8ac8d176a13d9be2e9e53a56a2a616ac.tar.gz
efreet: reset ipc connection after fork
ensure that existing connection is not reused
-rw-r--r--src/lib/efreet/efreet_cache.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/lib/efreet/efreet_cache.c b/src/lib/efreet/efreet_cache.c
index 0df7a7b887..052e709b07 100644
--- a/src/lib/efreet/efreet_cache.c
+++ b/src/lib/efreet/efreet_cache.c
@@ -182,6 +182,22 @@ _cb_server_del(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
}
static void
+_efreet_cache_reset()
+{
+ const char *s;
+ int len = 0;
+
+ if (ipc) ecore_ipc_server_del(ipc);
+ ipc = ecore_ipc_server_connect(ECORE_IPC_LOCAL_USER, "efreetd", 0, NULL);
+ if (!ipc) return;
+
+ s = efreet_language_get();
+ if (s) len = strlen(s);
+ ecore_ipc_server_send(ipc, 1, 0, 0, 0, 0, s, len);
+ efreet_icon_extensions_refresh();
+}
+
+static void
_icon_desktop_cache_update_event_add(int event_type)
{
Efreet_Event_Cache_Update *ev;
@@ -330,6 +346,7 @@ efreet_cache_init(void)
}
}
}
+ ecore_fork_reset_callback_add(_efreet_cache_reset, NULL);
return 1;
error:
@@ -354,7 +371,7 @@ efreet_cache_shutdown(void)
ecore_event_type_flush(EFREET_EVENT_ICON_CACHE_UPDATE,
EFREET_EVENT_DESKTOP_CACHE_UPDATE,
EFREET_EVENT_DESKTOP_CACHE_BUILD);
-
+ ecore_fork_reset_callback_del(_efreet_cache_reset, NULL);
IF_RELEASE(theme_name);
icon_cache = efreet_cache_close(icon_cache);