\hypertarget{group__Ecore__Timer__Group}{\section{Ecore Timer functions}
\label{group__Ecore__Timer__Group}\index{Ecore Timer functions@{Ecore Timer functions}}
}


Ecore provides very flexible timer functionality.  


\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{typedef \hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} \hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer}}\label{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}

\begin{DoxyCompactList}\small\item\em A handle for timers. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
double \hyperlink{group__Ecore__Timer__Group_ga9c999fb87833cd31d27707f5c5bc8022}{ecore\-\_\-timer\-\_\-precision\-\_\-get} (void)
\begin{DoxyCompactList}\small\item\em Retrieves the current precision used by timer infrastructure. \end{DoxyCompactList}\item 
void \hyperlink{group__Ecore__Timer__Group_gae2ad71b7ef8461b84b95d2f04a307e41}{ecore\-\_\-timer\-\_\-precision\-\_\-set} (double value)
\begin{DoxyCompactList}\small\item\em Sets the precision to be used by timer infrastructure. \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__Timer__Group_ga805843e4be5ab04e0de9a35d4192d666}{char $\ast$ {\bfseries ecore\-\_\-timer\-\_\-dump} (void)}\label{group__Ecore__Timer__Group_ga805843e4be5ab04e0de9a35d4192d666}

\item 
\hypertarget{group__Ecore__Timer__Group_gaa2085f3f09eb56eb2cd3d0941e59fca4}{static \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\-\_\-\-Bool} {\bfseries \-\_\-ecore\-\_\-timer\-\_\-add} (\hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer} $\ast$obj, Ecore\-\_\-\-Timer\-\_\-\-Private\-\_\-\-Data $\ast$timer, double now, double in, \hyperlink{group__Ecore__Main__Loop__Group_ga8a36ef1ac24bfa317a7826617264e530}{Ecore\-\_\-\-Task\-\_\-\-Cb} func, const void $\ast$data)}\label{group__Ecore__Timer__Group_gaa2085f3f09eb56eb2cd3d0941e59fca4}

\item 
\hypertarget{group__Ecore__Timer__Group_ga6c50db69c98ae334b6df35f1939a8cc2}{static void {\bfseries \-\_\-timer\-\_\-constructor} (\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$obj, void $\ast$\-\_\-pd, va\-\_\-list $\ast$list)}\label{group__Ecore__Timer__Group_ga6c50db69c98ae334b6df35f1939a8cc2}

\item 
\hypertarget{group__Ecore__Timer__Group_ga29851321d9ce8425a0deac1258521c33}{static void {\bfseries \-\_\-timer\-\_\-loop\-\_\-constructor} (\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$obj, void $\ast$\-\_\-pd, va\-\_\-list $\ast$list)}\label{group__Ecore__Timer__Group_ga29851321d9ce8425a0deac1258521c33}

\item 
\hypertarget{group__Ecore__Timer__Group_ga67dacaf2034e7a454cd8b0a68672fb10}{static void {\bfseries \-\_\-constructor} (\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$obj, void $\ast$\-\_\-pd, va\-\_\-list $\ast$list)}\label{group__Ecore__Timer__Group_ga67dacaf2034e7a454cd8b0a68672fb10}

\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\-A\-P\-I} \hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer} $\ast$ \hyperlink{group__Ecore__Timer__Group_ga09398cfbf5cd9a94fbcfeee77205ccd9}{ecore\-\_\-timer\-\_\-loop\-\_\-add} (double in, \hyperlink{group__Ecore__Main__Loop__Group_ga8a36ef1ac24bfa317a7826617264e530}{Ecore\-\_\-\-Task\-\_\-\-Cb} func, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Creates a timer to call the given function in the given period of time. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\-A\-P\-I} void $\ast$ \hyperlink{group__Ecore__Timer__Group_gab182e4c0e65b5b7241f7249de1b1039c}{ecore\-\_\-timer\-\_\-del} (\hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer} $\ast$timer)
\begin{DoxyCompactList}\small\item\em Delete the specified timer from the timer list. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\-A\-P\-I} void \hyperlink{group__Ecore__Timer__Group_ga7e3453623b90b1e182df46976c11d1e3}{ecore\-\_\-timer\-\_\-interval\-\_\-set} (\hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer} $\ast$timer, double in)
\begin{DoxyCompactList}\small\item\em Change the interval the timer ticks of. \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__Timer__Group_gac41f7abc02f570c310a0f286d6efa40e}{static void {\bfseries \-\_\-timer\-\_\-interval\-\_\-set} (\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$obj, void $\ast$\-\_\-pd, va\-\_\-list $\ast$list)}\label{group__Ecore__Timer__Group_gac41f7abc02f570c310a0f286d6efa40e}

\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\-A\-P\-I} double \hyperlink{group__Ecore__Timer__Group_gabdafff8f6c65af377a9551749e9bb29b}{ecore\-\_\-timer\-\_\-interval\-\_\-get} (\hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer} $\ast$timer)
\begin{DoxyCompactList}\small\item\em Get the interval the timer ticks on. \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__Timer__Group_gafbc2767a30a4e4c6305c1b42a594a7b0}{static void {\bfseries \-\_\-timer\-\_\-interval\-\_\-get} (\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$obj, void $\ast$\-\_\-pd, va\-\_\-list $\ast$list)}\label{group__Ecore__Timer__Group_gafbc2767a30a4e4c6305c1b42a594a7b0}

