Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_int_menus.c 


Log Message:
Don't call ecore_main_loop_quit in a callback, delay.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -3 -r1.84 -r1.85
--- e_int_menus.c       6 Aug 2005 05:35:34 -0000       1.84
+++ e_int_menus.c       22 Aug 2005 14:51:36 -0000      1.85
@@ -19,6 +19,8 @@
 };
 
 /* local subsystem functions */
+static void _e_int_menus_quit                (void);
+static void _e_int_menus_quit_cb             (void *data);
 static void _e_int_menus_main_del_hook       (void *obj);
 static void _e_int_menus_main_about          (void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _e_int_menus_main_run            (void *data, E_Menu *m, 
E_Menu_Item*mi);
@@ -47,6 +49,9 @@
 static void _e_int_menus_lost_clients_free_hook   (void *obj);
 static void _e_int_menus_lost_clients_item_cb     (void *data, E_Menu *m, 
E_Menu_Item *mi);
 
+/* local subsystem globals */
+static Ecore_Job *_e_int_menus_quit_job = NULL;
+
 /* externally accessible functions */
 E_Menu *
 e_int_menus_main_new(void)
@@ -247,6 +252,23 @@
 
 /* local subsystem functions */
 static void
+_e_int_menus_quit(void)
+{
+   if (_e_int_menus_quit_job)
+     {
+       ecore_job_del(_e_int_menus_quit_job);
+       _e_int_menus_quit_job = NULL;
+     }
+   _e_int_menus_quit_job = ecore_job_add(_e_int_menus_quit_cb, NULL);
+}
+
+static void
+_e_int_menus_quit_cb(void *data)
+{
+   ecore_main_loop_quit();
+}
+
+static void
 _e_int_menus_main_del_hook(void *obj)
 {
    Main_Data *dat;
@@ -294,13 +316,13 @@
 _e_int_menus_main_restart(void *data, E_Menu *m, E_Menu_Item *mi)
 {
    restart = 1;
-   ecore_main_loop_quit();
+   _e_int_menus_quit();
 }
 
 static void
 _e_int_menus_main_exit(void *data, E_Menu *m, E_Menu_Item *mi)
 {
-   if (!e_util_immortal_check()) ecore_main_loop_quit();
+   if (!e_util_immortal_check()) _e_int_menus_quit();
 }
 
 static void
@@ -763,7 +785,7 @@
    e_config_save_queue();
 
    restart = 1;
-   ecore_main_loop_quit();   
+   _e_int_menus_quit();   
 }
 
 static void




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to