2014-06-26 11:37:40 -07:00
|
|
|
class Ecore.Timer (Eo.Base)
|
2014-03-23 22:47:52 -07:00
|
|
|
{
|
2014-05-13 22:16:03 -07:00
|
|
|
/*@ Timers are objects that will call a given callback at some point
|
|
|
|
* in the future. They may also optionall repeat themselves if the
|
|
|
|
* timer callback returns true. If it does not they will be
|
|
|
|
* automatically deleted and never called again. Timers require the
|
|
|
|
* ecore mainloop to be running and functioning properly. They do not
|
|
|
|
* guarantee exact timing, but try to work on a "best effort basis.
|
|
|
|
*/
|
2014-03-23 22:47:52 -07:00
|
|
|
eo_prefix: ecore_obj_timer;
|
|
|
|
constructors {
|
|
|
|
loop_constructor {
|
2014-05-12 03:11:14 -07:00
|
|
|
/*@ Create a timer to call in a given time from now */
|
2014-03-23 22:47:52 -07:00
|
|
|
params {
|
2014-05-12 03:11:14 -07:00
|
|
|
@in double in; /*@ The time, in seconds, from now when to go off */
|
|
|
|
@in Ecore_Task_Cb func; /*@ The callback function to call when the timer goes off */
|
2014-06-26 02:52:17 -07:00
|
|
|
@in const(void)* data; /*@ A pointer to pass to the callback function as its data pointer */
|
2014-03-23 22:47:52 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
constructor {
|
2014-05-12 03:11:14 -07:00
|
|
|
/*@ Create a timer to call in a given time from when the mainloop woke up from sleep */
|
2014-03-23 22:47:52 -07:00
|
|
|
params {
|
2014-05-12 03:11:14 -07:00
|
|
|
@in double in; /*@ The time, in seconds, from when the main loop woke up, to go off */
|
|
|
|
@in Ecore_Task_Cb func; /*@ The callback function to call when the timer goes off */
|
2014-06-26 02:52:17 -07:00
|
|
|
@in const(void)* data; /*@ A pointer to pass to the callback function as its data pointer */
|
2014-03-23 22:47:52 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
properties {
|
|
|
|
interval {
|
|
|
|
set {
|
2014-07-25 17:19:30 -07:00
|
|
|
/*@ Change the interval the timer ticks off. If set during
|
|
|
|
* a timer call, this will affect the next interval.
|
|
|
|
*/
|
2014-03-23 22:47:52 -07:00
|
|
|
}
|
|
|
|
get {
|
|
|
|
/*@ Get the interval the timer ticks on. */
|
|
|
|
}
|
|
|
|
values {
|
2014-05-12 03:11:14 -07:00
|
|
|
double in; /*@ The new interval in seconds */
|
2014-03-23 22:47:52 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
pending {
|
|
|
|
get {
|
|
|
|
/*@ Get the pending time regarding a timer. */
|
|
|
|
return double;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
methods {
|
|
|
|
reset {
|
2014-05-12 03:11:14 -07:00
|
|
|
/*@ Reset a timer to its full interval. This effectively makes
|
2014-07-25 17:19:30 -07:00
|
|
|
* the timer start ticking off from zero now.
|
|
|
|
* @note This is equivalent to (but faster than)
|
|
|
|
* @code
|
|
|
|
* ecore_timer_delay(timer, ecore_timer_interval_get(timer) - ecore_timer_pending_get(timer));
|
|
|
|
* @endcode
|
|
|
|
* @since 1.2
|
|
|
|
*/
|
2014-03-23 22:47:52 -07:00
|
|
|
}
|
|
|
|
delay {
|
2014-07-25 17:19:30 -07:00
|
|
|
/*@ Add some delay for the next occurrence of a timer.
|
|
|
|
* This doesn't affect the interval of a timer.
|
|
|
|
*/
|
2014-03-23 22:47:52 -07:00
|
|
|
params {
|
2014-05-12 03:11:14 -07:00
|
|
|
@in double add; /*@ The amount of time to delay the timer by in seconds */
|
2014-03-23 22:47:52 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
implements {
|
2014-06-20 03:14:59 -07:00
|
|
|
Eo.Base.constructor;
|
|
|
|
Eo.Base.destructor;
|
|
|
|
Eo.Base.event_freeze;
|
2014-07-25 17:19:30 -07:00
|
|
|
/* XXX: can't document overriden methods
|
|
|
|
* Pauses a running timer.
|
|
|
|
*
|
|
|
|
* @param timer The timer to be paused.
|
|
|
|
*
|
|
|
|
* The timer callback won't be called while the timer is paused. The remaining
|
|
|
|
* time until the timer expires will be saved, so the timer can be resumed with
|
|
|
|
* that same remaining time to expire, instead of expiring instantly. Use
|
|
|
|
* ecore_timer_thaw() to resume it.
|
|
|
|
*
|
|
|
|
* @note Nothing happens if the timer was already paused.
|
|
|
|
*
|
|
|
|
* @see ecore_timer_thaw()
|
|
|
|
*/
|
2014-06-20 03:14:59 -07:00
|
|
|
Eo.Base.event_freeze_count.get;
|
|
|
|
Eo.Base.event_thaw;
|
2014-07-25 17:19:30 -07:00
|
|
|
/* XXX: can't document overriden methods
|
|
|
|
* Resumes a frozen (paused) timer.
|
|
|
|
*
|
|
|
|
* @param timer The timer to be resumed.
|
|
|
|
*
|
|
|
|
* The timer will be resumed from its previous relative position in time. That
|
|
|
|
* means, if it had X seconds remaining until expire when it was paused, it will
|
|
|
|
* be started now with those same X seconds remaining to expire again. But
|
|
|
|
* notice that the interval time won't be touched by this call or by
|
|
|
|
* ecore_timer_freeze().
|
|
|
|
*
|
|
|
|
* @see ecore_timer_freeze()
|
|
|
|
*/
|
|
|
|
}
|
2014-05-12 03:11:14 -07:00
|
|
|
}
|