\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\-A\-P\-I} void \hyperlink{group__Ecore__Timer__Group_ga053fee99284674cb0204888e78003a3f}{ecore\-\_\-timer\-\_\-delay} (\hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer} $\ast$timer, double add)
\begin{DoxyCompactList}\small\item\em Add some delay for the next occurrence of a timer. \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__Timer__Group_ga43a370043d0cebf9015fb6db662a8208}{static void {\bfseries \-\_\-timer\-\_\-delay} (\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$obj, void $\ast$\-\_\-pd, va\-\_\-list $\ast$list)}\label{group__Ecore__Timer__Group_ga43a370043d0cebf9015fb6db662a8208}

\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\-A\-P\-I} void \hyperlink{group__Ecore__Timer__Group_ga1b6db702fa179a56e254df27508a25a1}{ecore\-\_\-timer\-\_\-reset} (\hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer} $\ast$timer)
\begin{DoxyCompactList}\small\item\em Reset a timer to its full interval This doesn't affect the interval of a timer. \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__Timer__Group_ga29a60798cb3b7ad74207e813389392e9}{static void {\bfseries \-\_\-timer\-\_\-reset} (\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$obj, void $\ast$\-\_\-pd, va\-\_\-list $\ast$list)}\label{group__Ecore__Timer__Group_ga29a60798cb3b7ad74207e813389392e9}

\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\-A\-P\-I} double \hyperlink{group__Ecore__Timer__Group_ga52fb7357893289800354eec20c1aa148}{ecore\-\_\-timer\-\_\-pending\-\_\-get} (\hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer} $\ast$timer)
\begin{DoxyCompactList}\small\item\em Get the pending time regarding a timer. \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__Timer__Group_ga3068892fe55d52351f7bcf2d9022a311}{static void {\bfseries \-\_\-timer\-\_\-pending\-\_\-get} (\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$obj, void $\ast$\-\_\-pd, va\-\_\-list $\ast$list)}\label{group__Ecore__Timer__Group_ga3068892fe55d52351f7bcf2d9022a311}

\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\-A\-P\-I} void \hyperlink{group__Ecore__Timer__Group_ga5899ecb59838c29c974a47a29b61ab2f}{ecore\-\_\-timer\-\_\-freeze} (\hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer} $\ast$timer)
\begin{DoxyCompactList}\small\item\em Pauses a running timer. \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__Timer__Group_ga0127a2fdf29cf41b853bfca81412ce67}{static void {\bfseries \-\_\-timer\-\_\-freeze} (\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$obj, void $\ast$\-\_\-pd, va\-\_\-list $\ast$list)}\label{group__Ecore__Timer__Group_ga0127a2fdf29cf41b853bfca81412ce67}

\item 
\hypertarget{group__Ecore__Timer__Group_ga221fcba2a57041af6ea7b29f543a4974}{\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\-A\-P\-I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\-\_\-\-Bool} {\bfseries ecore\-\_\-timer\-\_\-freeze\-\_\-get} (\hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer} $\ast$timer)}\label{group__Ecore__Timer__Group_ga221fcba2a57041af6ea7b29f543a4974}

\item 
\hypertarget{group__Ecore__Timer__Group_ga69be92c58430756f02a14b76438a82e9}{static void {\bfseries \-\_\-timer\-\_\-freeze\-\_\-get} (\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$obj, void $\ast$\-\_\-pd, va\-\_\-list $\ast$list)}\label{group__Ecore__Timer__Group_ga69be92c58430756f02a14b76438a82e9}

\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\-A\-P\-I} void \hyperlink{group__Ecore__Timer__Group_ga8bcf5050ae868f8f0f7b054a6ebe710a}{ecore\-\_\-timer\-\_\-thaw} (\hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer} $\ast$timer)
\begin{DoxyCompactList}\small\item\em Resumes a frozen (paused) timer. \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__Timer__Group_gabe58caa90af965da2e0d19f6bc63bb36}{static void {\bfseries \-\_\-timer\-\_\-thaw} (\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$obj, void $\ast$\-\_\-pd, va\-\_\-list $\ast$list)}\label{group__Ecore__Timer__Group_gabe58caa90af965da2e0d19f6bc63bb36}

\end{DoxyCompactItemize}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Ecore__Timer__Group_gac4ee95ef55731b0a76e7cc4285a653d1}{const \hyperlink{group__Eo_ga88d29df76a2921aa5478803156d83be5}{Eo\-\_\-\-Class} $\ast$ {\bfseries ecore\-\_\-timer\-\_\-class\-\_\-get} (void)}\label{group__Ecore__Timer__Group_gac4ee95ef55731b0a76e7cc4285a653d1}

