better exe exit tracking

SVN revision: 17031
This commit is contained in:
Carsten Haitzler 2005-09-28 12:48:38 +00:00
parent ad38a59518
commit 1c96761a52
2 changed files with 10 additions and 22 deletions

View File

@ -1520,11 +1520,14 @@ _e_apps_cb_exit(void *data, int type, void *event)
{
Ecore_Event_Exe_Exit *ev;
Evas_List *l;
E_App_Instance *ai;
E_App *a;
ev = event;
if (!ev->exe) return 1;
a = _e_app_ecore_exe_find(ev->exe);
ai = ecore_exe_data_get(ev->exe);
if (!ai) return 1;
a = ai->app;
if (!a) return 1;
if (ev->exit_code == 127) /* /bin/sh uses this if cmd not found */
@ -1535,25 +1538,10 @@ _e_apps_cb_exit(void *data, int type, void *event)
"\n"
"The command was not found\n"),
a->exe);
for (l = a->instances; l; l = l->next)
{
E_App_Instance *inst;
inst = l->data;
if (ev->exe == inst->exe)
{
if (inst->expire_timer)
{
ecore_timer_del(inst->expire_timer);
inst->expire_timer = NULL;
}
inst->exe = NULL;
a->instances = evas_list_remove_list(a->instances, l);
free(inst);
_e_apps_start_pending = evas_list_remove(_e_apps_start_pending, a);
break;
}
}
if (ai->expire_timer) ecore_timer_del(ai->expire_timer);
free(ai);
a->instances = evas_list_remove(a->instances, ai);
_e_apps_start_pending = evas_list_remove(_e_apps_start_pending, a);
_e_app_change(a, E_APP_EXIT);
return 1;
}

View File

@ -335,7 +335,7 @@ _ibar_app_change(void *data, E_App *a, E_App_Change ch)
{
IBar_Icon *ic;
if (e_app_valid_exe_get(a))
if (e_app_valid_exe_get(a) || (!a->exe))
{
ic = _ibar_icon_new(ibb, a);
if (ic)
@ -520,7 +520,7 @@ _ibar_bar_new(IBar *ib, E_Container *con)
IBar_Icon *ic;
a = l->data;
if (e_app_valid_exe_get(a))
if (e_app_valid_exe_get(a) || (!a->exe))
{
ic = _ibar_icon_new(ibb, a);
}