jackdanielz pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=387c3433947e21dc7f191f72ebcb8861588210c6

commit 387c3433947e21dc7f191f72ebcb8861588210c6
Author: Yossi Kantor <yossi.kan...@samsung.com>
Date:   Mon Mar 24 13:23:14 2014 +0200

    Eolian: Integration of Ecore Animator
---
 src/Makefile_Ecore.am           |  10 ++--
 src/lib/ecore/Ecore_Eo.h        |   4 +-
 src/lib/ecore/ecore_anim.c      | 102 ++++++++++------------------------------
 src/lib/ecore/ecore_animator.eo |  27 +++++++++++
 src/lib/ecore/ecore_timer.eo    |   1 +
 5 files changed, 64 insertions(+), 80 deletions(-)

diff --git a/src/Makefile_Ecore.am b/src/Makefile_Ecore.am
index 8e10b39..857e8d1 100644
--- a/src/Makefile_Ecore.am
+++ b/src/Makefile_Ecore.am
@@ -13,7 +13,9 @@ BUILT_SOURCES += \
                  lib/ecore/ecore_idle_enterer.eo.c \
                  lib/ecore/ecore_idle_enterer.eo.h \
                  lib/ecore/ecore_idle_exiter.eo.c \
-                 lib/ecore/ecore_idle_exiter.eo.h
+                 lib/ecore/ecore_idle_exiter.eo.h \
+                 lib/ecore/ecore_animator.eo.c \
+                 lib/ecore/ecore_animator.eo.h
 
 ecoreeolianfilesdir = $(datadir)/eolian/include/ecore-@VMAJ@
 ecoreeolianfiles_DATA = \
@@ -22,7 +24,8 @@ ecoreeolianfiles_DATA = \
               lib/ecore/ecore_job.eo \
               lib/ecore/ecore_idler.eo \
               lib/ecore/ecore_idle_enterer.eo \
-              lib/ecore/ecore_idle_exiter.eo
+              lib/ecore/ecore_idle_exiter.eo \
+              lib/ecore/ecore_animator.eo
 
 EXTRA_DIST += \
               ${ecoreeolianfiles_DATA}
@@ -43,7 +46,8 @@ nodist_installed_ecoremainheaders_DATA = \
                                         lib/ecore/ecore_job.eo.h \
                                         lib/ecore/ecore_idler.eo.h \
                                         lib/ecore/ecore_idle_enterer.eo.h \
-                                        lib/ecore/ecore_idle_exiter.eo.h
+                                        lib/ecore/ecore_idle_exiter.eo.h \
+                                        lib/ecore/ecore_animator.eo.h
 
 lib_ecore_libecore_la_SOURCES = \
 lib/ecore/ecore.c \