\item 
\hypertarget{group__Ecore__Timer__Group_ga2f480df6d05b496467593f06b1df5c09}{\#define {\bfseries E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-C\-L\-A\-S\-S}~ecore\-\_\-timer\-\_\-class\-\_\-get()}\label{group__Ecore__Timer__Group_ga2f480df6d05b496467593f06b1df5c09}

\item 
\hypertarget{group__Ecore__Timer__Group_ga2bf3a84b1c8973797fa1b1394030d1c1}{\#define {\bfseries E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D}(sub\-\_\-id)~(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-B\-A\-S\-E\-\_\-\-I\-D + sub\-\_\-id)}\label{group__Ecore__Timer__Group_ga2bf3a84b1c8973797fa1b1394030d1c1}

\item 
\#define \hyperlink{group__Ecore__Timer__Group_gaef66a46459c796abc483e06a08a7c17d}{ecore\-\_\-timer\-\_\-constructor}(in, func, data)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-C\-O\-N\-S\-T\-R\-U\-C\-T\-O\-R), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(double, in), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(\hyperlink{group__Ecore__Main__Loop__Group_ga8a36ef1ac24bfa317a7826617264e530}{Ecore\-\_\-\-Task\-\_\-\-Cb}, func), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(const void $\ast$, data)
\item 
\#define \hyperlink{group__Ecore__Timer__Group_ga7833a232b636f7c90e4ca006de43e7df}{ecore\-\_\-timer\-\_\-loop\-\_\-constructor}(in, func, data)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-L\-O\-O\-P\-\_\-\-C\-O\-N\-S\-T\-R\-U\-C\-T\-O\-R), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(double, in), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(\hyperlink{group__Ecore__Main__Loop__Group_ga8a36ef1ac24bfa317a7826617264e530}{Ecore\-\_\-\-Task\-\_\-\-Cb}, func), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(const void $\ast$, data)
\item 
\#define \hyperlink{group__Ecore__Timer__Group_ga342a32caa1f3ba2f0e1a8bf1e03c777b}{ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-set}(in)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-I\-N\-T\-E\-R\-V\-A\-L\-\_\-\-S\-E\-T), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(double, in)
\item 
\#define \hyperlink{group__Ecore__Timer__Group_gabaabc38be0691619f493dab3248020a8}{ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-get}(ret)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-I\-N\-T\-E\-R\-V\-A\-L\-\_\-\-G\-E\-T), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(double $\ast$, ret)
\item 
\#define \hyperlink{group__Ecore__Timer__Group_ga901f86be5fcae52d7969320bb8e346e0}{ecore\-\_\-obj\-\_\-timer\-\_\-delay}(add)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-D\-E\-L\-A\-Y), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(double, add)
\item 
\#define \hyperlink{group__Ecore__Timer__Group_ga6fb8df62d6b97f41de19eef02657e5a6}{ecore\-\_\-obj\-\_\-timer\-\_\-reset}()~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-S\-E\-T)
\item 
\#define \hyperlink{group__Ecore__Timer__Group_gac19dddab63aebdb27e07e92bc3aa9cdc}{ecore\-\_\-obj\-\_\-timer\-\_\-pending\-\_\-get}(ret)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-P\-E\-N\-D\-I\-N\-G\-\_\-\-G\-E\-T), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(double $\ast$, ret)
\item 
enum \{ \\*
{\bfseries E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-C\-O\-N\-S\-T\-R\-U\-C\-T\-O\-R}, 
\\*
{\bfseries E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-L\-O\-O\-P\-\_\-\-C\-O\-N\-S\-T\-R\-U\-C\-T\-O\-R}, 
\\*
{\bfseries E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-I\-N\-T\-E\-R\-V\-A\-L\-\_\-\-S\-E\-T}, 
\\*
{\bfseries E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-I\-N\-T\-E\-R\-V\-A\-L\-\_\-\-G\-E\-T}, 
\\*
{\bfseries E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-D\-E\-L\-A\-Y}, 
\\*
{\bfseries E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-S\-E\-T}, 
\\*
{\bfseries E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-P\-E\-N\-D\-I\-N\-G\-\_\-\-G\-E\-T}, 
\\*
{\bfseries E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-L\-A\-S\-T}
 \}
\item 
\hypertarget{group__Ecore__Timer__Group_ga53731155926f2230566e3b6087ea5a51}{Eo\-\_\-\-Op {\bfseries E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-B\-A\-S\-E\-\_\-\-I\-D}}\label{group__Ecore__Timer__Group_ga53731155926f2230566e3b6087ea5a51}

\end{DoxyCompactItemize}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\-\_\-\-Timer} $\ast$ \hyperlink{group__Ecore__Timer__Group_gad84e3e9e2b70a915ce9d44263666bb07}{ecore\-\_\-timer\-\_\-add} (double in, \hyperlink{group__Ecore__Main__Loop__Group_ga8a36ef1ac24bfa317a7826617264e530}{Ecore\-\_\-\-Task\-\_\-\-Cb} func, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Creates a timer to call the given function in the given period of time. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
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\-: 
\begin{DoxyCode}
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool} my\_func(\textcolor{keywordtype}{void} *data) \{
   do\_funky\_stuff\_with\_data(data);
   \textcolor{keywordflow}{return} \hyperlink{group__Ecore__Main__Loop__Group_ga1ee9db07f9a46a8b20fb83e1c6dbed09}{ECORE\_CALLBACK\_RENEW};
\}
\hyperlink{group__Ecore__Timer__Group_gad84e3e9e2b70a915ce9d44263666bb07}{ecore\_timer\_add}(interval\_in\_seconds, my\_func, data\_given\_to\_function);
\end{DoxyCode}
 \begin{DoxyNote}{Note}
If the function was to be executed only once simply return {\ttfamily E\-C\-O\-R\-E\-\_\-\-C\-A\-L\-L\-B\-A\-C\-K\-\_\-\-C\-A\-N\-C\-E\-L} instead.
\end{DoxyNote}
An example that shows the usage of a lot of these\-: \begin{DoxyItemize}
\item \hyperlink{ecore_timer_example_c}{ecore timers -\/ Scheduled events} \end{DoxyItemize}


\subsection{Macro Definition Documentation}
\hypertarget{group__Ecore__Timer__Group_gaef66a46459c796abc483e06a08a7c17d}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-constructor@{ecore\-\_\-timer\-\_\-constructor}}
\index{ecore\-\_\-timer\-\_\-constructor@{ecore\-\_\-timer\-\_\-constructor}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-constructor}]{\setlength{\rightskip}{0pt plus 5cm}\#define ecore\-\_\-timer\-\_\-constructor(
\begin{DoxyParamCaption}
\item[{}]{in, }
\item[{}]{func, }
\item[{}]{data}
\end{DoxyParamCaption}
)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-C\-O\-N\-S\-T\-R\-U\-C\-T\-O\-R), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(double, in), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K({\bf Ecore\-\_\-\-Task\-\_\-\-Cb}, func), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(const void $\ast$, data)}}\label{group__Ecore__Timer__Group_gaef66a46459c796abc483e06a08a7c17d}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Contructor.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em in} & \\
\hline
\mbox{\tt in}  & {\em func} & \\
\hline
\mbox{\tt in}  & {\em data} & \\
\hline
\end{DoxyParams}


