true,
so we might need tests to cover that ...

On Monday 09 November 2015  14:08, Tom Hacohen wrote :
> Hey,
> 
> I reverted this. The freeze state can change from within the callbacks 
> so you have to test it every time.
> 
> --
> Tom.
> 
> On 09/11/15 14:01, Jérémy Zurcher wrote:
> > jeyzu pushed a commit to branch master.
> >
> > http://git.enlightenment.org/core/efl.git/commit/?id=4b116627c24a43248abf5a34a391241b1c0cf983
> >
> > commit 4b116627c24a43248abf5a34a391241b1c0cf983
> > Author: Jérémy Zurcher <[email protected]>
> > Date:   Mon Nov 9 15:03:03 2015 +0100
> >
> >      Eo: Optimise event callback call
> >
> >       check if the event is frozen before walking the event list
> > ---
> >   src/lib/eo/eo_base_class.c | 53 
> > ++++++++++++++++++++++------------------------
> >   1 file changed, 25 insertions(+), 28 deletions(-)
> >
> > diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c
> > index f99ca37..daf7a9d 100644
> > --- a/src/lib/eo/eo_base_class.c
> > +++ b/src/lib/eo/eo_base_class.c
> > @@ -671,48 +671,45 @@ _eo_base_event_callback_call(Eo *obj_id, Eo_Base_Data 
> > *pd,
> >
> >      pd->walking_list++;
> >
> > +   if (!desc->unfreezable && (event_freeze_count || 
> > pd->event_freeze_count))
> > +     goto end;
> > +
> >      for (cb = pd->callbacks; cb; cb = cb->next)
> >        {
> > -        if (!cb->delete_me)
> > +        if (cb->delete_me)
> > +          continue;
> > +
> > +        if (cb->func_array)
> >             {
> > -             if (cb->func_array)
> > -               {
> > -                  const Eo_Callback_Array_Item *it;
> > +             const Eo_Callback_Array_Item *it;
> >
> > -                  for (it = cb->items.item_array; it->func; it++)
> > -                    {
> > -                       if (!_cb_desc_match(it->desc, desc))
> > -                          continue;
> > -                       if (!it->desc->unfreezable &&
> > -                           (event_freeze_count || pd->event_freeze_count))
> > -                          continue;
> > -
> > -                       /* Abort callback calling if the func says so. */
> > -                       if (!it->func((void *) cb->func_data, obj_id, desc,
> > -                                (void *) event_info))
> > -                         {
> > -                            ret = EINA_FALSE;
> > -                            goto end;
> > -                         }
> > -                    }
> > -               }
> > -             else
> > +             for (it = cb->items.item_array; it->func; it++)
> >                  {
> > -                  if (!_cb_desc_match(cb->items.item.desc, desc))
> > -                    continue;
> > -                  if (!cb->items.item.desc->unfreezable &&
> > -                      (event_freeze_count || pd->event_freeze_count))
> > +                  if (!_cb_desc_match(it->desc, desc))
> >                       continue;
> >
> >                     /* Abort callback calling if the func says so. */
> > -                  if (!cb->items.item.func((void *) cb->func_data, obj_id, 
> > desc,
> > -                                           (void *) event_info))
> > +                  if (!it->func((void *) cb->func_data, obj_id, desc,
> > +                                (void *) event_info))
> >                       {
> >                          ret = EINA_FALSE;
> >                          goto end;
> >                       }
> >                  }
> >             }
> > +        else
> > +          {
> > +             if (!_cb_desc_match(cb->items.item.desc, desc))
> > +               continue;
> > +
> > +             /* Abort callback calling if the func says so. */
> > +             if (!cb->items.item.func((void *) cb->func_data, obj_id, desc,
> > +                                      (void *) event_info))
> > +               {
> > +                  ret = EINA_FALSE;
> > +                  goto end;
> > +               }
> > +          }
> >        }
> >
> >   end:
> >
> 
> 
> ------------------------------------------------------------------------------
> Presto, an open source distributed SQL query engine for big data, initially
> developed by Facebook, enables you to easily query your data on Hadoop in a 
> more interactive manner. Teradata is also now providing full enterprise
> support for Presto. Download a free open source copy now.
> http://pubads.g.doubleclick.net/gampad/clk?id=250295911&iu=/4140
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
--- Hell'O from Yverdoom

Jérémy (jeyzu)

------------------------------------------------------------------------------
Presto, an open source distributed SQL query engine for big data, initially
developed by Facebook, enables you to easily query your data on Hadoop in a 
more interactive manner. Teradata is also now providing full enterprise
support for Presto. Download a free open source copy now.
http://pubads.g.doubleclick.net/gampad/clk?id=250295911&iu=/4140
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to