ecore: avoid breaking next main loop start if quit occurs outside of loop

in the case where ecore_main_loop_quit() was called before ecore_main_loop_begin(),
the latter call would exit immediately without ever iterating the main loop

@fix

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9360
This commit is contained in:
Mike Blumenkrantz 2019-07-19 15:42:09 -04:00 committed by Cedric BAIL
parent d35b06497a
commit 17f433c57b
2 changed files with 4 additions and 0 deletions

View File

@ -1177,6 +1177,7 @@ _ecore_main_loop_iterate_may_block(Eo *obj, Efl_Loop_Data *pd, int may_block)
void
_ecore_main_loop_begin(Eo *obj, Efl_Loop_Data *pd)
{
pd->loop_active++;
if (obj == ML_OBJ)
{
#ifdef HAVE_SYSTEMD
@ -1240,11 +1241,13 @@ _ecore_main_loop_begin(Eo *obj, Efl_Loop_Data *pd)
pd->do_quit = 0;
#endif
}
pd->loop_active--;
}
void
_ecore_main_loop_quit(Eo *obj, Efl_Loop_Data *pd)
{
if (!pd->loop_active) return;
pd->do_quit = 1;
if (obj != ML_OBJ) return;
#ifdef USE_G_MAIN_LOOP

View File

@ -163,6 +163,7 @@ struct _Efl_Loop_Data
int idlers;
int in_loop;
unsigned int loop_active;
struct {
int high;