Referenced by ecore\-\_\-timer\-\_\-add().

\hypertarget{group__Ecore__Timer__Group_ga7833a232b636f7c90e4ca006de43e7df}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-loop\-\_\-constructor@{ecore\-\_\-timer\-\_\-loop\-\_\-constructor}}
\index{ecore\-\_\-timer\-\_\-loop\-\_\-constructor@{ecore\-\_\-timer\-\_\-loop\-\_\-constructor}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-loop\-\_\-constructor}]{\setlength{\rightskip}{0pt plus 5cm}\#define ecore\-\_\-timer\-\_\-loop\-\_\-constructor(
\begin{DoxyParamCaption}
\item[{}]{in, }
\item[{}]{func, }
\item[{}]{data}
\end{DoxyParamCaption}
)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-L\-O\-O\-P\-\_\-\-C\-O\-N\-S\-T\-R\-U\-C\-T\-O\-R), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(double, in), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K({\bf Ecore\-\_\-\-Task\-\_\-\-Cb}, func), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(const void $\ast$, data)}}\label{group__Ecore__Timer__Group_ga7833a232b636f7c90e4ca006de43e7df}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Contructor.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em in} & \\
\hline
\mbox{\tt in}  & {\em func} & \\
\hline
\mbox{\tt in}  & {\em data} & \\
\hline
\end{DoxyParams}
\hypertarget{group__Ecore__Timer__Group_ga342a32caa1f3ba2f0e1a8bf1e03c777b}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-set@{ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-set}}
\index{ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-set@{ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-set}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-set}]{\setlength{\rightskip}{0pt plus 5cm}\#define ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-set(
\begin{DoxyParamCaption}
\item[{}]{in}
\end{DoxyParamCaption}
)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-I\-N\-T\-E\-R\-V\-A\-L\-\_\-\-S\-E\-T), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(double, in)}}\label{group__Ecore__Timer__Group_ga342a32caa1f3ba2f0e1a8bf1e03c777b}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Change the interval the timer ticks of.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em in} & \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Ecore__Timer__Group_ga7e3453623b90b1e182df46976c11d1e3}{ecore\-\_\-timer\-\_\-interval\-\_\-set} 
\end{DoxySeeAlso}


Referenced by ecore\-\_\-timer\-\_\-interval\-\_\-set().

\hypertarget{group__Ecore__Timer__Group_gabaabc38be0691619f493dab3248020a8}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-get@{ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-get}}
\index{ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-get@{ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-get}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}\#define ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-get(
\begin{DoxyParamCaption}
\item[{}]{ret}
\end{DoxyParamCaption}
)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-I\-N\-T\-E\-R\-V\-A\-L\-\_\-\-G\-E\-T), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(double $\ast$, ret)}}\label{group__Ecore__Timer__Group_gabaabc38be0691619f493dab3248020a8}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Get the interval the timer ticks on.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt out}  & {\em ret} & \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Ecore__Timer__Group_gabdafff8f6c65af377a9551749e9bb29b}{ecore\-\_\-timer\-\_\-interval\-\_\-get} 
\end{DoxySeeAlso}


Referenced by ecore\-\_\-timer\-\_\-interval\-\_\-get().

\hypertarget{group__Ecore__Timer__Group_ga901f86be5fcae52d7969320bb8e346e0}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-obj\-\_\-timer\-\_\-delay@{ecore\-\_\-obj\-\_\-timer\-\_\-delay}}
\index{ecore\-\_\-obj\-\_\-timer\-\_\-delay@{ecore\-\_\-obj\-\_\-timer\-\_\-delay}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-obj\-\_\-timer\-\_\-delay}]{\setlength{\rightskip}{0pt plus 5cm}\#define ecore\-\_\-obj\-\_\-timer\-\_\-delay(
\begin{DoxyParamCaption}
\item[{}]{add}
\end{DoxyParamCaption}
)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-D\-E\-L\-A\-Y), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(double, add)}}\label{group__Ecore__Timer__Group_ga901f86be5fcae52d7969320bb8e346e0}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Add some delay for the next occurrence of a timer.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em add} & \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Ecore__Timer__Group_ga053fee99284674cb0204888e78003a3f}{ecore\-\_\-timer\-\_\-delay} 
\end{DoxySeeAlso}


