Tizen Native API
Ecore Timer functions

Functions

double ecore_timer_precision_get (void)
 Retrieves the current precision used by timer infrastructure.
void ecore_timer_precision_set (double precision)
 Sets the precision to be used by timer infrastructure.
char * ecore_timer_dump (void)
Ecore_Timerecore_timer_add (double in, Ecore_Task_Cb func, const void *data)
 Creates a timer to call the given function in the given period of time.
Ecore_Timerecore_timer_loop_add (double in, Ecore_Task_Cb func, const void *data)
 Creates a timer to call the given function in the given period of time.
void * ecore_timer_del (Ecore_Timer *timer)
 Delete the specified timer from the timer list.
void ecore_timer_freeze (Ecore_Timer *timer)
 Pauses a running timer.
void ecore_timer_thaw (Ecore_Timer *timer)
 Resumes a frozen (paused) timer.
void ecore_timer_interval_set (Ecore_Timer *obj, double in)
 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.
double ecore_timer_interval_get (const Ecore_Timer *obj)
 Get the interval the timer ticks on.
double ecore_timer_pending_get (const Ecore_Timer *obj)
 Get the pending time regarding a timer.
void ecore_timer_reset (Ecore_Timer *obj)
 Reset a timer to its full interval. This effectively makes the timer start ticking off from zero now.
void ecore_timer_delay (Ecore_Timer *obj, double add)
 Add some delay for the next occurrence of a timer.

Typedefs

typedef Eo Ecore_Timer

Ecore provides very flexible timer functionality. The basic usage of timers, to call a certain function at a certain interval can be achieved with a single line:

 Eina_Bool my_func(void *data) {
    do_funky_stuff_with_data(data);
    return ECORE_CALLBACK_RENEW;
 }
 ecore_timer_add(interval_in_seconds, my_func, data_given_to_function);
Note:
If the function was to be executed only once simply return ECORE_CALLBACK_CANCEL instead.

An example that shows the usage of a lot of these:


Typedef Documentation

typedef Eo Ecore_Timer

A handle for timers


Function Documentation

Ecore_Timer* ecore_timer_add ( double  in,
Ecore_Task_Cb  func,
const void *  data 
)

Creates a timer to call the given function in the given period of time.

This function adds a timer and returns its handle on success and NULL on failure. The function func will be called every in seconds. The function will be passed the data pointer as its parameter.

Since :
2.3
Remarks:
When the timer func is called, it must return a value of either 1 (or ECORE_CALLBACK_RENEW) or 0 (or ECORE_CALLBACK_CANCEL). If it returns 1, it will be called again at the next tick, or if it returns 0 it will be deleted automatically making any references/handles for it invalid.
Parameters:
[in]inThe interval in seconds.
[in]funcThe given function. If func returns 1, the timer is rescheduled for the next interval in.
[in]dataData to pass to func when it is called.
Returns:
A timer object on success. NULL on failure.
void* ecore_timer_del ( Ecore_Timer timer)

Delete the specified timer from the timer list.

Since :
2.3
Parameters:
[in]timerThe timer to delete.
Returns:
The data pointer set for the timer when ecore_timer_add was called. NULL is returned if the function is unsuccessful.
Remarks:
Note: timer must be a valid handle. If the timer function has already returned 0, the handle is no longer valid (and does not need to be delete).
void ecore_timer_delay ( Ecore_Timer obj,
double  add 
)

Add some delay for the next occurrence of a timer.

Since :
2.3
Remarks:
This doesn't affect the interval of a timer.
Parameters:
[in]objThe timer object
[in]addThe amount of time to delay the timer by in seconds
char* ecore_timer_dump ( void  )

Creates a timer to call the given function in the given period of time.

Since :
2.3
Parameters:
inThe interval in seconds.
funcThe given function. If func returns 1, the timer is rescheduled for the next interval in.
dataData to pass to func when it is called.
Returns:
A timer object on success. NULL on failure.

This function adds a timer and returns its handle on success and NULL on failure. The function func will be called every in seconds. The function will be passed the data pointer as its parameter.

When the timer func is called, it must return a value of either 1 (or ECORE_CALLBACK_RENEW) or 0 (or ECORE_CALLBACK_CANCEL). If it returns 1, it will be called again at the next tick, or if it returns 0 it will be deleted automatically making any references/handles for it invalid.

void ecore_timer_freeze ( Ecore_Timer timer)

Pauses a running timer.

Since :
2.3
Remarks:
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.
Nothing happens if the timer was already paused.
Parameters:
[in]timerThe timer to be paused.
See also:
ecore_timer_thaw()
double ecore_timer_interval_get ( const Ecore_Timer obj)

Get the interval the timer ticks on.

Since :
2.3
Parameters:
[in]objThe timer object
void ecore_timer_interval_set ( Ecore_Timer obj,
double  in 
)

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.

Since :
2.3

Change the interval the timer ticks off. If set during a timer call, this will affect the next interval.

Since :
2.3
Parameters:
[in]objThe timer object
[in]inThe new interval in seconds
Ecore_Timer* ecore_timer_loop_add ( double  in,
Ecore_Task_Cb  func,
const void *  data 
)

Creates a timer to call the given function in the given period of time.

Since :
2.3
Parameters:
[in]inThe interval in seconds from current loop time.
[in]funcThe given function. If func returns 1, the timer is rescheduled for the next interval in.
[in]dataData to pass to func when it is called.
Returns:
A timer object on success. NULL on failure.
Remarks:
This is the same as ecore_timer_add(), but "now" is the time from ecore_loop_time_get() not ecore_time_get() as ecore_timer_add() uses. See ecore_timer_add() for more details.
double ecore_timer_pending_get ( const Ecore_Timer obj)

Get the pending time regarding a timer.

Since :
2.3
Parameters:
[in]objThe timer object
double ecore_timer_precision_get ( void  )

Retrieves the current precision used by timer infrastructure.

Since :
2.3
Returns:
Current precision.
See also:
ecore_timer_precision_set()
void ecore_timer_precision_set ( double  precision)

Sets the precision to be used by timer infrastructure.

Since :
2.3
Parameters:
[in]precisionallowed introduced timeout delay, in seconds.
Remarks:
This sets the precision for all timers. The precision determines how much of an difference from the requested interval is acceptable. One common reason to use this function is to increase the allowed timeout and thus decrease precision of the timers, this is because less precise the timers result in the system waking up less often and thus consuming less resources.
Be aware that kernel may delay delivery even further, these delays are always possible due other tasks having higher priorities or other scheduler policies.
Example: We have 2 timers, one that expires in a 2.0s and another that expires in 2.1s, if precision is 0.1s, then the Ecore will request for the next expire to happen in 2.1s and not 2.0s and another one of 0.1 as it would before.
Ecore is smart enough to see if there are timers in the precision range, if it does not, in our example if no second timer in (T + precision) existed, then it would use the minimum timeout.
void ecore_timer_reset ( Ecore_Timer obj)

Reset a timer to its full interval. This effectively makes the timer start ticking off from zero now.

Since :
2.3
Remarks:
This is equivalent to (but faster than)
Since (EFL) :
1.2
Parameters:
[in]objThe timer object
void ecore_timer_thaw ( Ecore_Timer timer)

Resumes a frozen (paused) timer.

Since :
2.3
Remarks:
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().
Parameters:
[in]timerThe timer to be resumed.
See also:
ecore_timer_freeze()