On Sun, 07 Jun 2015 11:41:34 +0200
Cedric BAIL <[email protected]> wrote:

> Le 7 juin 2015 10:20, "Avi Levin" <[email protected]> a écrit :
> >
> > jackdanielz pushed a commit to branch master.
> >
> >
> http://git.enlightenment.org/core/efl.git/commit/?id=f9c116a48749c642eb31154a4cfb5f60a110dcba
> >
> > commit f9c116a48749c642eb31154a4cfb5f60a110dcba
> > Author: Avi Levin <[email protected]>
> > Date:   Sun Apr 26 14:49:26 2015 +0300
> >
> >     emotion: porting evas smart callbacks to eo
> 
> This one also smell very wrong ! Especially the part that remove the
> old test that should still be working.

You smell wrong (you frenchie)!

I understand your point that legacy should be tested too and not removed. Do 
you think Eo and legacy versions are needed for examples and tests, or only for 
tests?

Your Jack ;-)

> 
> > ---
> >  src/examples/emotion/emotion_basic_example.c       |  17 +++-
> >  src/examples/emotion/emotion_border_example.c      |  66
> > +++++++++---- src/examples/emotion/emotion_generic_example.c     |
> > 80
> > ++++++++++----- .../emotion/emotion_generic_subtitle_example.c
> > |  16 ++- src/examples/emotion/emotion_signals_example.c     |  87
> > ++++++++++------ src/lib/emotion/emotion_smart.c
> > |  76 ++++++--------
> > src/modules/ethumb/emotion/emotion.c               |  56
> > +++++++---- src/tests/emotion/emotion_test_main.c              | 110
> ++++++++++++++-------
> >  8 files changed, 318 insertions(+), 190 deletions(-)
> >
> > diff --git a/src/examples/emotion/emotion_basic_example.c
> b/src/examples/emotion/emotion_basic_example.c
> > index ec465bc..ebf8244 100644
> > --- a/src/examples/emotion/emotion_basic_example.c
> > +++ b/src/examples/emotion/emotion_basic_example.c
> > @@ -1,5 +1,9 @@
> >  //Compile with:
> > -// gcc -o emotion_basic_example emotion_basic_example.c `pkg-config
> --libs --cflags emotion evas ecore ecore-evas`
> > +// gcc -o emotion_basic_example emotion_basic_example.c `pkg-config
> --libs --cflags emotion evas ecore ecore-evas eo`
> > +
> > +#define EFL_BETA_API_SUPPORT
> > +#define EFL_EO_API_SUPPORT
> > +#include <Eo.h>
> >
> >  #include <Ecore.h>
> >  #include <Ecore_Evas.h>
> > @@ -10,10 +14,13 @@
> >  #define WIDTH  (320)
> >  #define HEIGHT (240)
> >
> > -static void
> > -_playback_started_cb(void *data EINA_UNUSED, Evas_Object *o
> > EINA_UNUSED,
> void *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_playback_started_cb(void *data EINA_UNUSED,
> > +      Eo *obj EINA_UNUSED, const Eo_Event_Description *desc
> > EINA_UNUSED,
> void *event_info EINA_UNUSED)
> >  {
> >      printf("Emotion object started playback.\n");
> > +
> > +    return EINA_TRUE;
> >  }
> >
> >  int
> > @@ -58,8 +65,8 @@ main(int argc, const char *argv[])
> >     em = emotion_object_add(e);
> >     emotion_object_init(em, NULL);
> >
> > -   evas_object_smart_callback_add(
> > -       em, "playback_started", _playback_started_cb, NULL);
> > +   eo_do(em, eo_event_callback_add
> > +     (EMOTION_OBJECT_EVENT_PLAYBACK_START, _playback_started_cb,
> > NULL));
> >
> >     emotion_object_file_set(em, filename);
> >
> > diff --git a/src/examples/emotion/emotion_border_example.c
> b/src/examples/emotion/emotion_border_example.c
> > index 695b507..22eca25 100644
> > --- a/src/examples/emotion/emotion_border_example.c
> > +++ b/src/examples/emotion/emotion_border_example.c
> > @@ -1,5 +1,8 @@
> >  //Compile with:
> > -// gcc -o emotion_border_example emotion_border_example.c
> > `pkg-config
> --libs --cflags emotion evas ecore ecore-evas eina`
> > +// gcc -o emotion_border_example emotion_border_example.c
> > `pkg-config
> --libs --cflags emotion evas ecore ecore-evas eina eo`
> > +
> > +#define EFL_EO_API_SUPPORT
> > +#define EFL_BETA_API_SUPPORT
> >
> >  #include <Ecore.h>
> >  #include <Ecore_Evas.h>
> > @@ -14,10 +17,13 @@
> >  static Eina_List *filenames = NULL;
> >  static Eina_List *curfile = NULL;
> >
> > -static void
> > -_playback_started_cb(void *data EINA_UNUSED, Evas_Object *o
> > EINA_UNUSED,
> void *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_playback_started_cb(void *data EINA_UNUSED,
> > +            Eo *obj EINA_UNUSED, const Eo_Event_Description *desc
> EINA_UNUSED, void *event_info EINA_UNUSED)
> >  {
> >      printf("Emotion object started playback.\n");
> > +
> > +    return EINA_TRUE;
> >  }
> >
> >  static Evas_Object *
> > @@ -27,8 +33,8 @@ _create_emotion_object(Evas *e)
> >
> >     emotion_object_init(em, "gstreamer1");
> >
> > -   evas_object_smart_callback_add(
> > -       em, "playback_started", _playback_started_cb, NULL);
> > +   eo_do(em, eo_event_callback_add(
> > +     EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb,
> > NULL));
> >
> >     return em;
> >  }
> > @@ -103,38 +109,53 @@ _on_key_down(void *data, Evas *e EINA_UNUSED,
> Evas_Object *o EINA_UNUSED, void *
> >       }
> >  }
> >
> > -static void
> > -_frame_decode_cb(void *data EINA_UNUSED, Evas_Object *o
> > EINA_UNUSED,
> void *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_frame_decode_cb(void *data EINA_UNUSED,
> > +            Eo *o EINA_UNUSED, const Eo_Event_Description *desc
> EINA_UNUSED, void *event_info EINA_UNUSED)
> >  {
> >     // fprintf(stderr, "smartcb: frame_decode\n");
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_length_change_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_length_change_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     fprintf(stderr, "smartcb: length_change: %0.3f\n",
> emotion_object_play_length_get(o));
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_position_update_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_position_update_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     fprintf(stderr, "smartcb: position_update: %0.3f\n",
> emotion_object_position_get(o));
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_progress_change_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_progress_change_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     fprintf(stderr, "smartcb: progress_change: %0.3f, %s\n",
> >            emotion_object_progress_status_get(o),
> >            emotion_object_progress_info_get(o));
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_frame_resize_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_frame_resize_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     int w, h;
> >     emotion_object_size_get(o, &w, &h);
> >     fprintf(stderr, "smartcb: frame_resize: %dx%d\n", w, h);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> >  static void /* adjust canvas' contents on resizes */
> > @@ -153,6 +174,15 @@ _canvas_resize_cb(Ecore_Evas *ee)
> >     evas_object_resize(em, w - 20, h - 20);
> >  }
> >
> > +static const Eo_Callback_Array_Item
> > emotion_object_example_callbacks[] =
> {
> > +       { EMOTION_OBJECT_EVENT_FRAME_DECODE, _frame_decode_cb },
> > +       { EMOTION_OBJECT_EVENT_LENGTH_CHANGE, _length_change_cb },
> > +       { EMOTION_OBJECT_EVENT_POSITION_UPDATE,
> > _position_update_cb },
> > +       { EMOTION_OBJECT_EVENT_PROGRESS_CHANGE,
> > _progress_change_cb },
> > +       { EMOTION_OBJECT_EVENT_FRAME_RESIZE, _frame_resize_cb },
> > +       { NULL, NULL }
> > +};
> > +
> >  int
> >  main(int argc, const char *argv[])
> >  {
> > @@ -211,11 +241,7 @@ main(int argc, const char *argv[])
> >
> >     ecore_evas_data_set(ee, "emotion", em);
> >
> > -   evas_object_smart_callback_add(em, "frame_decode",
> > _frame_decode_cb,
> NULL);
> > -   evas_object_smart_callback_add(em, "length_change",
> _length_change_cb, NULL);
> > -   evas_object_smart_callback_add(em, "position_update",
> _position_update_cb, NULL);
> > -   evas_object_smart_callback_add(em, "progress_change",
> _progress_change_cb, NULL);
> > -   evas_object_smart_callback_add(em, "frame_resize",
> > _frame_resize_cb,
> NULL);
> > +   eo_do(em,
> eo_event_callback_array_add(emotion_object_example_callbacks, NULL));
> >
> >     evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN,
> _on_key_down, em);
> >     evas_object_focus_set(bg, EINA_TRUE);
> > diff --git a/src/examples/emotion/emotion_generic_example.c
> b/src/examples/emotion/emotion_generic_example.c
> > index 9320230..5bd869c 100644
> > --- a/src/examples/emotion/emotion_generic_example.c
> > +++ b/src/examples/emotion/emotion_generic_example.c
> > @@ -1,5 +1,8 @@
> >  //Compile with:
> > -// gcc -o emotion_generic_example emotion_generic_example.c
> > `pkg-config
> --libs --cflags emotion evas ecore ecore-evas eina`
> > +// gcc -o emotion_generic_example emotion_generic_example.c
> > `pkg-config
> --libs --cflags emotion evas ecore ecore-evas eina eo`
> > +
> > +#define EFL_EO_API_SUPPORT
> > +#define EFL_BETA_API_SUPPORT
> >
> >  #include <Ecore.h>
> >  #include <Ecore_Evas.h>
> > @@ -15,18 +18,24 @@
> >  static Eina_List *filenames = NULL;
> >  static Eina_List *curfile = NULL;
> >
> > -static void
> > -_playback_started_cb(void *data EINA_UNUSED, Evas_Object *o
> > EINA_UNUSED,
> void *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_playback_started_cb(void *data EINA_UNUSED,
> > +            Eo *o EINA_UNUSED, const Eo_Event_Description *desc
> EINA_UNUSED, void *event_info EINA_UNUSED)
> >  {
> >      printf("Emotion object started playback.\n");
> > +
> > +    return EINA_TRUE;
> >  }
> >
> > -static void
> > -_playback_stopped_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_playback_stopped_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     printf("Emotion playback stopped.\n");
> >     emotion_object_play_set(o, EINA_FALSE);
> >     emotion_object_position_set(o, 0);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> >  static Evas_Object *
> > @@ -36,10 +45,10 @@ _create_emotion_object(Evas *e)
> >
> >     emotion_object_init(em, "generic");
> >
> > -   evas_object_smart_callback_add(
> > -       em, "playback_started", _playback_started_cb, NULL);
> > -   evas_object_smart_callback_add(
> > -       em, "playback_finished", _playback_stopped_cb, NULL);
> > +   eo_do(em, eo_event_callback_add
> > +     (EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb,
> NULL));
> > +   eo_do(em, eo_event_callback_add
> > +     (EMOTION_OBJECT_EVENT_PLAYBACK_FINISHED, _playback_stopped_cb,
> NULL));
> >
> >     return em;
> >  }
> > @@ -123,40 +132,63 @@ _on_key_down(void *data, Evas *e EINA_UNUSED,
> Evas_Object *o EINA_UNUSED, void *
> >       }
> >  }
> >
> > -static void
> > -_frame_decode_cb(void *data EINA_UNUSED, Evas_Object *o
> > EINA_UNUSED,
> void *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_frame_decode_cb(void *data EINA_UNUSED,
> > +            Eo *o EINA_UNUSED, const Eo_Event_Description *desc
> EINA_UNUSED, void *event_info EINA_UNUSED)
> >  {
> >     // fprintf(stderr, "smartcb: frame_decode\n");
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_length_change_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_length_change_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     fprintf(stderr, "smartcb: length_change: %0.3f\n",
> emotion_object_play_length_get(o));
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_position_update_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_position_update_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     fprintf(stderr, "smartcb: position_update: %0.3f\n",
> emotion_object_position_get(o));
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_progress_change_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_progress_change_cb(void *data EINA_UNUSED,
> > +            Eo *obj, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     fprintf(stderr, "smartcb: progress_change: %0.3f, %s\n",
> > -          emotion_object_progress_status_get(o),
> > -          emotion_object_progress_info_get(o));
> > +          emotion_object_progress_status_get(obj),
> > +          emotion_object_progress_info_get(obj));
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_frame_resize_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_frame_resize_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     int w, h;
> >     emotion_object_size_get(o, &w, &h);
> >     fprintf(stderr, "smartcb: frame_resize: %dx%d\n", w, h);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > +static const Eo_Callback_Array_Item
> > emotion_object_example_callbacks[] =
> {
> > +       { EMOTION_OBJECT_EVENT_FRAME_DECODE, _frame_decode_cb },
> > +       { EMOTION_OBJECT_EVENT_LENGTH_CHANGE, _length_change_cb },
> > +       { EMOTION_OBJECT_EVENT_POSITION_UPDATE,
> > _position_update_cb },
> > +       { EMOTION_OBJECT_EVENT_PROGRESS_CHANGE,
> > _progress_change_cb },
> > +       { NULL, NULL }
> > +};
> > +
> >  int
> >  main(int argc, const char *argv[])
> >  {
> > @@ -206,11 +238,7 @@ main(int argc, const char *argv[])
> >     evas_object_resize(em, WIDTH, HEIGHT);
> >     evas_object_show(em);
> >
> > -   evas_object_smart_callback_add(em, "frame_decode",
> > _frame_decode_cb,
> NULL);
> > -   evas_object_smart_callback_add(em, "length_change",
> _length_change_cb, NULL);
> > -   evas_object_smart_callback_add(em, "position_update",
> _position_update_cb, NULL);
> > -   evas_object_smart_callback_add(em, "progress_change",
> _progress_change_cb, NULL);
> > -   evas_object_smart_callback_add(em, "frame_resize",
> > _frame_resize_cb,
> NULL);
> > +   eo_do(em,
> eo_event_callback_array_add(emotion_object_example_callbacks, NULL));
> >
> >     evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN,
> _on_key_down, em);
> >     evas_object_focus_set(bg, EINA_TRUE);
> > diff --git a/src/examples/emotion/emotion_generic_subtitle_example.c
> b/src/examples/emotion/emotion_generic_subtitle_example.c
> > index b5fb5a8..03b8aab 100644
> > --- a/src/examples/emotion/emotion_generic_subtitle_example.c
> > +++ b/src/examples/emotion/emotion_generic_subtitle_example.c
> > @@ -1,5 +1,8 @@
> >  //Compile with:
> > -// gcc -o emotion_generic_subtitle_example
> emotion_generic_subtitle_example.c `pkg-config --libs --cflags
> emotion evas ecore ecore-evas`
> > +// gcc -o emotion_generic_subtitle_example
> emotion_generic_subtitle_example.c `pkg-config --libs --cflags
> emotion evas ecore ecore-evas eo`
> > +
> > +#define EFL_EO_API_SUPPORT
> > +#define EFL_BETA_API_SUPPORT
> >
> >  #include <Ecore.h>
> >  #include <Ecore_Evas.h>
> > @@ -10,10 +13,13 @@
> >  #define WIDTH  (320)
> >  #define HEIGHT (240)
> >
> > -static void
> > -_playback_started_cb(void *data EINA_UNUSED, Evas_Object *o
> > EINA_UNUSED,
> void *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_playback_started_cb(void *data EINA_UNUSED,
> > +            Eo *o EINA_UNUSED, const Eo_Event_Description *desc
> EINA_UNUSED, void *event_info EINA_UNUSED)
> >  {
> >      printf("Emotion object started playback.\n");
> > +
> > +    return EINA_TRUE;
> >  }
> >
> >  static void
> > @@ -74,8 +80,8 @@ main(int argc, const char *argv[])
> >     if (subtitle_filename)
> >       emotion_object_video_subtitle_file_set(em, subtitle_filename);
> >
> > -   evas_object_smart_callback_add(
> > -       em, "playback_started", _playback_started_cb, NULL);
> > +   eo_do(em, eo_event_callback_add
> > +     (EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb,
> NULL));
> >
> >     emotion_object_file_set(em, filename);
> >
> > diff --git a/src/examples/emotion/emotion_signals_example.c
> b/src/examples/emotion/emotion_signals_example.c
> > index dd83ac2..3c56c40 100644
> > --- a/src/examples/emotion/emotion_signals_example.c
> > +++ b/src/examples/emotion/emotion_signals_example.c
> > @@ -1,5 +1,8 @@
> >  //Compile with:
> > -// gcc -o emotion_signals_example emotion_signals_example.c
> > `pkg-config
> --libs --cflags emotion evas ecore ecore-evas`
> > +// gcc -o emotion_signals_example emotion_signals_example.c
> > `pkg-config
> --libs --cflags emotion evas ecore ecore-evas eo`
> > +
> > +#define EFL_EO_API_SUPPORT
> > +#define EFL_BETA_API_SUPPORT
> >
> >  #include <Ecore.h>
> >  #include <Ecore_Evas.h>
> > @@ -30,74 +33,96 @@ _display_info(Evas_Object *o)
> >     printf("\n");
> >  }
> >
> > -static void
> > -_playback_started_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_playback_started_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     printf(">>> Emotion object started playback.\n");
> >     _display_info(o);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_playback_finished_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_playback_finished_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     printf(">>> Emotion object finished playback.\n");
> >     _display_info(o);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_open_done_cb(void *data EINA_UNUSED, Evas_Object *o, void
> > *event_info
> EINA_UNUSED)
> > +static Eina_Bool
> > +_open_done_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     printf(">>> Emotion object open done.\n");
> >     _display_info(o);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_position_update_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_position_update_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     printf(">>> Emotion object first position update.\n");
> > -   evas_object_smart_callback_del(o, "position_update",
> _position_update_cb);
> > +   eo_do(o,
> > eo_event_callback_del(EMOTION_OBJECT_EVENT_POSITION_UPDATE,
> > +             _position_update_cb, NULL));
> >     _display_info(o);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_frame_decode_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_frame_decode_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     printf(">>> Emotion object first frame decode.\n");
> > -   evas_object_smart_callback_del(o, "frame_decode",
> > _frame_decode_cb);
> > +   eo_do(o,
> > eo_event_callback_del(EMOTION_OBJECT_EVENT_FRAME_DECODE,
> > +            _frame_decode_cb, NULL));
> >     _display_info(o);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_decode_stop_cb(void *data EINA_UNUSED, Evas_Object *o, void
> > *event_info
> EINA_UNUSED)
> > +static Eina_Bool
> > +_decode_stop_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     printf(">>> Emotion object decode stop.\n");
> >     _display_info(o);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_frame_resize_cb(void *data EINA_UNUSED, Evas_Object *o, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_frame_resize_cb(void *data EINA_UNUSED,
> > +            Eo *o, const Eo_Event_Description *desc EINA_UNUSED,
> > void
> *event_info EINA_UNUSED)
> >  {
> >     printf(">>> Emotion object frame resize.\n");
> >     _display_info(o);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > +static const Eo_Callback_Array_Item
> > emotion_object_example_callbacks[] =
> {
> > +       { EMOTION_OBJECT_EVENT_PLAYBACK_STARTED,
> > _playback_started_cb },
> > +       { EMOTION_OBJECT_EVENT_PLAYBACK_FINISHED,
> > _playback_finished_cb },
> > +       { EMOTION_OBJECT_EVENT_OPEN_DONE, _open_done_cb },
> > +       { EMOTION_OBJECT_EVENT_POSITION_UPDATE,
> > _position_update_cb },
> > +       { EMOTION_OBJECT_EVENT_FRAME_DECODE, _frame_decode_cb },
> > +       { EMOTION_OBJECT_EVENT_DECODE_STOP, _decode_stop_cb },
> > +       { EMOTION_OBJECT_EVENT_FRAME_RESIZE, _frame_resize_cb },
> > +       { NULL, NULL }
> > +};
> > +
> >  static void
> >  _setup_emotion_callbacks(Evas_Object *o)
> >  {
> > -   evas_object_smart_callback_add(
> > -      o, "playback_started", _playback_started_cb, NULL);
> > -   evas_object_smart_callback_add(
> > -      o, "playback_finished", _playback_finished_cb, NULL);
> > -   evas_object_smart_callback_add(
> > -      o, "open_done", _open_done_cb, NULL);
> > -   evas_object_smart_callback_add(
> > -      o, "position_update", _position_update_cb, NULL);
> > -   evas_object_smart_callback_add(
> > -      o, "frame_decode", _frame_decode_cb, NULL);
> > -   evas_object_smart_callback_add(
> > -      o, "decode_stop", _decode_stop_cb, NULL);
> > -   evas_object_smart_callback_add(
> > -      o, "frame_resize", _frame_resize_cb, NULL);
> > +   eo_do(o, eo_event_callback_add
> > +     (EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _playback_started_cb,
> NULL));
> >  }
> >
> >  int
> > diff --git a/src/lib/emotion/emotion_smart.c
> b/src/lib/emotion/emotion_smart.c
> > index fbbbb49..ea1130e 100644
> > --- a/src/lib/emotion/emotion_smart.c
> > +++ b/src/lib/emotion/emotion_smart.c
> > @@ -123,29 +123,6 @@ static void _mouse_down(void *data, Evas *ev,
> Evas_Object *obj, void *event_info
> >  static void _pos_set_job(void *data);
> >  static void _pixels_get(void *data, Evas_Object *obj);
> >
> > -/**********************************/
> > -/* Globals for the E Video Object */
> > -/**********************************/
> > -static const char SIG_FRAME_DECODE[] = "frame_decode";
> > -static const char SIG_POSITION_UPDATE[] = "position_update";
> > -static const char SIG_LENGTH_CHANGE[] = "length_change";
> > -static const char SIG_FRAME_RESIZE[] = "frame_resize";
> > -static const char SIG_DECODE_STOP[] = "decode_stop";
> > -static const char SIG_PLAYBACK_STARTED[] = "playback_started";
> > -static const char SIG_PLAYBACK_FINISHED[] = "playback_finished";
> > -static const char SIG_AUDIO_LEVEL_CHANGE[] = "audio_level_change";
> > -static const char SIG_CHANNELS_CHANGE[] = "channels_change";
> > -static const char SIG_TITLE_CHANGE[] = "title_change";
> > -static const char SIG_PROGRESS_CHANGE[] = "progress_change";
> > -static const char SIG_REF_CHANGE[] = "ref_change";
> > -static const char SIG_BUTTON_NUM_CHANGE[] = "button_num_change";
> > -static const char SIG_BUTTON_CHANGE[] = "button_change";
> > -static const char SIG_OPEN_DONE[] = "open_done";
> > -static const char SIG_POSITION_SAVE_SUCCEED[] =
> > "position_save,succeed"; -static const char
> > SIG_POSITION_SAVE_FAILED[] = "position_save,failed"; -static const
> > char SIG_POSITION_LOAD_SUCCEED[] = "position_load,succeed"; -static
> > const char SIG_POSITION_LOAD_FAILED[] = "position_load,failed"; -
> >  static void
> >  _engine_init(Eo *obj, Emotion_Object_Data *sd)
> >  {
> > @@ -1341,7 +1318,8 @@ _eio_load_xattr_done(void *data, Eio_File
> > *handler,
> double xattr_double)
> >     Emotion_Object_Data *sd = data;
> >
> >     emotion_object_position_set(evas_object_smart_parent_get(sd->obj),
> xattr_double);
> > -
>  evas_object_smart_callback_call(evas_object_smart_parent_get(sd->obj),
> SIG_POSITION_LOAD_SUCCEED, NULL);
> > +   eo_do(evas_object_smart_parent_get(sd->obj),
> > +
>  eo_event_callback_call(EMOTION_OBJECT_EVENT_POSITION_LOAD_SUCCEED,
> NULL));
> >     _eio_load_xattr_cleanup(sd, handler);
> >  }
> >
> > @@ -1350,7 +1328,8 @@ _eio_load_xattr_error(void *data, Eio_File
> *handler, int err EINA_UNUSED)
> >  {
> >     Emotion_Object_Data *sd = data;
> >
> > -
>  evas_object_smart_callback_call(evas_object_smart_parent_get(sd->obj),
> SIG_POSITION_LOAD_FAILED, NULL);
> > +   eo_do(evas_object_smart_parent_get(sd->obj),
> > +
>  eo_event_callback_call(EMOTION_OBJECT_EVENT_POSITION_LOAD_FAILED,
> NULL));
> >     _eio_load_xattr_cleanup(sd, handler);
> >  }
> >  #endif
> > @@ -1385,10 +1364,10 @@
> > emotion_object_last_position_load(Evas_Object
> *obj)
> >     if (eina_xattr_double_get(tmp, "user.e.time_seek", &xattr))
> >       {
> >          emotion_object_position_set(obj, xattr);
> > -        evas_object_smart_callback_call(obj,
> > SIG_POSITION_LOAD_SUCCEED,
> NULL);
> > +        eo_do(obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_POSITION_LOAD_SUCCEED,
> NULL));
> >       }
> >     else
> > -     evas_object_smart_callback_call(obj, SIG_POSITION_LOAD_FAILED,
> NULL);
> > +     eo_do(obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_POSITION_LOAD_FAILED,
> NULL));
> >  #endif
> >  }
> >
> > @@ -1411,7 +1390,7 @@ _eio_save_xattr_done(void *data, Eio_File
> > *handler) {
> >     Emotion_Object_Data *sd = data;
> >
> > -   evas_object_smart_callback_call(sd->obj,
> > SIG_POSITION_SAVE_SUCCEED,
> NULL);
> > +   eo_do(sd->obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_POSITION_SAVE_SUCCEED,
> NULL));
> >     _eio_save_xattr_cleanup(sd, handler);
> >  }
> >
> > @@ -1420,7 +1399,7 @@ _eio_save_xattr_error(void *data, Eio_File
> *handler, int err EINA_UNUSED)
> >  {
> >     Emotion_Object_Data *sd = data;
> >
> > -   evas_object_smart_callback_call(sd->obj,
> > SIG_POSITION_SAVE_FAILED,
> NULL);
> > +   eo_do(sd->obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_POSITION_SAVE_FAILED,
> NULL));
> >     _eio_save_xattr_cleanup(sd, handler);
> >  }
> >  #endif
> > @@ -1450,9 +1429,10 @@
> > emotion_object_last_position_save(Evas_Object *obj) sd);
> >  #else
> >     if (eina_xattr_double_set(tmp, "user.e.time_seek",
> emotion_object_position_get(obj), 0))
> > -     evas_object_smart_callback_call(obj,
> > SIG_POSITION_SAVE_SUCCEED,
> NULL);
> > +     eo_do(obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_POSITION_SAVE_SUCCEED,
> NULL));
> >     else
> > -     evas_object_smart_callback_call(obj, SIG_POSITION_SAVE_FAILED,
> NULL);
> > +     eo_do(obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_POSITION_SAVE_FAILED,
> NULL));
> > +
> >  #endif
> >  }
> >
> > @@ -1513,7 +1493,7 @@ _emotion_frame_anim(void *data)
> >     _emotion_video_pos_update(obj,
> >
> emotion_engine_instance_pos_get(sd->engine_instance),
> >
> emotion_engine_instance_len_get(sd->engine_instance));
> > -   evas_object_smart_callback_call(obj, SIG_FRAME_DECODE, NULL);
> > +   eo_do(obj,
> > eo_event_callback_call(EMOTION_OBJECT_EVENT_FRAME_DECODE,
> NULL));
> >     return EINA_FALSE;
> >  }
> >
> > @@ -1537,8 +1517,10 @@ _emotion_video_pos_update(Evas_Object *obj,
> > double
> pos, double len)
> >     if (len != sd->len) nlen = 1;
> >     sd->pos = pos;
> >     sd->len = len;
> > -   if (npos) evas_object_smart_callback_call(obj,
> > SIG_POSITION_UPDATE,
> NULL);
> > -   if (nlen) evas_object_smart_callback_call(obj,
> > SIG_LENGTH_CHANGE,
> NULL);
> > +   if (npos) eo_do(obj,
> > +
> > eo_event_callback_call(EMOTION_OBJECT_EVENT_POSITION_UPDATE,
> NULL));
> > +   if (nlen) eo_do(obj,
> > +         eo_event_callback_call(EMOTION_OBJECT_EVENT_LENGTH_CHANGE,
> NULL));
> >  }
> >
> >  EAPI void
> > @@ -1567,7 +1549,7 @@ _emotion_frame_resize(Evas_Object *obj, int
> > w, int
> h, double ratio)
> >     if (changed)
> >       {
> >          evas_object_size_hint_request_set(obj, w, h);
> > -        evas_object_smart_callback_call(obj, SIG_FRAME_RESIZE,
> > NULL);
> > +        eo_do(obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_FRAME_RESIZE, NULL));
> >          evas_object_geometry_get(obj, NULL, NULL, &w, &h);
> >          _emotion_object_aspect_border_apply(obj, sd, w, h);
> >       }
> > @@ -1591,7 +1573,7 @@ _emotion_decode_stop(Evas_Object *obj)
> >     if (sd->play)
> >       {
> >          sd->play = 0;
> > -        evas_object_smart_callback_call(obj, SIG_DECODE_STOP,
> > NULL);
> > +        eo_do(obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_DECODE_STOP, NULL));
> >       }
> >  }
> >
> > @@ -1607,25 +1589,26 @@ _emotion_open_done(Evas_Object *obj)
> >       emotion_object_position_set(obj, sd->remember_jump);
> >     if (sd->remember_play != sd->play)
> >       emotion_object_play_set(obj, sd->remember_play);
> > -   evas_object_smart_callback_call(obj, SIG_OPEN_DONE, NULL);
> > +   eo_do(obj,
> > eo_event_callback_call(EMOTION_OBJECT_EVENT_OPEN_DONE,
> NULL));
> > +
> >  }
> >
> >  EAPI void
> >  _emotion_playback_started(Evas_Object *obj)
> >  {
> > -   evas_object_smart_callback_call(obj, SIG_PLAYBACK_STARTED,
> > NULL);
> > +   eo_do(obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, NULL));
> >  }
> >
> >  EAPI void
> >  _emotion_playback_finished(Evas_Object *obj)
> >  {
> > -   evas_object_smart_callback_call(obj, SIG_PLAYBACK_FINISHED,
> > NULL);
> > +   eo_do(obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_PLAYBACK_FINISHED, NULL));
> >  }
> >
> >  EAPI void
> >  _emotion_audio_level_change(Evas_Object *obj)
> >  {
> > -   evas_object_smart_callback_call(obj, SIG_AUDIO_LEVEL_CHANGE,
> > NULL);
> > +   eo_do(obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_AUDIO_LEVEL_CHANGE,
> NULL));
> >  }
> >
> >  EAPI void
> > @@ -1634,7 +1617,7 @@ _emotion_channels_change(Evas_Object *obj)
> >     Emotion_Object_Data *sd;
> >
> >     E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME);
> > -   evas_object_smart_callback_call(obj, SIG_CHANNELS_CHANGE, NULL);
> > +   eo_do(obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_CHANNELS_CHANGE, NULL));
> >  }
> >
> >  EAPI void
> > @@ -1644,7 +1627,8 @@ _emotion_title_set(Evas_Object *obj, char
> > *title)
> >
> >     E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME);
> >     eina_stringshare_replace(&sd->title, title);
> > -   evas_object_smart_callback_call(obj, SIG_TITLE_CHANGE, NULL);
> > +   eo_do(obj,
> > eo_event_callback_call(EMOTION_OBJECT_EVENT_TITLE_CHANGE,
> NULL));
> > +
> >  }
> >
> >  EAPI void
> > @@ -1655,7 +1639,7 @@ _emotion_progress_set(Evas_Object *obj, char
> > *info,
> double st)
> >     E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME);
> >     eina_stringshare_replace(&sd->progress.info, info);
> >     sd->progress.stat = st;
> > -   evas_object_smart_callback_call(obj, SIG_PROGRESS_CHANGE, NULL);
> > +   eo_do(obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_PROGRESS_CHANGE, NULL));
> >  }
> >
> >  EAPI void
> > @@ -1666,7 +1650,7 @@ _emotion_file_ref_set(Evas_Object *obj, const
> > char
> *file, int num)
> >     E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME);
> >     eina_stringshare_replace(&sd->ref.file, file);
> >     sd->ref.num = num;
> > -   evas_object_smart_callback_call(obj, SIG_REF_CHANGE, NULL);
> > +   eo_do(obj,
> > eo_event_callback_call(EMOTION_OBJECT_EVENT_REF_CHANGE,
> NULL));
> >  }
> >
> >  EAPI void
> > @@ -1676,7 +1660,7 @@ _emotion_spu_button_num_set(Evas_Object *obj,
> > int
> num)
> >
> >     E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME);
> >     sd->spu.button_num = num;
> > -   evas_object_smart_callback_call(obj, SIG_BUTTON_NUM_CHANGE,
> > NULL);
> > +   eo_do(obj,
> eo_event_callback_call(EMOTION_OBJECT_EVENT_BUTTON_NUM_CHANGE, NULL));
> >  }
> >
> >  EAPI void
> > @@ -1686,7 +1670,7 @@ _emotion_spu_button_set(Evas_Object *obj, int
> button)
> >
> >     E_SMART_OBJ_GET(sd, obj, E_OBJ_NAME);
> >     sd->spu.button = button;
> > -   evas_object_smart_callback_call(obj, SIG_BUTTON_CHANGE, NULL);
> > +   eo_do(obj,
> > eo_event_callback_call(EMOTION_OBJECT_EVENT_BUTTON_CHANGE,
> NULL));
> >  }
> >
> >  EAPI void
> > diff --git a/src/modules/ethumb/emotion/emotion.c
> b/src/modules/ethumb/emotion/emotion.c
> > index 4443712..6134406 100644
> > --- a/src/modules/ethumb/emotion/emotion.c
> > +++ b/src/modules/ethumb/emotion/emotion.c
> > @@ -1,5 +1,8 @@
> >  #ifdef HAVE_CONFIG_H
> >  #include "config.h"
> > +#else
> > +#define EFL_EO_API_SUPPORT
> > +#define EFL_BETA_API_SUPPORT
> >  #endif
> >
> >  #include "Ethumb.h"
> > @@ -9,6 +12,7 @@
> >
> >  #include <stdio.h>
> >  #include <stdlib.h>
> > +#include <Eo.h>
> >  #include <Eina.h>
> >  #include <Eet.h>
> >  #include <Ecore_File.h>
> > @@ -67,8 +71,9 @@ _resize_movie(struct _emotion_plugin *_plugin)
> >     emotion_object_audio_mute_set(_plugin->video, 1);
> >  }
> >
> > -static void
> > -_frame_decode_cb(void *data, Evas_Object *o EINA_UNUSED, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_frame_decode_cb(void *data,
> > +      Eo *obj EINA_UNUSED, const Eo_Event_Description *desc
> > EINA_UNUSED,
> void *event_info EINA_UNUSED)
> >  {
> >     struct _emotion_plugin *_plugin = data;
> >
> > @@ -76,16 +81,22 @@ _frame_decode_cb(void *data, Evas_Object *o
> EINA_UNUSED, void *event_info EINA_U
> >       _frame_grab(data);
> >     else
> >       _frame_grab_single(data);
> > -}
> >
> > -static void
> > -_frame_resized_cb(void *data, Evas_Object *o EINA_UNUSED, void
> *event_info EINA_UNUSED)
> > +   return EINA_TRUE;
> > + }
> > +
> > +static Eina_Bool
> > +_frame_resized_cb(void *data,
> > +      Eo *obj EINA_UNUSED, const Eo_Event_Description *desc
> > EINA_UNUSED,
> void *event_info EINA_UNUSED)
> >  {
> >     _resize_movie(data);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -_video_stopped_cb(void *data, Evas_Object *o EINA_UNUSED, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +_video_stopped_cb(void *data,
> > +      Eo *obj EINA_UNUSED, const Eo_Event_Description *desc
> > EINA_UNUSED,
> void *event_info EINA_UNUSED)
> >  {
> >     struct _emotion_plugin *_plugin = data;
> >
> > @@ -94,6 +105,8 @@ _video_stopped_cb(void *data, Evas_Object *o
> EINA_UNUSED, void *event_info EINA_
> >     _plugin->ptotal = 0;
> >     _plugin->first = EINA_FALSE;
> >     _plugin->total_time = _plugin->tmp_time;
> > +
> > +   return EINA_TRUE;
> >  }
> >
> >  static void
> > @@ -194,12 +207,12 @@ _finish_thumb_generation(struct
> > _emotion_plugin
> *_plugin, int success)
> >  {
> >     int r = 0;
> >
> > -   evas_object_smart_callback_del(_plugin->video, "frame_resize",
> > -                                  _frame_resized_cb);
> > -   evas_object_smart_callback_del(_plugin->video, "frame_decode",
> > -                                  _frame_decode_cb);
> > -   evas_object_smart_callback_del(_plugin->video, "decode_stop",
> > -                                  _video_stopped_cb);
> > +   eo_do(_plugin->video, eo_event_callback_del(
> > +           EMOTION_OBJECT_EVENT_FRAME_RESIZE,  _frame_resized_cb,
> _plugin));
> > +   eo_do(_plugin->video, eo_event_callback_del(
> > +           EMOTION_OBJECT_EVENT_FRAME_DECODE, _frame_decode_cb,
> _plugin));
> > +   eo_do(_plugin->video, eo_event_callback_del(
> > +           EMOTION_OBJECT_EVENT_DECODE_STOP, _video_stopped_cb,
> _plugin));
> >
> >     emotion_object_play_set(_plugin->video, 0);
> >
> > @@ -243,8 +256,9 @@ _frame_grab_single(void *data)
> >
> >     ethumb_image_save(e);
> >
> > -   evas_object_smart_callback_del(_plugin->video, "frame_resize",
> > -                                 _frame_resized_cb);
> > +   eo_do(_plugin->video, eo_event_callback_del(
> > +           EMOTION_OBJECT_EVENT_FRAME_RESIZE,  _frame_resized_cb,
> _plugin));
> > +
> >     emotion_object_play_set(_plugin->video, 0);
> >     evas_object_del(_plugin->video);
> >     free(_plugin);
> > @@ -383,12 +397,12 @@ _thumb_generate(Ethumb *e)
> >     _plugin->pcount = 1;
> >
> >     _resize_movie(_plugin);
> > -   evas_object_smart_callback_add(o, "frame_decode",
> > -                                 _frame_decode_cb, _plugin);
> > -   evas_object_smart_callback_add(o, "frame_resize",
> > -                                 _frame_resized_cb, _plugin);
> > -   evas_object_smart_callback_add(o, "decode_stop",
> > -                                 _video_stopped_cb, _plugin);
> > +   eo_do(o, eo_event_callback_add
> > +     (EMOTION_OBJECT_EVENT_FRAME_DECODE, _frame_decode_cb,
> > _plugin));
> > +   eo_do(o, eo_event_callback_add
> > +     (EMOTION_OBJECT_EVENT_FRAME_RESIZE,_frame_resized_cb,
> > _plugin));
> > +   eo_do(o, eo_event_callback_add
> > +     (EMOTION_OBJECT_EVENT_DECODE_STOP, _video_stopped_cb,
> > _plugin));
> >
> >     if (f == ETHUMB_THUMB_EET)
> >       {
> > diff --git a/src/tests/emotion/emotion_test_main.c
> b/src/tests/emotion/emotion_test_main.c
> > index 24ab7db..3d7d4a9 100644
> > --- a/src/tests/emotion/emotion_test_main.c
> > +++ b/src/tests/emotion/emotion_test_main.c
> > @@ -1,7 +1,11 @@
> >  #ifdef HAVE_CONFIG_H
> > -# include "config.h"
> > +#include "config.h"
> > +#else
> > +#define EFL_EO_API_SUPPORT
> > +#define EFL_BETA_API_SUPPORT
> >  #endif
> >
> > +#include <Eo.h>
> >  #include <stdlib.h>
> >  #include <stdio.h>
> >  #include <string.h>
> > @@ -325,8 +329,9 @@ video_obj_time_changed(Evas_Object *obj,
> > Evas_Object
> *edje)
> >     edje_object_part_text_set(edje, "video_progress_txt", buf);
> >  }
> >
> > -static void
> > -video_obj_frame_decode_cb(void *data, Evas_Object *obj, void
> > *event_info
> EINA_UNUSED)
> > +static Eina_Bool
> > +video_obj_frame_decode_cb(void *data,
> > +      Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void
> *event_info EINA_UNUSED)
> >  {
> >     video_obj_time_changed(obj, data);
> >
> > @@ -338,10 +343,12 @@ video_obj_frame_decode_cb(void *data,
> > Evas_Object
> *obj, void *event_info EINA_UN
> >          printf("FPS: %3.3f\n", 1.0 / (t - pt));
> >          pt = t;
> >       }
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -video_obj_frame_resize_cb(void *data, Evas_Object *obj, void
> > *event_info
> EINA_UNUSED)
> > +static Eina_Bool
> > +video_obj_frame_resize_cb(void *data,
> > +      Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void
> *event_info EINA_UNUSED)
> >  {
> >     Evas_Object *oe;
> >     int iw, ih;
> > @@ -359,24 +366,33 @@ video_obj_frame_resize_cb(void *data,
> > Evas_Object
> *obj, void *event_info EINA_UN
> >     evas_object_resize(oe, w, h);
> >     evas_object_size_hint_min_set(obj, 0, 0);
> >     edje_object_part_swallow(oe, "video_swallow", obj);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -video_obj_length_change_cb(void *data, Evas_Object *obj, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +video_obj_length_change_cb(void *data,
> > +      Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void
> *event_info EINA_UNUSED)
> >  {
> >     printf("len change!\n");
> >     video_obj_time_changed(obj, data);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -video_obj_position_update_cb(void *data, Evas_Object *obj, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +video_obj_position_update_cb(void *data,
> > +      Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void
> *event_info EINA_UNUSED)
> >  {
> >     printf("pos up!\n");
> >     video_obj_time_changed(obj, data);
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -video_obj_stopped_cb(void *data EINA_UNUSED, Evas_Object *obj, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +video_obj_stopped_cb(void *data EINA_UNUSED,
> > +      Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void
> *event_info EINA_UNUSED)
> >  {
> >     printf("video stopped!!!\n");
> >     if (loop)
> > @@ -384,53 +400,72 @@ video_obj_stopped_cb(void *data EINA_UNUSED,
> Evas_Object *obj, void *event_info
> >          emotion_object_position_set(obj, 0.0);
> >          emotion_object_play_set(obj, 1);
> >       }
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -video_obj_channels_cb(void *data EINA_UNUSED, Evas_Object *obj,
> > void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +video_obj_channels_cb(void *data EINA_UNUSED,
> > +      Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void
> *event_info EINA_UNUSED)
> >  {
> >     printf("channels changed: [AUD %i][VID %i][SPU %i]\n",
> >            emotion_object_audio_channel_count(obj),
> >            emotion_object_video_channel_count(obj),
> >            emotion_object_spu_channel_count(obj));
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -video_obj_title_cb(void *data EINA_UNUSED, Evas_Object *obj, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > + video_obj_title_cb(void *data EINA_UNUSED,
> > +      Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void
> *event_info EINA_UNUSED)
> >  {
> >     printf("video title to: \"%s\"\n",
> > emotion_object_title_get(obj)); +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -video_obj_progress_cb(void *data EINA_UNUSED, Evas_Object *obj,
> > void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +video_obj_progress_cb(void *data EINA_UNUSED,
> > +      Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void
> *event_info EINA_UNUSED)
> >  {
> >     printf("progress: \"%s\" %3.3f\n",
> >            emotion_object_progress_info_get(obj),
> >            emotion_object_progress_status_get(obj));
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -video_obj_ref_cb(void *data EINA_UNUSED, Evas_Object *obj, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +video_obj_ref_cb(void *data EINA_UNUSED,
> > +      Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void
> *event_info EINA_UNUSED)
> >  {
> >     printf("video ref to: \"%s\" %i\n",
> >            emotion_object_ref_file_get(obj),
> >            emotion_object_ref_num_get(obj));
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -video_obj_button_num_cb(void *data EINA_UNUSED, Evas_Object *obj,
> > void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +video_obj_button_num_cb(void *data EINA_UNUSED,
> > +      Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void
> *event_info EINA_UNUSED)
> >  {
> >     printf("video spu buttons to: %i\n",
> >            emotion_object_spu_button_count_get(obj));
> > +
> > +   return EINA_TRUE;
> >  }
> >
> > -static void
> > -video_obj_button_cb(void *data EINA_UNUSED, Evas_Object *obj, void
> *event_info EINA_UNUSED)
> > +static Eina_Bool
> > +video_obj_button_cb(void *data EINA_UNUSED,
> > +      Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void
> *event_info EINA_UNUSED)
> >  {
> >     printf("video selected spu button: %i\n",
> >            emotion_object_spu_button_get(obj));
> > -}
> >
> > +   return EINA_TRUE;
> > +}
> >
> >  static void
> >  video_obj_signal_play_cb(void *data, Evas_Object *o, const char
> *emission EINA_UNUSED, const char *source EINA_UNUSED)
> > @@ -576,6 +611,20 @@ video_obj_signal_frame_move_cb(void *data
> EINA_UNUSED, Evas_Object *o, const cha
> >       }
> >  }
> >
> > +static const Eo_Callback_Array_Item
> > emotion_object_test_callbacks[] = {
> > +       { EMOTION_OBJECT_EVENT_FRAME_DECODE,
> > video_obj_frame_decode_cb },
> > +       { EMOTION_OBJECT_EVENT_FRAME_RESIZE,
> > video_obj_frame_resize_cb },
> > +       { EMOTION_OBJECT_EVENT_LENGTH_CHANGE,
> > video_obj_length_change_cb
> },
> > +       { EMOTION_OBJECT_EVENT_POSITION_UPDATE,
> video_obj_position_update_cb },
> > +       { EMOTION_OBJECT_EVENT_DECODE_STOP, video_obj_stopped_cb },
> > +       { EMOTION_OBJECT_EVENT_CHANNELS_CHANGE,
> > video_obj_channels_cb },
> > +       { EMOTION_OBJECT_EVENT_TITLE_CHANGE, video_obj_title_cb },
> > +       { EMOTION_OBJECT_EVENT_PROGRESS_CHANGE,
> > video_obj_progress_cb },
> > +       { EMOTION_OBJECT_EVENT_REF_CHANGE, video_obj_ref_cb },
> > +       { EMOTION_OBJECT_EVENT_BUTTON_NUM_CHANGE,
> > video_obj_button_num_cb
> },
> > +       { EMOTION_OBJECT_EVENT_BUTTON_CHANGE, video_obj_button_cb },
> > +       { NULL, NULL }
> > +};
> >
> >  static void
> >  init_video_object(const char *module_filename, const char
> > *filename) @@ -621,18 +670,7 @@ init_video_object(const char
> > *module_filename, const
> char *filename)
> >     edje_object_size_min_calc(oe, &w, &h);
> >     evas_object_resize(oe, w, h);
> >
> > -   evas_object_smart_callback_add(o, "frame_decode",
> video_obj_frame_decode_cb, oe);
> > -   evas_object_smart_callback_add(o, "frame_resize",
> video_obj_frame_resize_cb, oe);
> > -   evas_object_smart_callback_add(o, "length_change",
> video_obj_length_change_cb, oe);
> > -   evas_object_smart_callback_add(o, "position_update",
> video_obj_position_update_cb, oe);
> > -
> > -   evas_object_smart_callback_add(o, "decode_stop",
> video_obj_stopped_cb, oe);
> > -   evas_object_smart_callback_add(o, "channels_change",
> video_obj_channels_cb, oe);
> > -   evas_object_smart_callback_add(o, "title_change",
> > video_obj_title_cb,
> oe);
> > -   evas_object_smart_callback_add(o, "progress_change",
> video_obj_progress_cb, oe);
> > -   evas_object_smart_callback_add(o, "ref_change",
> > video_obj_ref_cb, oe);
> > -   evas_object_smart_callback_add(o, "button_num_change",
> video_obj_button_num_cb, oe);
> > -   evas_object_smart_callback_add(o, "button_change",
> video_obj_button_cb, oe);
> > +   eo_do(o,
> > eo_event_callback_array_add(emotion_object_test_callbacks,
> oe));
> >
> >     edje_object_signal_callback_add(oe, "video_control", "play",
> video_obj_signal_play_cb, o);
> >     edje_object_signal_callback_add(oe, "video_control", "pause",
> video_obj_signal_pause_cb, o);
> >
> > --
> >
> >
> >
> ------------------------------------------------------------------------------
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to