True.
If you have time to send a patch, that'd be greatly appreciated, 
otherwise, let me know, and I'll write the tests.

--
Tom.

On 09/11/15 14:18, Jérémy Zurcher wrote:
> 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
>


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