|
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 -- 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 > |