On Thu, 5 Nov 2020 09:49:43 +0100 Marcel Hollerbach <m...@bu5hm4n.de> said:

actually good point. maybe i should back this out.

> Hi,
> 
> this looks kind of wrong to me:
> 
> 1. If you speak about the nondeterministic nature of the addresses of 
> the events being different: That does not matter, the order of the event 
> subscriptions within the array of different events do not matter. Only 
> the order of the subscriptions of the same event do matter. This is 
> coming from the fact that we are only "using" the resulting order of all 
> subscriptions by its history, not by its address.
> 
> 
> 2. If you speak about the fact that we rely on the same events in the 
> array keeping the same order, and there is behavior in the windows qsort 
> implementation that is breaking our assertions, then this needs to be 
> fixed in the EFL_CALLBACKS_ARRAY_DEFINE macro, otherwise every single 
> user gets the wrong behavior. Which has (exactly in this spot) caused 
> apps to not even start in the past. (There was a discussion in the past 
> about the fact that qsort does not have documented defined behavior for 
> maintaining order of equal event, however, there is some black magic we 
> could apply to get that, with rather low memory/perf impact)
> 
> Greetings,
>     bu5hm4n
> 
> 
> 
> On 11/4/20 7:56 PM, Wander Lairson Costa wrote:
> > raster pushed a commit to branch master.
> > 
> > http://git.enlightenment.org/core/efl.git/commit/?id=fc949660f70f99fe97e63de65b1b67377d16c6da
> > 
> > commit fc949660f70f99fe97e63de65b1b67377d16c6da
> > Author: Wander Lairson Costa <wander.lair...@gmail.com>
> > Date:   Wed Nov 4 18:25:37 2020 +0000
> > 
> >      eo_test_general.c: Make eo_signals tests pass on Windows
> >      
> >      Summary:
> >      EFL_CALLBACKS_ARRAY_DEFINE reorders the callbacks according to
> >      efl_callbacks_cmp. efl_callbacks_cmp compares the address of the desc
> >      field, which depends on the memory layout generated by the linker.
> >      
> >      To make the test run deterministically, we define the array of
> > callbacks manually.
> >      
> >      Reviewers: vtorri, felipealmeida, raster
> >      
> >      Reviewed By: raster
> >      
> >      Subscribers: cedric, #reviewers, #committers, jptiz, felipealmeida
> >      
> >      Tags: #efl
> >      
> >      Differential Revision: https://phab.enlightenment.org/D12043
> > ---
> >   src/tests/eo/suite/eo_test_general.c | 25 ++++++++++++++++++++-----
> >   1 file changed, 20 insertions(+), 5 deletions(-)
> > 
> > diff --git a/src/tests/eo/suite/eo_test_general.c
> > b/src/tests/eo/suite/eo_test_general.c index ae026a27f4..7bdb0e170b 100644
> > --- a/src/tests/eo/suite/eo_test_general.c
> > +++ b/src/tests/eo/suite/eo_test_general.c
> > @@ -199,11 +199,26 @@ _eo_signals_cb_added_deled(void *data EINA_UNUSED,
> > const Efl_Event *event) fail_if(callback_array->func !=
> > _eo_signals_cb_added_deled); }
> >   
> > -EFL_CALLBACKS_ARRAY_DEFINE(_eo_signals_callbacks,
> > -{ EV_A_CHANGED, _eo_signals_a_changed_cb },
> > -{ EV_A_CHANGED, _eo_signals_a_changed_cb2 },
> > -{ EV_A_CHANGED, _eo_signals_a_changed_never },
> > -{ EFL_EVENT_DEL, _eo_signals_efl_del_cb });
> > +// We don't use the EFL_CALLBACKS_ARRAY_DEFINE macro because
> > +// we need the callbacks be called in a specific order
> > +static Efl_Callback_Array_Item *
> > +_eo_signals_callbacks(void)
> > +{
> > +    static Efl_Callback_Array_Item items[] =
> > +      {
> > +          { EV_A_CHANGED, _eo_signals_a_changed_cb },
> > +          { EV_A_CHANGED, _eo_signals_a_changed_cb2 },
> > +          { EV_A_CHANGED, _eo_signals_a_changed_never },
> > +          { 0, _eo_signals_efl_del_cb },
> > +          { 0, 0 },
> > +      };
> > +
> > +    // On Windows, because _EFL_EVENT_DEL is a symbol exported
> > +    // from the DLL, we can't assign from a context expression
> > +    items[3].desc = EFL_EVENT_DEL;
> > +
> > +    return items;
> > +}
> >   
> >   EFL_START_TEST(eo_signals)
> >   {
> > 
> 
> 
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
Carsten Haitzler - ras...@rasterman.com



_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to