seoz pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=01349714a894bfea06f0b4796fa5e34501180bac

commit 01349714a894bfea06f0b4796fa5e34501180bac
Author: Jee-Yong Um <jc9...@samsung.com>
Date:   Tue Feb 17 08:34:46 2015 +0900

    elm_transit: Add elm_transit_go_in() API
    
    Summary:
    elm_transit_go() is executed immediately after it is called.
    elm_transit_go_in() starts transit in given seconds.
    
    @feature
    
    Reviewers: Hermet, seoz
    
    Reviewed By: seoz
    
    Subscribers: seoz, Hermet
    
    Differential Revision: https://phab.enlightenment.org/D1954
---
 src/lib/elm_transit.c | 25 +++++++++++++++++++++++++
 src/lib/elm_transit.h | 13 +++++++++++++
 2 files changed, 38 insertions(+)

diff --git a/src/lib/elm_transit.c b/src/lib/elm_transit.c
index eb2ab53..c2332b5 100644
--- a/src/lib/elm_transit.c
+++ b/src/lib/elm_transit.c
@@ -30,6 +30,7 @@ struct _Elm_Transit
    EINA_MAGIC;
 
    Ecore_Animator *animator;
+   Ecore_Timer *timer; /**< Timer used by elm_transit_go_in() */
    Eina_Inlist *effect_list;
    Eina_List *objs;
    Elm_Transit *prev_chain_transit;
@@ -266,6 +267,8 @@ _transit_del(Elm_Transit *transit)
    if (transit->del_data.func)
      transit->del_data.func(transit->del_data.arg, transit);
 
+   ecore_timer_del(transit->timer);
+
    //cut off the chain transit relationship
    EINA_LIST_FOREACH_SAFE(transit->next_chain_transits, elist, elist_next, 
chain_transit)
      chain_transit->prev_chain_transit = NULL;
@@ -460,6 +463,17 @@ _recover_image_uv(Evas_Object *obj, Evas_Map *map, 
Eina_Bool revert, Eina_Bool b
    return EINA_TRUE;
 }
 
+static Eina_Bool
+_transit_go_in_cb(void *data)
+{
+   Elm_Transit *transit = data;
+
+   transit->timer = NULL;
+   elm_transit_go(transit);
+
+   return ECORE_CALLBACK_CANCEL;
+}
+
 EAPI Elm_Transit *
 elm_transit_add(void)
 {
@@ -724,6 +738,8 @@ elm_transit_go(Elm_Transit *transit)
 {
    ELM_TRANSIT_CHECK_OR_RETURN(transit);
 
+   ELM_SAFE_FREE(transit->timer, ecore_timer_del);
+
    Eina_List *elist;
    Evas_Object *obj;
 
@@ -747,6 +763,15 @@ elm_transit_go(Elm_Transit *transit)
 }
 
 EAPI void
+elm_transit_go_in(Elm_Transit *transit, double in)
+{
+   ELM_TRANSIT_CHECK_OR_RETURN(transit);
+
+   if (transit->timer) ecore_timer_del(transit->timer);
+   transit->timer = ecore_timer_add(in, _transit_go_in_cb, transit);
+}
+
+EAPI void
 elm_transit_paused_set(Elm_Transit *transit, Eina_Bool paused)
 {
    ELM_TRANSIT_CHECK_OR_RETURN(transit);
diff --git a/src/lib/elm_transit.h b/src/lib/elm_transit.h
index a99bc87..cce70d7 100644
--- a/src/lib/elm_transit.h
+++ b/src/lib/elm_transit.h
@@ -579,6 +579,19 @@ EAPI double                 elm_transit_duration_get(const 
Elm_Transit *transit)
 EAPI void                   elm_transit_go(Elm_Transit *transit);
 
 /**
+ * Starts the transition in given seconds.
+ *
+ * @note @p transit can not be NULL
+ *
+ * @param transit The transit object.
+ * @param in The interval value in seconds
+ *
+ * @since 1.14
+ * @ingroup Transit
+ */
+EAPI void                   elm_transit_go_in(Elm_Transit *transit, double in);
+
+/**
  * Pause/Resume the transition.
  *
  * If you call elm_transit_go again, the transit will be started from the

-- 


Reply via email to