Referenced by ecore\-\_\-timer\-\_\-delay().

\hypertarget{group__Ecore__Timer__Group_ga6fb8df62d6b97f41de19eef02657e5a6}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-obj\-\_\-timer\-\_\-reset@{ecore\-\_\-obj\-\_\-timer\-\_\-reset}}
\index{ecore\-\_\-obj\-\_\-timer\-\_\-reset@{ecore\-\_\-obj\-\_\-timer\-\_\-reset}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-obj\-\_\-timer\-\_\-reset}]{\setlength{\rightskip}{0pt plus 5cm}\#define ecore\-\_\-obj\-\_\-timer\-\_\-reset(
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-S\-E\-T)}}\label{group__Ecore__Timer__Group_ga6fb8df62d6b97f41de19eef02657e5a6}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Reset a timer to its full interval.

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Ecore__Timer__Group_ga1b6db702fa179a56e254df27508a25a1}{ecore\-\_\-timer\-\_\-reset} 
\end{DoxySeeAlso}


Referenced by ecore\-\_\-timer\-\_\-reset().

\hypertarget{group__Ecore__Timer__Group_gac19dddab63aebdb27e07e92bc3aa9cdc}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-obj\-\_\-timer\-\_\-pending\-\_\-get@{ecore\-\_\-obj\-\_\-timer\-\_\-pending\-\_\-get}}
\index{ecore\-\_\-obj\-\_\-timer\-\_\-pending\-\_\-get@{ecore\-\_\-obj\-\_\-timer\-\_\-pending\-\_\-get}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-obj\-\_\-timer\-\_\-pending\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}\#define ecore\-\_\-obj\-\_\-timer\-\_\-pending\-\_\-get(
\begin{DoxyParamCaption}
\item[{}]{ret}
\end{DoxyParamCaption}
)~E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-I\-D(E\-C\-O\-R\-E\-\_\-\-T\-I\-M\-E\-R\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-P\-E\-N\-D\-I\-N\-G\-\_\-\-G\-E\-T), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(double $\ast$, ret)}}\label{group__Ecore__Timer__Group_gac19dddab63aebdb27e07e92bc3aa9cdc}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Get the pending time regarding a timer.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt out}  & {\em ret} & \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Ecore__Timer__Group_ga52fb7357893289800354eec20c1aa148}{ecore\-\_\-timer\-\_\-pending\-\_\-get} 
\end{DoxySeeAlso}


Referenced by ecore\-\_\-timer\-\_\-pending\-\_\-get().



\subsection{Function Documentation}
\hypertarget{group__Ecore__Timer__Group_ga9c999fb87833cd31d27707f5c5bc8022}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-precision\-\_\-get@{ecore\-\_\-timer\-\_\-precision\-\_\-get}}
\index{ecore\-\_\-timer\-\_\-precision\-\_\-get@{ecore\-\_\-timer\-\_\-precision\-\_\-get}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-precision\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\-A\-P\-I} double ecore\-\_\-timer\-\_\-precision\-\_\-get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Timer__Group_ga9c999fb87833cd31d27707f5c5bc8022}


Retrieves the current precision used by timer infrastructure. 

\begin{DoxyReturn}{Returns}
Current precision. 
\end{DoxyReturn}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Ecore__Timer__Group_gae2ad71b7ef8461b84b95d2f04a307e41}{ecore\-\_\-timer\-\_\-precision\-\_\-set()} 
\end{DoxySeeAlso}


References E\-I\-N\-A\-\_\-\-M\-A\-I\-N\-\_\-\-L\-O\-O\-P\-\_\-\-C\-H\-E\-C\-K\-\_\-\-R\-E\-T\-U\-R\-N\-\_\-\-V\-A\-L.

\hypertarget{group__Ecore__Timer__Group_gae2ad71b7ef8461b84b95d2f04a307e41}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-precision\-\_\-set@{ecore\-\_\-timer\-\_\-precision\-\_\-set}}
\index{ecore\-\_\-timer\-\_\-precision\-\_\-set@{ecore\-\_\-timer\-\_\-precision\-\_\-set}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-precision\-\_\-set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\-A\-P\-I} void ecore\-\_\-timer\-\_\-precision\-\_\-set (
\begin{DoxyParamCaption}
\item[{double}]{value}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Timer__Group_gae2ad71b7ef8461b84b95d2f04a307e41}


Sets the precision to be used by timer infrastructure. 


