Enlightenment CVS committal

Author  : urandom
Project : e_modules
Module  : winselector

Dir     : e_modules/winselector


Modified Files:
        e_mod_main.c 


Log Message:
additional precautions, but still causes segfaults sometimes

===================================================================
RCS file: /cvs/e/e_modules/winselector/e_mod_main.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- e_mod_main.c        26 Jul 2007 07:48:21 -0000      1.15
+++ e_mod_main.c        2 Sep 2007 14:24:46 -0000       1.16
@@ -102,19 +102,29 @@
   return gcc;
 }
 
-   static void
+static void
 _gc_shutdown (E_Gadcon_Client * gcc)
 {
    Instance *inst;
 
   inst = gcc->data;
-   if (inst->win_menu)
-     {
-       e_menu_post_deactivate_callback_set(inst->win_menu, NULL, NULL);
-       e_object_del(E_OBJECT(inst->win_menu));
-       inst->win_menu = NULL;
-     }
-  evas_object_del (inst->o_button);
+  if (inst->win_menu)
+    {
+       e_menu_post_deactivate_callback_set(inst->win_menu, NULL, NULL);
+       e_object_del(E_OBJECT(inst->win_menu));
+       inst->win_menu = NULL;
+    }
+  if (inst->bd_icon)
+    {
+       edje_object_part_unswallow(inst->o_button, inst->bd_icon);
+       evas_object_del(inst->bd_icon);
+       inst->bd_icon = NULL;
+    }
+  if (inst->o_button)
+    {
+       evas_object_del(inst->o_button);
+       inst->o_button = NULL;
+    }
   free (inst);
 }
 
@@ -482,6 +492,9 @@
 
 static void _focus_in(E_Border *bd, Instance *inst)
 {
+   if (!inst->o_button)
+     return;
+
    _focus_out(inst);
    inst->bd_icon = e_border_icon_add(bd, evas_object_evas_get(inst->o_button));
    edje_object_signal_emit(inst->o_button, "focus_in", "");
@@ -491,10 +504,16 @@
 
 static void _focus_out(Instance *inst)
 {
-   edje_object_signal_emit(inst->o_button, "focus_out", "");
-   if (inst->bd_icon) evas_object_del(inst->bd_icon);
-   inst->bd_icon = NULL;
+   if (!inst->o_button)
+     return;
 
+   edje_object_signal_emit(inst->o_button, "focus_out", "");
+   if (inst->bd_icon)
+     {
+       edje_object_part_unswallow(inst->o_button, inst->bd_icon);
+       evas_object_del(inst->bd_icon);
+       inst->bd_icon = NULL;
+     }
 }
 
 static int _win_menu_sort_alpha_cb(void *d1, void *d2)



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to