diff --git a/src/lib/ecore/Ecore_Eo.h b/src/lib/ecore/Ecore_Eo.h
index fedacdf..38e8c93 100644
--- a/src/lib/ecore/Ecore_Eo.h
+++ b/src/lib/ecore/Ecore_Eo.h
@@ -75,6 +75,8 @@ enum
  *
  * @{
  */
+#include "ecore_animator.eo.h"
+#if 0
 
 #define ECORE_ANIMATOR_CLASS ecore_animator_class_get()
 const Eo_Class *ecore_animator_class_get(void) EINA_CONST;
@@ -114,7 +116,7 @@ enum
  *
  */
 #define ecore_animator_timeline_constructor(runtime, func, data) 
ECORE_ANIMATOR_ID(ECORE_ANIMATOR_SUB_ID_TIMELINE_CONSTRUCTOR), 
EO_TYPECHECK(double, runtime), EO_TYPECHECK(Ecore_Timeline_Cb, func), 
EO_TYPECHECK(const void *, data)
-
+#endif
 /**
  * @}
  */
diff --git a/src/lib/ecore/ecore_anim.c b/src/lib/ecore/ecore_anim.c
index 3a7323c..892359f 100644
--- a/src/lib/ecore/ecore_anim.c
+++ b/src/lib/ecore/ecore_anim.c
@@ -18,9 +18,7 @@
   if (!eo_isa((obj), ECORE_ANIMATOR_CLASS)) \
     return
 
-EAPI Eo_Op ECORE_ANIMATOR_BASE_ID = EO_NOOP;
-
-struct _Ecore_Animator_Private_Data
+struct _Ecore_Animator_Data
 {
    EINA_INLIST;
    Ecore_Animator   *obj;
@@ -37,13 +35,13 @@ struct _Ecore_Animator_Private_Data
    Eina_Bool         just_added : 1;
 };
 
-typedef struct _Ecore_Animator_Private_Data Ecore_Animator_Private_Data;
+typedef struct _Ecore_Animator_Data Ecore_Animator_Data;
 
 static Eina_Bool _ecore_animator_run(void *data);
 static Eina_Bool _ecore_animator(void *data);
 
 static int animators_delete_me = 0;
-static Ecore_Animator_Private_Data *animators = NULL;
+static Ecore_Animator_Data *animators = NULL;
 static double animators_frametime = 1.0 / 30.0;
 
 static Ecore_Animator_Source src = ECORE_ANIMATOR_SOURCE_TIMER;
@@ -103,7 +101,7 @@ _end_tick(void)
 static Eina_Bool
 _do_tick(void)
 {
-   Ecore_Animator_Private_Data *animator;
+   Ecore_Animator_Data *animator;
 
    EINA_INLIST_FOREACH(animators, animator)
      {
@@ -126,14 +124,14 @@ _do_tick(void)
      }
    if (animators_delete_me)
      {
-        Ecore_Animator_Private_Data *l;
+        Ecore_Animator_Data *l;
         for (l = animators; l; )
           {
              animator = l;
-             l = (Ecore_Animator_Private_Data *)EINA_INLIST_GET(l)->next;
+             l = (Ecore_Animator_Data *)EINA_INLIST_GET(l)->next;
              if (animator->delete_me)
                {
-                  animators = (Ecore_Animator_Private_Data *)
+                  animators = (Ecore_Animator_Data *)
                     eina_inlist_remove(EINA_INLIST_GET(animators),
                                        EINA_INLIST_GET(animator));
 
@@ -158,7 +156,7 @@ _do_tick(void)
 
 static Eina_Bool
 _ecore_animator_add(Ecore_Animator *obj,
-                    Ecore_Animator_Private_Data *animator,
+                    Ecore_Animator_Data *animator,
                     Ecore_Task_Cb func,
                     const void   *data)
 {
@@ -182,13 +180,13 @@ _ecore_animator_add(Ecore_Animator *obj,
    animator->func = func;
    animator->data = (void *)data;
    animator->just_added = EINA_TRUE;
-   animators = (Ecore_Animator_Private_Data 
*)eina_inlist_append(EINA_INLIST_GET(animators), EINA_INLIST_GET(animator));
+   animators = (Ecore_Animator_Data 
*)eina_inlist_append(EINA_INLIST_GET(animators), EINA_INLIST_GET(animator));
    _begin_tick();
    return EINA_TRUE;
 }
 
-static void
-_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
+EOLIAN static void
+_ecore_animator_eo_base_constructor(Eo *obj, Ecore_Animator_Data *_pd 
EINA_UNUSED)
 {
    eo_error_set(obj);
    ERR("only custom constructor can be used with '%s' class", MY_CLASS_NAME);
@@ -206,14 +204,10 @@ ecore_animator_add(Ecore_Task_Cb func,
    return animator;
 }
 
-static void
-_animator_constructor(Eo *obj, void *_pd, va_list *list)
+EOLIAN static void
+_ecore_animator_constructor(Eo *obj, Ecore_Animator_Data *animator, 
Ecore_Task_Cb func, const void *data)
 {
-   Ecore_Task_Cb func = va_arg(*list, Ecore_Task_Cb);
-   const void *data = va_arg(*list, const void *);
-
    _ecore_lock();
-   Ecore_Animator_Private_Data *animator = _pd;
    _ecore_animator_add(obj, animator, func, data);
    _ecore_unlock();
 }
@@ -230,16 +224,12 @@ ecore_animator_timeline_add(double            runtime,
    return animator;
 }
 
-static void
-_animator_timeline_constructor(Eo *obj, void *_pd, va_list *list)
+EOLIAN static void
+_ecore_animator_timeline_constructor(Eo *obj, Ecore_Animator_Data *animator, 
double runtime, Ecore_Timeline_Cb func, const void *data)
 {
    _ecore_lock();
-   double runtime = va_arg(*list, double);
    if (runtime <= 0.0) runtime = 0.0;
-   Ecore_Timeline_Cb func = va_arg(*list, Ecore_Timeline_Cb);
-   const void *data = va_arg(*list, const void *);
 
-   Ecore_Animator_Private_Data *animator = _pd;
    if (!_ecore_animator_add(obj, animator, _ecore_animator_run, NULL)) goto 
unlock;
 
    animator->data = obj;
@@ -493,7 +483,7 @@ ecore_animator_del(Ecore_Animator *obj)
 
    if (!obj) return NULL;
    EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
-   Ecore_Animator_Private_Data *animator = eo_data_scope_get(obj, MY_CLASS);
+   Ecore_Animator_Data *animator = eo_data_scope_get(obj, MY_CLASS);
    _ecore_lock();
 
    if (!animator) goto unlock;
@@ -513,11 +503,9 @@ unlock:
    return data;
 }
 
-static void
-_destructor(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_ecore_animator_eo_base_destructor(Eo *obj, Ecore_Animator_Data *pd)
 {
-   Ecore_Animator_Private_Data *pd = _pd;
-
    pd->delete_me = EINA_TRUE;
    animators_delete_me++;
 
@@ -552,13 +540,11 @@ ecore_animator_freeze(Ecore_Animator *animator)
    eo_do(animator, eo_event_freeze());
 }
 
-static void
-_ecore_animator_freeze(Eo *obj EINA_UNUSED, void *_pd,
-                                            va_list *list EINA_UNUSED)
+EOLIAN static void
+_ecore_animator_eo_base_event_freeze(Eo *obj EINA_UNUSED, Ecore_Animator_Data 
*animator)
 {
    EINA_MAIN_LOOP_CHECK_RETURN;
    _ecore_lock();
-   Ecore_Animator_Private_Data *animator = _pd;
 
    if (animator->delete_me) goto unlock;
    animator->suspended = EINA_TRUE;
@@ -573,12 +559,10 @@ ecore_animator_thaw(Ecore_Animator *animator)
    eo_do(animator, eo_event_thaw());
 }
 
-static void
-_ecore_animator_thaw(Eo *obj EINA_UNUSED, void *_pd,
-                                          va_list *list EINA_UNUSED)
+EOLIAN static void
+_ecore_animator_eo_base_event_thaw(Eo *obj EINA_UNUSED, Ecore_Animator_Data 
*animator)
 {
    EINA_MAIN_LOOP_CHECK_RETURN;
-   Ecore_Animator_Private_Data *animator = _pd;
 
    _ecore_lock();
    if (animator->delete_me) goto unlock;
@@ -646,10 +630,10 @@ _ecore_animator_shutdown(void)
    _end_tick();
    while (animators)
      {
-        Ecore_Animator_Private_Data *animator;
+        Ecore_Animator_Data *animator;
 
         animator = animators;
-        animators = (Ecore_Animator_Private_Data 
*)eina_inlist_remove(EINA_INLIST_GET(animators), EINA_INLIST_GET(animators));
+        animators = (Ecore_Animator_Data 
*)eina_inlist_remove(EINA_INLIST_GET(animators), EINA_INLIST_GET(animators));
 
         eo_do(animator->obj, eo_parent_set(NULL));
         if (eo_destructed_is(animator->obj))
@@ -675,7 +659,7 @@ static Eina_Bool
 _ecore_animator_run(void *data)
 {
    Ecore_Animator *obj = data;
-   Ecore_Animator_Private_Data *animator = eo_data_scope_get(obj, MY_CLASS);
+   Ecore_Animator_Data *animator = eo_data_scope_get(obj, MY_CLASS);
 
    double pos = 0.0, t;
    Eina_Bool run_ret;
@@ -703,38 +687,4 @@ _ecore_animator(void *data EINA_UNUSED)
    return r;
 }
 
-static void
-_class_constructor(Eo_Class *klass)
-{
-   const Eo_Op_Func_Description func_desc[] = {
-        EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
-        EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_DESTRUCTOR), _destructor),
-        EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_EVENT_FREEZE), 
_ecore_animator_freeze),
-        EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_EVENT_THAW), 
_ecore_animator_thaw),
-
-        EO_OP_FUNC(ECORE_ANIMATOR_ID(ECORE_ANIMATOR_SUB_ID_CONSTRUCTOR), 
_animator_constructor),
-        
EO_OP_FUNC(ECORE_ANIMATOR_ID(ECORE_ANIMATOR_SUB_ID_TIMELINE_CONSTRUCTOR), 
_animator_timeline_constructor),
-        EO_OP_FUNC_SENTINEL
-   };
-
-   eo_class_funcs_set(klass, func_desc);
-}
-
-static const Eo_Op_Description op_desc[] = {
-     EO_OP_DESCRIPTION(ECORE_ANIMATOR_SUB_ID_CONSTRUCTOR, "Add an animator to 
call func at every animation tick during main loop execution."),
-     EO_OP_DESCRIPTION(ECORE_ANIMATOR_SUB_ID_TIMELINE_CONSTRUCTOR, "Add an 
animator that runs for a limited time"),
-     EO_OP_DESCRIPTION_SENTINEL
-};
-
-static const Eo_Class_Description class_desc = {
-     EO_VERSION,
-     MY_CLASS_NAME,
-     EO_CLASS_TYPE_REGULAR,
-     EO_CLASS_DESCRIPTION_OPS(&ECORE_ANIMATOR_BASE_ID, op_desc, 
ECORE_ANIMATOR_SUB_ID_LAST),
-     NULL,
-     sizeof(Ecore_Animator_Private_Data),
-     _class_constructor,
-     NULL
-};
-
-EO_DEFINE_CLASS(ecore_animator_class_get, &class_desc, EO_BASE_CLASS, NULL)
+#include "ecore_animator.eo.c"
\ No newline at end of file
diff --git a/src/lib/ecore/ecore_animator.eo b/src/lib/ecore/ecore_animator.eo
new file mode 100644
index 0000000..37301f9
--- /dev/null
+++ b/src/lib/ecore/ecore_animator.eo
@@ -0,0 +1,27 @@
+class Ecore_Animator (Eo_Base)
+{
+   eo_prefix: ecore_animator;
+   constructors {
+      timeline_constructor {
+         /*@ Contructor. */
+         params {
+            @in double runtime;
+            @in Ecore_Timeline_Cb func;
+            @in const void *data;
+         }
+      }
+      constructor {
+         /*@ Contructor. */
+         params {
+            @in Ecore_Task_Cb func;
+            @in const void *data;
+         }
+      }
+   }
+   implements {
+      Eo_Base::constructor;
+      Eo_Base::destructor;
+      Eo_Base::event_freeze;
+      Eo_Base::event_thaw;
+   }
+}
\ No newline at end of file
diff --git a/src/lib/ecore/ecore_timer.eo b/src/lib/ecore/ecore_timer.eo
index 720867e..c0173b4 100644
--- a/src/lib/ecore/ecore_timer.eo
+++ b/src/lib/ecore/ecore_timer.eo
@@ -53,6 +53,7 @@ class Ecore_Timer (Eo_Base)
       Eo_Base::constructor;
       Eo_Base::destructor;
       Eo_Base::event_freeze;
+      Eo_Base::event_freeze::get;
       Eo_Base::event_thaw;
    }
 }
\ No newline at end of file

-- 


Reply via email to