Enlightenment CVS committal Author : englebass Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_exec.c Log Message: Fix instance handling. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_exec.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- e_exec.c 25 Mar 2007 17:23:48 -0000 1.5 +++ e_exec.c 4 May 2007 15:55:46 -0000 1.6 @@ -99,6 +99,8 @@ if (_e_exec_exit_handler) ecore_event_handler_del(_e_exec_exit_handler); if (_e_exec_border_add_handler) ecore_event_handler_del(_e_exec_border_add_handler); + evas_hash_free(e_exec_instances); + evas_list_free(e_exec_start_pending); return 1; } @@ -245,8 +247,16 @@ inst->expire_timer = ecore_timer_add(10.0, _e_exec_cb_expire_timer, inst); l = evas_hash_find(e_exec_instances, desktop->orig_path); - l = evas_list_append(l, inst); - evas_hash_direct_add(e_exec_instances, desktop->orig_path, l); + if (l) + { + l = evas_list_append(l, inst); + evas_hash_modify(e_exec_instances, desktop->orig_path, l); + } + else + { + l = evas_list_append(l, inst); + e_exec_instances = evas_hash_add(e_exec_instances, desktop->orig_path, l); + } e_exec_start_pending = evas_list_append(e_exec_start_pending, desktop); } else @@ -320,8 +330,14 @@ ecore_exe_event_data_get(ev->exe, ECORE_EXE_PIPE_READ)); } instances = evas_hash_find(e_exec_instances, inst->desktop->orig_path); - instances = evas_list_remove(instances, inst); - evas_hash_direct_add(e_exec_instances, inst->desktop->orig_path, instances); + if (instances) + { + instances = evas_list_remove(instances, inst); + if (instances) + evas_hash_modify(e_exec_instances, inst->desktop->orig_path, instances); + else + e_exec_instances = evas_hash_del(e_exec_instances, inst->desktop->orig_path, NULL); + } e_exec_start_pending = evas_list_remove(e_exec_start_pending, inst->desktop); if (inst->expire_timer) ecore_timer_del(inst->expire_timer); free(inst); @@ -342,7 +358,7 @@ inst = l->data; if (((search->startup_id > 0) && (search->startup_id == inst->startup_id)) || - ((search->pid > 1) && (search->pid == ecore_exe_pid_get(inst->exe)))) + ((inst->exe) && (search->pid > 1) && (search->pid == ecore_exe_pid_get(inst->exe)))) { search->desktop = inst->desktop; return 0; ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs