derekf pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=501114e679c687ef0b27697fdea1d49f62b59769

commit 501114e679c687ef0b27697fdea1d49f62b59769
Author: Derek Foreman <derek.foreman.sams...@gmail.com>
Date:   Tue Sep 18 09:42:29 2018 -0500

    ecore_evas: Refactor out ticking start/stop as functions
    
    Summary:
    These are the refcounted ticky guts of the signal add/del catchers, we'll
    need to use these to start/stop from other call chains in the near
    future.
    
    Reviewers: devilhorns
    
    Reviewed By: devilhorns
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D7039
---
 src/lib/ecore_evas/ecore_evas.c | 74 ++++++++++++++++++++++++-----------------
 1 file changed, 43 insertions(+), 31 deletions(-)

diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index f3033b689a..e7540b6b94 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -3195,6 +3195,47 @@ _ecore_evas_animator_fallback(void *data)
    return EINA_TRUE;
 }
 
+static void
+_ticking_start(Ecore_Evas *ee)
+{
+  if (!ee->animator_count)
+    INF("Setting up animator for %p from '%s' with title '%s'.", ee->evas, 
ee->driver, ee->prop.title);
+
+  if (ee->engine.func->fn_animator_register &&
+      ee->engine.func->fn_animator_unregister)
+     {
+        // Backend support per window vsync
+        ecore_evas_tick_begin(ee);
+     }
+  else
+    {
+       // Backend doesn't support per window vsync, fallback to generic support
+       if (ee->animator_count++ > 0) return;
+       ee->anim = ecore_animator_add(_ecore_evas_animator_fallback, ee);
+    }
+}
+
+static void
+_ticking_stop(Ecore_Evas *ee)
+{
+   if (ee->animator_count == 1)
+      INF("Unsetting up animator for %p from '%s' titled '%s'.", ee->evas, 
ee->driver, ee->prop.title);
+
+   if (ee->engine.func->fn_animator_register &&
+       ee->engine.func->fn_animator_unregister)
+     {
+        // Backend support per window vsync
+        ecore_evas_tick_end(ee);
+     }
+   else
+     {
+        // Backend doesn't support per window vsync, fallback to generic 
support
+        if (--ee->animator_count > 0) return;
+        ecore_animator_del(ee->anim);
+        ee->anim = NULL;
+     }
+}
+
 static void
 _check_animator_event_catcher_add(void *data, const Efl_Event *event)
 {
@@ -3206,21 +3247,7 @@ _check_animator_event_catcher_add(void *data, const 
Efl_Event *event)
      {
         if (array[i].desc == EFL_EVENT_ANIMATOR_TICK)
           {
-             if (!ee->animator_count)
-               INF("Setting up animator for %p from '%s' with title '%s'.", 
ee->evas, ee->driver, ee->prop.title);
-
-             if (ee->engine.func->fn_animator_register &&
-                 ee->engine.func->fn_animator_unregister)
-               {
-                  // Backend support per window vsync
-                  ecore_evas_tick_begin(ee);
-               }
-             else
-               {
-                  // Backend doesn't support per window vsync, fallback to 
generic support
-                  if (ee->animator_count++ > 0) return;
-                  ee->anim = ecore_animator_add(_ecore_evas_animator_fallback, 
ee);
-               }
+             _ticking_start(ee);
 
              // No need to walk more than once per array as you can not del
              // a partial array
@@ -3240,22 +3267,7 @@ _check_animator_event_catcher_del(void *data, const 
Efl_Event *event)
      {
         if (array[i].desc == EFL_EVENT_ANIMATOR_TICK)
           {
-             if (ee->animator_count == 1)
-               INF("Unsetting up animator for %p from '%s' titled '%s'.", 
ee->evas, ee->driver, ee->prop.title);
-
-             if (ee->engine.func->fn_animator_register &&
-                 ee->engine.func->fn_animator_unregister)
-               {
-                  // Backend support per window vsync
-                  ecore_evas_tick_end(ee);
-               }
-             else
-               {
-                  // Backend doesn't support per window vsync, fallback to 
generic support
-                  if (--ee->animator_count > 0) return;
-                  ecore_animator_del(ee->anim);
-                  ee->anim = NULL;
-               }
+             _ticking_stop(ee);
              return;
           }
      }

-- 


Reply via email to