ecore: Allow quitting the main loop before entering it

elementary_config does this, and the glib based main loop didn't support it.

Signed-off-by: Mike McCormack <mj.mccormack@samsung.com>

SVN revision: 65683
This commit is contained in:
Mike McCormack 2011-11-29 09:24:51 +00:00 committed by Mike McCormack
parent e08be28ccc
commit f57db57c25
1 changed files with 10 additions and 7 deletions

View 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
}