ecore: Allow quitting the main loop before entering it
authormike_m <mike_m@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 29 Nov 2011 09:24:51 +0000 (09:24 +0000)
committermike_m <mike_m@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 29 Nov 2011 09:24:51 +0000 (09:24 +0000)
elementary_config does this, and the glib based main loop didn't support it.

Signed-off-by: Mike McCormack <mj.mccormack@samsung.com>
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@65683 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore/ecore_main.c

index 152836a..aacf991 100644 (file)
@@ -207,9 +207,7 @@ static void _ecore_main_win32_handlers_cleanup(void);
 #endif
 
 static int in_main_loop = 0;
-#ifndef USE_G_MAIN_LOOP
 static int do_quit = 0;
-#endif
 static Ecore_Fd_Handler *fd_handlers = NULL;
 static Ecore_Fd_Handler *fd_handler_current = NULL;
 static Eina_List *fd_handlers_with_prep = NULL;
@@ -889,8 +887,13 @@ ecore_main_loop_begin(void)
    in_main_loop--;
    _ecore_unlock();
 #else
-   ecore_main_loop = g_main_loop_new(NULL, FALSE);
-   g_main_loop_run(ecore_main_loop);
+   if (!do_quit)
+     {
+        if (!ecore_main_loop)
+          ecore_main_loop = g_main_loop_new(NULL, FALSE);
+        g_main_loop_run(ecore_main_loop);
+     }
+   do_quit = 0;
 #endif
 }
 
@@ -904,10 +907,10 @@ ecore_main_loop_begin(void)
 EAPI void
 ecore_main_loop_quit(void)
 {
-#ifndef USE_G_MAIN_LOOP
    do_quit = 1;
-#else
-   g_main_loop_quit(ecore_main_loop);
+#ifdef USE_G_MAIN_LOOP
+   if (ecore_main_loop)
+     g_main_loop_quit(ecore_main_loop);
 #endif
 }