SDL-1.2.14
[sdl_omap.git] / docs / html / sdladdtimer.html
1 <HTML
2 ><HEAD
3 ><TITLE
4 >SDL_AddTimer</TITLE
5 ><META
6 NAME="GENERATOR"
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
8 "><LINK
9 REL="HOME"
10 TITLE="SDL Library Documentation"
11 HREF="index.html"><LINK
12 REL="UP"
13 TITLE="Time"
14 HREF="time.html"><LINK
15 REL="PREVIOUS"
16 TITLE="SDL_Delay"
17 HREF="sdldelay.html"><LINK
18 REL="NEXT"
19 TITLE="SDL_RemoveTimer"
20 HREF="sdlremovetimer.html"></HEAD
21 ><BODY
22 CLASS="REFENTRY"
23 BGCOLOR="#FFF8DC"
24 TEXT="#000000"
25 LINK="#0000ee"
26 VLINK="#551a8b"
27 ALINK="#ff0000"
28 ><DIV
29 CLASS="NAVHEADER"
30 ><TABLE
31 SUMMARY="Header navigation table"
32 WIDTH="100%"
33 BORDER="0"
34 CELLPADDING="0"
35 CELLSPACING="0"
36 ><TR
37 ><TH
38 COLSPAN="3"
39 ALIGN="center"
40 >SDL Library Documentation</TH
41 ></TR
42 ><TR
43 ><TD
44 WIDTH="10%"
45 ALIGN="left"
46 VALIGN="bottom"
47 ><A
48 HREF="sdldelay.html"
49 ACCESSKEY="P"
50 >Prev</A
51 ></TD
52 ><TD
53 WIDTH="80%"
54 ALIGN="center"
55 VALIGN="bottom"
56 ></TD
57 ><TD
58 WIDTH="10%"
59 ALIGN="right"
60 VALIGN="bottom"
61 ><A
62 HREF="sdlremovetimer.html"
63 ACCESSKEY="N"
64 >Next</A
65 ></TD
66 ></TR
67 ></TABLE
68 ><HR
69 ALIGN="LEFT"
70 WIDTH="100%"></DIV
71 ><H1
72 ><A
73 NAME="SDLADDTIMER"
74 ></A
75 >SDL_AddTimer</H1
76 ><DIV
77 CLASS="REFNAMEDIV"
78 ><A
79 NAME="AEN8482"
80 ></A
81 ><H2
82 >Name</H2
83 >SDL_AddTimer&nbsp;--&nbsp;Add a timer which will call a callback after the specified number of milliseconds has
84 elapsed.</DIV
85 ><DIV
86 CLASS="REFSYNOPSISDIV"
87 ><A
88 NAME="AEN8485"
89 ></A
90 ><H2
91 >Synopsis</H2
92 ><DIV
93 CLASS="FUNCSYNOPSIS"
94 ><A
95 NAME="AEN8486"
96 ></A
97 ><P
98 ></P
99 ><PRE
100 CLASS="FUNCSYNOPSISINFO"
101 >#include "SDL.h"</PRE
102 ><P
103 ><CODE
104 ><CODE
105 CLASS="FUNCDEF"
106 >SDL_TimerID <B
107 CLASS="FSFUNC"
108 >SDL_AddTimer</B
109 ></CODE
110 >(Uint32 interval, SDL_NewTimerCallback callback, void *param);</CODE
111 ></P
112 ><P
113 ></P
114 ></DIV
115 ></DIV
116 ><DIV
117 CLASS="REFSECT1"
118 ><A
119 NAME="SDLNEWTIMERCALLBACK"
120 ></A
121 ><H2
122 >Callback</H2
123 ><PRE
124 CLASS="PROGRAMLISTING"
125 >/* type definition for the "new" timer callback function */
126 typedef Uint32 (*SDL_NewTimerCallback)(Uint32 interval, void *param);</PRE
127 ></DIV
128 ><DIV
129 CLASS="REFSECT1"
130 ><A
131 NAME="AEN8495"
132 ></A
133 ><H2
134 >Description</H2
135 ><P
136 >Adds a callback function to be run after the specified number of
137 milliseconds has elapsed. The callback function is passed the current
138 timer interval and the user supplied parameter from the
139 <TT
140 CLASS="FUNCTION"
141 >SDL_AddTimer</TT
142 > call and returns the next timer
143 interval. If the returned value from the callback is the same as the one
144 passed in, the periodic alarm continues, otherwise a new alarm is
145 scheduled.</P
146 ><P
147 >To cancel a currently running timer call
148 <A
149 HREF="sdlremovetimer.html"
150 >SDL_RemoveTimer</A
151 > with the
152 timer ID returned from
153 <TT
154 CLASS="FUNCTION"
155 >SDL_AddTimer</TT
156 >.</P
157 ><P
158 >The timer callback function may run in a different thread than your
159 main program, and so shouldn't call any functions from within itself.
160 You may always call <A
161 HREF="sdlpushevent.html"
162 >SDL_PushEvent</A
163 >, however.</P
164 ><P
165 >The granularity of the timer is platform-dependent, but you should count
166 on it being at least 10 ms as this is the most common number.
167 This means that if
168 you request a 16 ms timer, your callback will run approximately 20 ms
169 later on an unloaded system.  If you wanted to set a flag signaling
170 a frame update at 30 frames per second (every 33 ms), you might set a
171 timer for 30 ms (see example below).
172
173 If you use this function, you need to pass <TT
174 CLASS="LITERAL"
175 >SDL_INIT_TIMER</TT
176 >
177 to <A
178 HREF="sdlinit.html"
179 >SDL_Init</A
180 >.</P
181 ></DIV
182 ><DIV
183 CLASS="REFSECT1"
184 ><A
185 NAME="AEN8507"
186 ></A
187 ><H2
188 >Return Value</H2
189 ><P
190 >Returns an ID value for the added timer or
191 <SPAN
192 CLASS="RETURNVALUE"
193 >NULL</SPAN
194 > if there was an error.</P
195 ></DIV
196 ><DIV
197 CLASS="REFSECT1"
198 ><A
199 NAME="AEN8511"
200 ></A
201 ><H2
202 >Examples</H2
203 ><P
204 ><PRE
205 CLASS="PROGRAMLISTING"
206 >my_timer_id = SDL_AddTimer((33/10)*10, my_callbackfunc, my_callback_param);</PRE
207 ></P
208 ></DIV
209 ><DIV
210 CLASS="REFSECT1"
211 ><A
212 NAME="AEN8515"
213 ></A
214 ><H2
215 >See Also</H2
216 ><P
217 ><A
218 HREF="sdlremovetimer.html"
219 ><TT
220 CLASS="FUNCTION"
221 >SDL_RemoveTimer</TT
222 ></A
223 >,
224 <A
225 HREF="sdlpushevent.html"
226 ><TT
227 CLASS="FUNCTION"
228 >SDL_PushEvent</TT
229 ></A
230 ></P
231 ></DIV
232 ><DIV
233 CLASS="NAVFOOTER"
234 ><HR
235 ALIGN="LEFT"
236 WIDTH="100%"><TABLE
237 SUMMARY="Footer navigation table"
238 WIDTH="100%"
239 BORDER="0"
240 CELLPADDING="0"
241 CELLSPACING="0"
242 ><TR
243 ><TD
244 WIDTH="33%"
245 ALIGN="left"
246 VALIGN="top"
247 ><A
248 HREF="sdldelay.html"
249 ACCESSKEY="P"
250 >Prev</A
251 ></TD
252 ><TD
253 WIDTH="34%"
254 ALIGN="center"
255 VALIGN="top"
256 ><A
257 HREF="index.html"
258 ACCESSKEY="H"
259 >Home</A
260 ></TD
261 ><TD
262 WIDTH="33%"
263 ALIGN="right"
264 VALIGN="top"
265 ><A
266 HREF="sdlremovetimer.html"
267 ACCESSKEY="N"
268 >Next</A
269 ></TD
270 ></TR
271 ><TR
272 ><TD
273 WIDTH="33%"
274 ALIGN="left"
275 VALIGN="top"
276 >SDL_Delay</TD
277 ><TD
278 WIDTH="34%"
279 ALIGN="center"
280 VALIGN="top"
281 ><A
282 HREF="time.html"
283 ACCESSKEY="U"
284 >Up</A
285 ></TD
286 ><TD
287 WIDTH="33%"
288 ALIGN="right"
289 VALIGN="top"
290 >SDL_RemoveTimer</TD
291 ></TR
292 ></TABLE
293 ></DIV
294 ></BODY
295 ></HTML
296 >