\begin{DoxyParams}{Parameters}
{\em value} & allowed introduced timeout delay, in seconds.\\
\hline
\end{DoxyParams}
This sets the precision for {\bfseries 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 {\bfseries increase} the allowed timeout and thus {\bfseries 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.

\begin{DoxyNote}{Note}
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. 
\end{DoxyNote}
\begin{Desc}
\item[Examples\-: ]\par
\hyperlink{ecore_timer_example_8c-example}{ecore\-\_\-timer\-\_\-example.\-c}.\end{Desc}


References E\-I\-N\-A\-\_\-\-M\-A\-I\-N\-\_\-\-L\-O\-O\-P\-\_\-\-C\-H\-E\-C\-K\-\_\-\-R\-E\-T\-U\-R\-N.

\hypertarget{group__Ecore__Timer__Group_gad84e3e9e2b70a915ce9d44263666bb07}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-add@{ecore\-\_\-timer\-\_\-add}}
\index{ecore\-\_\-timer\-\_\-add@{ecore\-\_\-timer\-\_\-add}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-add}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\-A\-P\-I} {\bf Ecore\-\_\-\-Timer} $\ast$ ecore\-\_\-timer\-\_\-add (
\begin{DoxyParamCaption}
\item[{double}]{in, }
\item[{{\bf Ecore\-\_\-\-Task\-\_\-\-Cb}}]{func, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Timer__Group_gad84e3e9e2b70a915ce9d44263666bb07}


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


\begin{DoxyParams}{Parameters}
{\em in} & The interval in seconds. \\
\hline
{\em func} & The given function. If {\ttfamily func} returns 1, the timer is rescheduled for the next interval {\ttfamily in}. \\
\hline
{\em data} & Data to pass to {\ttfamily func} when it is called. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A timer object on success. {\ttfamily N\-U\-L\-L} on failure.
\end{DoxyReturn}
This function adds a timer and returns its handle on success and N\-U\-L\-L on failure. The function {\ttfamily func} will be called every {\ttfamily in} seconds. The function will be passed the {\ttfamily data} pointer as its parameter.

When the timer {\ttfamily func} is called, it must return a value of either 1 (or E\-C\-O\-R\-E\-\_\-\-C\-A\-L\-L\-B\-A\-C\-K\-\_\-\-R\-E\-N\-E\-W) or 0 (or E\-C\-O\-R\-E\-\_\-\-C\-A\-L\-L\-B\-A\-C\-K\-\_\-\-C\-A\-N\-C\-E\-L). 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. \begin{Desc}
\item[Examples\-: ]\par
\hyperlink{banshee_8c-example}{banshee.\-c}, \hyperlink{client_8c-example}{client.\-c}, \hyperlink{complex-types-client-eina-value_8c-example}{complex-\/types-\/client-\/eina-\/value.\-c}, \hyperlink{complex-types-server_8c-example}{complex-\/types-\/server.\-c}, \hyperlink{complex-types_8c-example}{complex-\/types.\-c}, \hyperlink{ecore_animator_example_8c-example}{ecore\-\_\-animator\-\_\-example.\-c}, \hyperlink{ecore_exe_example_8c-example}{ecore\-\_\-exe\-\_\-example.\-c}, \hyperlink{ecore_fd_handler_example_8c-example}{ecore\-\_\-fd\-\_\-handler\-\_\-example.\-c}, \hyperlink{ecore_idler_example_8c-example}{ecore\-\_\-idler\-\_\-example.\-c}, \hyperlink{ecore_thread_example_8c-example}{ecore\-\_\-thread\-\_\-example.\-c}, \hyperlink{ecore_time_functions_example_8c-example}{ecore\-\_\-time\-\_\-functions\-\_\-example.\-c}, \hyperlink{ecore_timer_example_8c-example}{ecore\-\_\-timer\-\_\-example.\-c}, \hyperlink{eina_tiler_01_8c-example}{eina\-\_\-tiler\-\_\-01.\-c}, \hyperlink{evas-events_8c-example}{evas-\/events.\-c}, \hyperlink{server_8c-example}{server.\-c}, \hyperlink{test_growing_balls_8c-example}{test\-\_\-growing\-\_\-balls.\-c}, and \hyperlink{test_rotating_forever_8c-example}{test\-\_\-rotating\-\_\-forever.\-c}.\end{Desc}


References ecore\-\_\-timer\-\_\-constructor, and E\-I\-N\-A\-\_\-\-M\-A\-I\-N\-\_\-\-L\-O\-O\-P\-\_\-\-C\-H\-E\-C\-K\-\_\-\-R\-E\-T\-U\-R\-N\-\_\-\-V\-A\-L.



Referenced by ecore\-\_\-con\-\_\-url\-\_\-timeout\-\_\-set(), ecore\-\_\-exe\-\_\-kill(), and ecore\-\_\-init().

\hypertarget{group__Ecore__Timer__Group_ga09398cfbf5cd9a94fbcfeee77205ccd9}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-loop\-\_\-add@{ecore\-\_\-timer\-\_\-loop\-\_\-add}}
\index{ecore\-\_\-timer\-\_\-loop\-\_\-add@{ecore\-\_\-timer\-\_\-loop\-\_\-add}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-loop\-\_\-add}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\-A\-P\-I} {\bf Ecore\-\_\-\-Timer}$\ast$ ecore\-\_\-timer\-\_\-loop\-\_\-add (
\begin{DoxyParamCaption}
\item[{double}]{in, }
\item[{{\bf Ecore\-\_\-\-Task\-\_\-\-Cb}}]{func, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Timer__Group_ga09398cfbf5cd9a94fbcfeee77205ccd9}


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


\begin{DoxyParams}{Parameters}
{\em in} & The interval in seconds from current loop time. \\
\hline
{\em func} & The given function. If {\ttfamily func} returns 1, the timer is rescheduled for the next interval {\ttfamily in}. \\
\hline
{\em data} & Data to pass to {\ttfamily func} when it is called. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A timer object on success. {\ttfamily N\-U\-L\-L} on failure.
\end{DoxyReturn}
This is the same as \hyperlink{group__Ecore__Timer__Group_gad84e3e9e2b70a915ce9d44263666bb07}{ecore\-\_\-timer\-\_\-add()}, but \char`\"{}now\char`\"{} is the time from \hyperlink{group__Ecore__Time__Group_gadcbdc1aa699fbe4acd1b5427befd04d1}{ecore\-\_\-loop\-\_\-time\-\_\-get()} not \hyperlink{group__Ecore__Time__Group_ga43846b079394bb4d098abf5c16dfc544}{ecore\-\_\-time\-\_\-get()} as \hyperlink{group__Ecore__Timer__Group_gad84e3e9e2b70a915ce9d44263666bb07}{ecore\-\_\-timer\-\_\-add()} uses. See \hyperlink{group__Ecore__Timer__Group_gad84e3e9e2b70a915ce9d44263666bb07}{ecore\-\_\-timer\-\_\-add()} for more details. \hypertarget{group__Ecore__Timer__Group_gab182e4c0e65b5b7241f7249de1b1039c}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-del@{ecore\-\_\-timer\-\_\-del}}
\index{ecore\-\_\-timer\-\_\-del@{ecore\-\_\-timer\-\_\-del}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-del}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\-A\-P\-I} void$\ast$ ecore\-\_\-timer\-\_\-del (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\-\_\-\-Timer} $\ast$}]{timer}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Timer__Group_gab182e4c0e65b5b7241f7249de1b1039c}


