Hey,

In Eo we test everything, please add tests.

--
Tom.


On 02/02/16 18:52, Cedric BAIL wrote:
> cedric pushed a commit to branch master.
>
> http://git.enlightenment.org/core/efl.git/commit/?id=f1bf1e58df38146a384fc8d4556400e0c02c4bc5
>
> commit f1bf1e58df38146a384fc8d4556400e0c02c4bc5
> Author: Cedric BAIL <[email protected]>
> Date:   Wed Jan 27 11:42:48 2016 -0800
>
>      eo: return a value when adding or removing callback to help the caller 
> manage state.
> ---
>   src/lib/eo/eo_base.eo                      |  4 ++++
>   src/lib/eo/eo_base_class.c                 | 37 
> ++++++++++++++++++------------
>   src/lib/evas/canvas/evas_canvas3d_object.c | 16 +++++++++----
>   3 files changed, 37 insertions(+), 20 deletions(-)
>
> diff --git a/src/lib/eo/eo_base.eo b/src/lib/eo/eo_base.eo
> index 53b49b3..18f780a 100644
> --- a/src/lib/eo/eo_base.eo
> +++ b/src/lib/eo/eo_base.eo
> @@ -176,6 +176,7 @@ abstract Eo.Base ()
>              callbacks of the same priority are called in reverse order of
>              creation.
>            ]]
> +      return: bool; [[Return true when the callback has been successfully 
> added.]]
>            params {
>               @in desc: const(Eo.Event_Description)*; [[The description of 
> the event to listen to]]
>               @in priority: Eo.Callback_Priority; [[The priority of the 
> callback]]
> @@ -185,6 +186,7 @@ abstract Eo.Base ()
>         }
>         event_callback_del {
>            [[Del a callback with a specific data associated to it for an 
> event.]]
> +      return: bool; [[Return true when the callback has been successfully 
> removed.]]
>            params {
>               @in desc: const(Eo.Event_Description)*; [[The description of 
> the event to listen to]]
>               @in func: Eo.Event_Cb; [[the callback to delete]]
> @@ -197,6 +199,7 @@ abstract Eo.Base ()
>              callbacks of the same priority are called in reverse order of
>              creation.
>            ]]
> +      return: bool; [[Return true when the callback has been successfully 
> added.]]
>            params {
>               @in array: const(Eo.Callback_Array_Item)*; [[an 
> #Eo_Callback_Array_Item of events to listen to]]
>               @in priority: Eo.Callback_Priority; [[The priority of the 
> callback]]
> @@ -207,6 +210,7 @@ abstract Eo.Base ()
>            [[Del a callback array with a specific data associated to it for an
>              event.
>            ]]
> +      return: bool; [[Return true when the callback has been successfully 
> removed.]]
>            params {
>               @in array: const(Eo.Callback_Array_Item)*; [[an 
> #Eo_Callback_Array_Item of events to listen to]]
>               @in user_data: const(void)*; [[The data to compare]]
> diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c
> index d27e256..64c6df3 100644
> --- a/src/lib/eo/eo_base_class.c
> +++ b/src/lib/eo/eo_base_class.c
> @@ -551,13 +551,14 @@ _eo_callbacks_sorted_insert(Eo_Base_Data *pd, 
> Eo_Callback_Description *cb)
>        }
>   }
>
> -EOLIAN static void
> +EOLIAN static Eina_Bool
>   _eo_base_event_callback_priority_add(Eo *obj, Eo_Base_Data *pd,
>                       const Eo_Event_Description *desc,
>                       Eo_Callback_Priority priority,
>                       Eo_Event_Cb func,
>                       const void *user_data)
>   {
> +   const Eo_Callback_Array_Item arr[] = { {desc, func}, {NULL, NULL}};
>      Eo_Callback_Description *cb;
>
>      cb = calloc(1, sizeof(*cb));
> @@ -565,7 +566,7 @@ _eo_base_event_callback_priority_add(Eo *obj, 
> Eo_Base_Data *pd,
>        {
>           ERR("Tried adding callback with invalid values: cb: %p desc: %p 
> func: %p\n", cb, desc, func);
>           free(cb);
> -        return;
> +        return EINA_FALSE;
>        }
>      cb->items.item.desc = desc;
>      cb->items.item.func = func;
> @@ -573,13 +574,12 @@ _eo_base_event_callback_priority_add(Eo *obj, 
> Eo_Base_Data *pd,
>      cb->priority = priority;
>      _eo_callbacks_sorted_insert(pd, cb);
>
> -     {
> -        const Eo_Callback_Array_Item arr[] = { {desc, func}, {NULL, NULL}};
> -        eo_do(obj, eo_event_callback_call(EO_BASE_EVENT_CALLBACK_ADD, (void 
> *)arr));
> -     }
> +   eo_do(obj, eo_event_callback_call(EO_BASE_EVENT_CALLBACK_ADD, (void 
> *)arr));
> +
> +   return EINA_TRUE;
>   }
>
> -EOLIAN static void
> +EOLIAN static Eina_Bool
>   _eo_base_event_callback_del(Eo *obj, Eo_Base_Data *pd,
>                       const Eo_Event_Description *desc,
>                       Eo_Event_Cb func,
> @@ -598,14 +598,15 @@ _eo_base_event_callback_del(Eo *obj, Eo_Base_Data *pd,
>                pd->deletions_waiting = EINA_TRUE;
>                _eo_callbacks_clear(pd);
>                eo_do(obj, eo_event_callback_call(EO_BASE_EVENT_CALLBACK_DEL, 
> (void *)arr); );
> -             return;
> +             return EINA_TRUE;
>             }
>        }
>
>      DBG("Callback of object %p with function %p and data %p not found.", 
> obj, func, user_data);
> +   return EINA_FALSE;
>   }
>
> -EOLIAN static void
> +EOLIAN static Eina_Bool
>   _eo_base_event_callback_array_priority_add(Eo *obj, Eo_Base_Data *pd,
>                             const Eo_Callback_Array_Item *array,
>                             Eo_Callback_Priority priority,
> @@ -614,19 +615,24 @@ _eo_base_event_callback_array_priority_add(Eo *obj, 
> Eo_Base_Data *pd,
>      Eo_Callback_Description *cb;
>
>      cb = calloc(1, sizeof(*cb));
> -   if (!cb) return;
> +   if (!cb || !array)
> +     {
> +        ERR("Tried adding array of callbacks with invalid values: cb: %p 
> array: %p\n", cb, array);
> +        free(cb);
> +        return EINA_FALSE;
> +     }
>      cb->func_data = (void *) user_data;
>      cb->priority = priority;
>      cb->items.item_array = array;
>      cb->func_array = EINA_TRUE;
>      _eo_callbacks_sorted_insert(pd, cb);
>
> -     {
> -        eo_do(obj, eo_event_callback_call(EO_BASE_EVENT_CALLBACK_ADD, (void 
> *)array); );
> -     }
> +   eo_do(obj, eo_event_callback_call(EO_BASE_EVENT_CALLBACK_ADD, (void 
> *)array); );
> +
> +   return EINA_TRUE;
>   }
>
> -EOLIAN static void
> +EOLIAN static Eina_Bool
>   _eo_base_event_callback_array_del(Eo *obj, Eo_Base_Data *pd,
>                    const Eo_Callback_Array_Item *array,
>                    const void *user_data)
> @@ -643,11 +649,12 @@ _eo_base_event_callback_array_del(Eo *obj, Eo_Base_Data 
> *pd,
>                _eo_callbacks_clear(pd);
>
>                eo_do(obj, eo_event_callback_call(EO_BASE_EVENT_CALLBACK_DEL, 
> (void *)array); );
> -             return;
> +             return EINA_TRUE;
>             }
>        }
>
>      DBG("Callback of object %p with function array %p and data %p not 
> found.", obj, array, user_data);
> +   return EINA_FALSE;
>   }
>
>   static Eina_Bool
> diff --git a/src/lib/evas/canvas/evas_canvas3d_object.c 
> b/src/lib/evas/canvas/evas_canvas3d_object.c
> index 3cba61c..e9604fa 100644
> --- a/src/lib/evas/canvas/evas_canvas3d_object.c
> +++ b/src/lib/evas/canvas/evas_canvas3d_object.c
> @@ -64,7 +64,7 @@ _evas_canvas3d_object_update(Eo *obj, 
> Evas_Canvas3D_Object_Data *pd)
>      memset(&pd->dirty[0], 0x00, sizeof(Eina_Bool) * EVAS_CANVAS3D_STATE_MAX);
>   }
>
> -EOLIAN static void
> +EOLIAN static Eina_Bool
>   _evas_canvas3d_object_eo_base_event_callback_priority_add(Eo *obj,
>                                                       
> Evas_Canvas3D_Object_Data *pd EINA_UNUSED,
>                                                       const 
> Eo_Event_Description *desc,
> @@ -72,18 +72,24 @@ 
> _evas_canvas3d_object_eo_base_event_callback_priority_add(Eo *obj,
>                                                       Eo_Event_Cb func,
>                                                       const void *user_data)
>   {
> -   eo_do_super(obj, MY_CLASS, eo_event_callback_priority_add(desc, priority, 
> func, user_data));
> +   Eina_Bool r = EINA_FALSE;
> +
> +   eo_do_super(obj, MY_CLASS, r = eo_event_callback_priority_add(desc, 
> priority, func, user_data));
>      eo_do(obj, evas_canvas3d_object_callback_register(desc->name, 
> user_data));
> +
> +   return r;
>   }
>
> -EOLIAN static void
> +EOLIAN static Eina_Bool
>   _evas_canvas3d_object_eo_base_event_callback_del(Eo *obj, 
> Evas_Canvas3D_Object_Data *pd EINA_UNUSED,
>                                              const Eo_Event_Description *desc,
>                                              Eo_Event_Cb func,
>                                              const void *user_data)
>   {
> -   eo_do_super(obj, MY_CLASS, eo_event_callback_del(desc, func, user_data));
> -   eo_do(obj, evas_canvas3d_object_callback_unregister(desc->name));
> +   Eina_Bool r = EINA_FALSE;
> +   eo_do_super(obj, MY_CLASS, r = eo_event_callback_del(desc, func, 
> user_data));
> +   if (r) eo_do(obj, evas_canvas3d_object_callback_unregister(desc->name));
> +   return r;
>   }
>
>   #include "canvas/evas_canvas3d_object.eo.c"
>


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to