Events were processed before init for a example, evas events, move, resize, etc. I'm not the user but this kind of response seems very inresponsible for users once the versioning out.
On Thu, Jul 25, 2019 at 10:01 PM Mike Blumenkrantz < michael.blumenkra...@gmail.com> wrote: > Hi, > > On Thu, Jul 25, 2019 at 4:15 AM Hermet Park <hermetp...@gmail.com> wrote: > > > I remember you modified the behavior of the init count not to go down 0. > > That might bring this additional patch. > > > > I'm not sure what this means? > > > > > > The problem is, these changes breaks the compatibility. > > Even I think the original behavior would better than this in user pov. > > > > Let me explain a scenario. > > > > Before main loop begin, > > User might add A event with callback (A_CB) in intialize step. > > But user have no any guarantee when A_CB would be called, but they'd like > > to do something there, even they try quit the process based on some > > conditions (maybe exception case or a corner case possible) > > > > Actually, this A_CB could be called before mainloop begin, and now the > > process won't be quited because quit request would be ignored. > > > > Before these changes, > > the process could be exited(?) successfully because the mainloop won't > > started at this scenario. *quit (count = - 1) -> *begin (count = 0) > > and now this breaks the behavior and user should take care of the loop > > condition when they handle this in event callbacks. > > > > The case you're describing sounds like a bug. In fact, it is directly in > opposition to the function's documentation, which explicitly states that > "all events currently on the queue" will still be processed prior to > quitting the main loop. Prior to this patch, no events were processed, > which is clearly not how main loops should work. > > The fact that this behavior existed was nothing more than an untested > corner case. We actually had unit tests which were failing intermittently > because they unintentionally triggered this codepath. > > If you have cases where this bug is being triggered, you'll want to update > them. > > > Regards, > Mike > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Jul 22, 2019 at 9:42 PM Mike Blumenkrantz < > > michael.blumenkra...@gmail.com> wrote: > > > > > cedric pushed a commit to branch master. > > > > > > > > > > > > http://git.enlightenment.org/core/efl.git/commit/?id=17f433c57bfa11319a22fde1aedb21e99a3a1268 > > > > > > commit 17f433c57bfa11319a22fde1aedb21e99a3a1268 > > > Author: Mike Blumenkrantz <zm...@samsung.com> > > > Date: Fri Jul 19 15:42:09 2019 -0400 > > > > > > 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.b...@free.fr> > > > Differential Revision: https://phab.enlightenment.org/D9360 > > > --- > > > src/lib/ecore/ecore_main.c | 3 +++ > > > src/lib/ecore/ecore_private.h | 1 + > > > 2 files changed, 4 insertions(+) > > > > > > diff --git a/src/lib/ecore/ecore_main.c b/src/lib/ecore/ecore_main.c > > > index 523add2af3..f7d248fc27 100644 > > > --- a/src/lib/ecore/ecore_main.c > > > +++ b/src/lib/ecore/ecore_main.c > > > @@ -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 > > > diff --git a/src/lib/ecore/ecore_private.h > > b/src/lib/ecore/ecore_private.h > > > index b66b50915d..99a3fb7740 100644 > > > --- a/src/lib/ecore/ecore_private.h > > > +++ b/src/lib/ecore/ecore_private.h > > > @@ -163,6 +163,7 @@ struct _Efl_Loop_Data > > > > > > int idlers; > > > int in_loop; > > > + unsigned int loop_active; > > > > > > struct { > > > int high; > > > > > > -- > > > > > > > > > > > > > -- > > Regards, Hermet > > > > _______________________________________________ > > enlightenment-devel mailing list > > enlightenment-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > > > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- Regards, Hermet _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel