ecore animator - adjust ecore loop time when animtor ticks to be exact
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Sat, 26 Jul 2014 00:02:56 +0000 (09:02 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Sat, 26 Jul 2014 03:30:12 +0000 (12:30 +0900)
this adjusts ecore loop time very slightlye tp be the "Exact" timepoint
when then animator timer, if timer is used, should have gone off. this
should make animations more precise.

@feature

src/lib/ecore/ecore_anim.c

index 892359f..3d73f30 100644 (file)
@@ -680,11 +680,19 @@ _ecore_animator_run(void *data)
 static Eina_Bool
 _ecore_animator(void *data EINA_UNUSED)
 {
+   double t;
+
    Eina_Bool r;
    _ecore_lock();
+   // set _ecore_time_loop_time to the EXACT time that the timer
+   // should have ticked off (even if it didn't)
+   // if you have a custom animator tick, you may need to adjust inside
+   // it before calling ecore_animator_custom_tick()
+   t = fmod(_ecore_time_loop_time, animators_frametime);
+   _ecore_time_loop_time -= t;
    r = _do_tick();
    _ecore_unlock();
    return r;
 }
 
-#include "ecore_animator.eo.c"
\ No newline at end of file
+#include "ecore_animator.eo.c"