Delete the specified timer from the timer list. 


\begin{DoxyParams}{Parameters}
{\em timer} & The timer to delete. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data pointer set for the timer when \hyperlink{group__Ecore__Timer__Group_gad84e3e9e2b70a915ce9d44263666bb07}{ecore\-\_\-timer\-\_\-add} was called. {\ttfamily N\-U\-L\-L} is returned if the function is unsuccessful.
\end{DoxyReturn}
Note\-: {\ttfamily 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). 

References E\-I\-N\-A\-\_\-\-M\-A\-I\-N\-\_\-\-L\-O\-O\-P\-\_\-\-C\-H\-E\-C\-K\-\_\-\-R\-E\-T\-U\-R\-N\-\_\-\-V\-A\-L.



Referenced by ecore\-\_\-avahi\-\_\-del(), ecore\-\_\-con\-\_\-url\-\_\-free(), ecore\-\_\-con\-\_\-url\-\_\-shutdown(), ecore\-\_\-con\-\_\-url\-\_\-timeout\-\_\-set(), ecore\-\_\-exe\-\_\-free(), ecore\-\_\-exe\-\_\-kill(), and ecore\-\_\-shutdown().

\hypertarget{group__Ecore__Timer__Group_ga7e3453623b90b1e182df46976c11d1e3}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-interval\-\_\-set@{ecore\-\_\-timer\-\_\-interval\-\_\-set}}
\index{ecore\-\_\-timer\-\_\-interval\-\_\-set@{ecore\-\_\-timer\-\_\-interval\-\_\-set}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-interval\-\_\-set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\-A\-P\-I} void ecore\-\_\-timer\-\_\-interval\-\_\-set (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\-\_\-\-Timer} $\ast$}]{timer, }
\item[{double}]{in}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Timer__Group_ga7e3453623b90b1e182df46976c11d1e3}


Change the interval the timer ticks of. 

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


\begin{DoxyParams}{Parameters}
{\em timer} & The timer to change. \\
\hline
{\em in} & The interval in seconds. \\
\hline
\end{DoxyParams}


References ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-set.

\hypertarget{group__Ecore__Timer__Group_gabdafff8f6c65af377a9551749e9bb29b}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-interval\-\_\-get@{ecore\-\_\-timer\-\_\-interval\-\_\-get}}
\index{ecore\-\_\-timer\-\_\-interval\-\_\-get@{ecore\-\_\-timer\-\_\-interval\-\_\-get}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-interval\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\-A\-P\-I} double ecore\-\_\-timer\-\_\-interval\-\_\-get (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\-\_\-\-Timer} $\ast$}]{timer}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Timer__Group_gabdafff8f6c65af377a9551749e9bb29b}


Get the interval the timer ticks on. 


\begin{DoxyParams}{Parameters}
{\em timer} & The timer to retrieve the interval from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The interval on success. -\/1 on failure. 
\end{DoxyReturn}


References ecore\-\_\-obj\-\_\-timer\-\_\-interval\-\_\-get.

\hypertarget{group__Ecore__Timer__Group_ga053fee99284674cb0204888e78003a3f}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-delay@{ecore\-\_\-timer\-\_\-delay}}
\index{ecore\-\_\-timer\-\_\-delay@{ecore\-\_\-timer\-\_\-delay}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-delay}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\-A\-P\-I} void ecore\-\_\-timer\-\_\-delay (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\-\_\-\-Timer} $\ast$}]{timer, }
\item[{double}]{add}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Timer__Group_ga053fee99284674cb0204888e78003a3f}


