* ecore_exe patch to e_zone from Victor Kojouharov

SVN revision: 22132
This commit is contained in:
chaos 2006-04-15 12:48:21 +00:00 committed by chaos
parent a14c4870b6
commit bace06a352
1 changed files with 25 additions and 6 deletions

View File

@ -562,6 +562,8 @@ e_zone_exec(E_Zone *zone, char *exe)
char *penv_display;
char buf[4096], buf2[32];
Ecore_Exe *ex;
E_App_Instance *inst = NULL;
E_App *a;
E_OBJECT_CHECK_RETURN(zone, 0);
E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, 0);
@ -601,9 +603,21 @@ e_zone_exec(E_Zone *zone, char *exe)
snprintf(buf, sizeof(buf), "E_START|%i", startup_id);
e_util_env_set("DESKTOP_STARTUP_ID", buf);
/* execute */
ex = ecore_exe_run(exe, NULL);
a = e_app_exe_find(exe);
if (!a)
{
a = E_NEW(E_App, 1);
a->name = strdup (exe);
a->exe = strdup (exe);
}
inst = E_NEW(E_App_Instance, 1);
if (!inst) return 0;
ex = ecore_exe_pipe_run(exe, ECORE_EXE_PIPE_AUTO | ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_ERROR | ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_ERROR_LINE_BUFFERED, inst);
if (!ex)
{
free(inst);
e_error_dialog_show(_("Run Error"),
_("Enlightenment was unable to fork a child process:\n"
"\n"
@ -612,17 +626,22 @@ e_zone_exec(E_Zone *zone, char *exe)
exe);
ret = 0;
}
else
{
ecore_exe_free(ex);
ret = 1;
}
/* reset env vars */
else ret = 1;
if (penv_display)
{
e_util_env_set("DISPLAY", penv_display);
free(penv_display);
}
/* 20 lines at start and end, 20x100 limit on bytes at each end. */
ecore_exe_auto_limits_set(ex, 2000, 2000, 20, 20);
ecore_exe_tag_set(ex, "E/app");
inst->app = a;
inst->exe = ex;
inst->launch_id = startup_id;
inst->launch_time = ecore_time_get();
a->instances = evas_list_append(a->instances, inst);
if (a->startup_notify) a->starting = 1;
return ret;
}