derekf pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=3771a66555f36e843016b8f04c5f39a1bd80c02b

commit 3771a66555f36e843016b8f04c5f39a1bd80c02b
Author: Derek Foreman <derek.foreman.sams...@gmail.com>
Date:   Tue Sep 18 09:43:05 2018 -0500

    elm_transit: Convert to new animators
    
    Summary:
    Use more efficient animator mechanism.
    Depends on D7047
    
    Reviewers: devilhorns
    
    Reviewed By: devilhorns
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D7048
---
 src/lib/elementary/elm_transit.c | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/elm_transit.c b/src/lib/elementary/elm_transit.c
index 7791452c01..28a48a4103 100644
--- a/src/lib/elementary/elm_transit.c
+++ b/src/lib/elementary/elm_transit.c
@@ -834,14 +834,25 @@ elm_transit_go(Elm_Transit *transit)
 
    ELM_SAFE_FREE(transit->go_in_timer, ecore_timer_del);
 
+   Ecore_Evas *ee, *first_ee = NULL;
    Eina_List *elist;
-   Evas_Object *obj;
+   Evas_Object *obj, *first = NULL;
+   Eina_Bool same = EINA_TRUE;
 
    ELM_SAFE_FREE(transit->animator, ecore_animator_del);
 
+   if (transit->objs)
+     {
+        first = eina_list_data_get(transit->objs);
+        first_ee = ecore_evas_ecore_evas_get(evas_object_evas_get(first));
+     }
    EINA_LIST_FOREACH(transit->objs, elist, obj)
-     _transit_obj_data_save(obj);
-
+     {
+        _transit_obj_data_save(obj);
+        ee = ecore_evas_ecore_evas_get(evas_object_evas_get(obj));
+        if (ee != first_ee)
+          same = EINA_FALSE;
+     }
    if (!transit->event_enabled)
      {
         EINA_LIST_FOREACH(transit->objs, elist, obj)
@@ -853,8 +864,13 @@ elm_transit_go(Elm_Transit *transit)
    transit->total_revert_time = 0;
    transit->revert_mode = EINA_FALSE;
    transit->time.begin = ecore_loop_time_get();
-   transit->animator = ecore_animator_add(_transit_animate_cb, transit);
 
+   if (!same || !first)
+     transit->animator = ecore_animator_add(_transit_animate_cb, transit);
+   else
+     transit->animator = ecore_evas_animator_add(first,
+                                                 _transit_animate_cb,
+                                                 transit);
    _transit_animate_cb(transit);
 }
 

-- 


Reply via email to