if ipc serve fails - try ipc send again.

SVN revision: 81854
This commit is contained in:
Carsten Haitzler 2012-12-29 03:02:37 +00:00
parent ce00c0157f
commit 970051e45a
3 changed files with 15 additions and 5 deletions

View File

@ -117,16 +117,17 @@ ipc_init(void)
"nowm", nowm, EET_T_INT);
}
void
Eina_Bool
ipc_serve(void)
{
char *hash = _ipc_hash_get();
if (!hash) return;
if (!hash) return EINA_FALSE;
ipc = ecore_ipc_server_add(ECORE_IPC_LOCAL_USER, hash, 0, NULL);
free(hash);
if (!ipc) return;
if (!ipc) return EINA_FALSE;
hnd_data = ecore_event_handler_add
(ECORE_IPC_EVENT_CLIENT_DATA, _ipc_cb_client_data, NULL);
return EINA_TRUE;
}
void

View File

@ -30,7 +30,7 @@ struct _Ipc_Instance
void ipc_init(void);
void ipc_shutdown(void);
void ipc_serve(void);
Eina_Bool ipc_serve(void);
void ipc_instance_new_func_set(void (*func) (Ipc_Instance *inst));
Eina_Bool ipc_instance_add(Ipc_Instance *inst);

View File

@ -921,6 +921,7 @@ elm_main(int argc, char **argv)
{
Win *wn;
Term *term;
int remote_try = 0;
char *cmd = NULL;
char *cd = NULL;
char *theme = NULL;
@ -1209,6 +1210,7 @@ elm_main(int argc, char **argv)
if (login_shell == 0xff) login_shell = EINA_FALSE;
ipc_init();
remote:
if ((!single) && (config->multi_instance))
{
Ipc_Instance inst;
@ -1253,7 +1255,14 @@ elm_main(int argc, char **argv)
if ((!single) && (config->multi_instance))
{
ipc_instance_new_func_set(main_ipc_new);
ipc_serve();
if (!ipc_serve())
{
if (remote_try < 1)
{
remote_try++;
goto remote;
}
}
}
wn = main_win_new(name, role, title, icon_name,