Add some delay for the next occurrence of a timer. 

This doesn't affect the interval of a timer.


\begin{DoxyParams}{Parameters}
{\em timer} & The timer to change. \\
\hline
{\em add} & The delay to add to the next iteration. \\
\hline
\end{DoxyParams}


References ecore\-\_\-obj\-\_\-timer\-\_\-delay.

\hypertarget{group__Ecore__Timer__Group_ga1b6db702fa179a56e254df27508a25a1}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-reset@{ecore\-\_\-timer\-\_\-reset}}
\index{ecore\-\_\-timer\-\_\-reset@{ecore\-\_\-timer\-\_\-reset}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-reset}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\-A\-P\-I} void ecore\-\_\-timer\-\_\-reset (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\-\_\-\-Timer} $\ast$}]{timer}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Timer__Group_ga1b6db702fa179a56e254df27508a25a1}


Reset a timer to its full interval This doesn't affect the interval of a timer. 


\begin{DoxyParams}{Parameters}
{\em timer} & The timer \\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\-2 
\end{DoxySince}
\begin{DoxyNote}{Note}
This is equivalent to (but faster than) 
\begin{DoxyCode}
\hyperlink{group__Ecore__Timer__Group_ga053fee99284674cb0204888e78003a3f}{ecore\_timer\_delay}(timer, \hyperlink{group__Ecore__Timer__Group_gabdafff8f6c65af377a9551749e9bb29b}{ecore\_timer\_interval\_get}(timer) - 
      \hyperlink{group__Ecore__Timer__Group_ga52fb7357893289800354eec20c1aa148}{ecore\_timer\_pending\_get}(timer));
\end{DoxyCode}
 
\end{DoxyNote}


References ecore\-\_\-obj\-\_\-timer\-\_\-reset.

\hypertarget{group__Ecore__Timer__Group_ga52fb7357893289800354eec20c1aa148}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-pending\-\_\-get@{ecore\-\_\-timer\-\_\-pending\-\_\-get}}
\index{ecore\-\_\-timer\-\_\-pending\-\_\-get@{ecore\-\_\-timer\-\_\-pending\-\_\-get}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-pending\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\-A\-P\-I} double ecore\-\_\-timer\-\_\-pending\-\_\-get (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\-\_\-\-Timer} $\ast$}]{timer}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Timer__Group_ga52fb7357893289800354eec20c1aa148}


Get the pending time regarding a timer. 


\begin{DoxyParams}{Parameters}
{\em timer} & The timer to learn from. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The pending time. 
\end{DoxyReturn}


References ecore\-\_\-obj\-\_\-timer\-\_\-pending\-\_\-get.

\hypertarget{group__Ecore__Timer__Group_ga5899ecb59838c29c974a47a29b61ab2f}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-freeze@{ecore\-\_\-timer\-\_\-freeze}}
\index{ecore\-\_\-timer\-\_\-freeze@{ecore\-\_\-timer\-\_\-freeze}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-freeze}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\-A\-P\-I} void ecore\-\_\-timer\-\_\-freeze (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\-\_\-\-Timer} $\ast$}]{timer}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Timer__Group_ga5899ecb59838c29c974a47a29b61ab2f}


Pauses a running timer. 


\begin{DoxyParams}{Parameters}
{\em timer} & The timer to be paused.\\
\hline
\end{DoxyParams}
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 \hyperlink{group__Ecore__Timer__Group_ga8bcf5050ae868f8f0f7b054a6ebe710a}{ecore\-\_\-timer\-\_\-thaw()} to resume it.

\begin{DoxyNote}{Note}
Nothing happens if the timer was already paused.
\end{DoxyNote}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Ecore__Timer__Group_ga8bcf5050ae868f8f0f7b054a6ebe710a}{ecore\-\_\-timer\-\_\-thaw()} 
\end{DoxySeeAlso}
\hypertarget{group__Ecore__Timer__Group_ga8bcf5050ae868f8f0f7b054a6ebe710a}{\index{Ecore Timer functions@{Ecore Timer functions}!ecore\-\_\-timer\-\_\-thaw@{ecore\-\_\-timer\-\_\-thaw}}
\index{ecore\-\_\-timer\-\_\-thaw@{ecore\-\_\-timer\-\_\-thaw}!Ecore Timer functions@{Ecore Timer functions}}
\subsubsection[{ecore\-\_\-timer\-\_\-thaw}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\-A\-P\-I} void ecore\-\_\-timer\-\_\-thaw (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\-\_\-\-Timer} $\ast$}]{timer}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Timer__Group_ga8bcf5050ae868f8f0f7b054a6ebe710a}


Resumes a frozen (paused) timer. 


\begin{DoxyParams}{Parameters}
{\em timer} & The timer to be resumed.\\
\hline
\end{DoxyParams}
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 \hyperlink{group__Ecore__Timer__Group_ga5899ecb59838c29c974a47a29b61ab2f}{ecore\-\_\-timer\-\_\-freeze()}.

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Ecore__Timer__Group_ga5899ecb59838c29c974a47a29b61ab2f}{ecore\-\_\-timer\-\_\-freeze()} 
\end{DoxySeeAlso}
