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

Reply via email to