diff --git a/src/bin/e_apps.c b/src/bin/e_apps.c index 7ec63217f..6ffc7fe54 100644 --- a/src/bin/e_apps.c +++ b/src/bin/e_apps.c @@ -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; } diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c index 72838cefc..3e0606a3b 100644 --- a/src/modules/ibar/e_mod_main.c +++ b/src/modules/ibar/e_mod_main.c @@ -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); }