+ecore_timer_reset
authordiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 4 Dec 2011 23:12:06 +0000 (23:12 +0000)
committerdiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 4 Dec 2011 23:12:06 +0000 (23:12 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@65876 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
NEWS
src/lib/ecore/Ecore.h
src/lib/ecore/ecore_timer.c

index e28a4c2..019b5a0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 
        * Fix the modifiers value (Windows XP)
 
+2011-12-04 Mike Blumenkrantz
+
+        * added ecore_timer_reset()
diff --git a/NEWS b/NEWS
index de064b7..df034e6 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,8 @@ Changes since Ecore 1.1.0:
 --------------------------
 
 Additions:
+    * ecore
+     - ecore_timer_reset()
     * ecore_x:
      - ecore_x_randr_output_backlight_available()
 
index 981c615..2f52aa1 100644 (file)
@@ -1226,6 +1226,7 @@ EAPI double ecore_timer_interval_get(Ecore_Timer *timer);
 EAPI void ecore_timer_freeze(Ecore_Timer *timer);
 EAPI void ecore_timer_thaw(Ecore_Timer *timer);
 EAPI void ecore_timer_delay(Ecore_Timer *timer, double add);
+EAPI void ecore_timer_reset(Ecore_Timer *timer);
 EAPI double ecore_timer_pending_get(Ecore_Timer *timer);
 EAPI double ecore_timer_precision_get(void);
 EAPI void ecore_timer_precision_set(double precision);
index 2992d2d..8f2ed08 100644 (file)
@@ -259,6 +259,37 @@ ecore_timer_delay(Ecore_Timer *timer,
 }
 
 /**
+ * Reset a timer to its full interval
+ * This doesn't affect the interval of a timer
+ * @param timer The timer
+ * @since 1.2
+ * @note This is equivalent to (but faster than)
+ * @code
+ * ecore_timer_delay(timer, ecore_timer_interval_get(timer) - ecore_timer_pending_get(timer));
+ * @endcode
+ */
+EAPI void
+ecore_timer_reset(Ecore_Timer *timer)
+{
+   double now, add;
+   if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER))
+     {
+        ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER,
+                         __func__);
+        return;
+     }
+   _ecore_lock();
+   now = ecore_time_get();
+
+   if (timer->frozen)
+     add = timer->pending;
+   else
+     add = timer->at - now;
+   _ecore_timer_delay(timer, add);
+   _ecore_unlock();
+}
+
+/**
  * Get the pending time regarding a timer.
  *
  * @param        timer The timer to learn from.