|
1 <HTML |
|
2 ><HEAD |
|
3 ><TITLE |
|
4 >SDL_SetTimer</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_RemoveTimer" |
|
17 HREF="sdlremovetimer.html"></HEAD |
|
18 ><BODY |
|
19 CLASS="REFENTRY" |
|
20 BGCOLOR="#FFF8DC" |
|
21 TEXT="#000000" |
|
22 LINK="#0000ee" |
|
23 VLINK="#551a8b" |
|
24 ALINK="#ff0000" |
|
25 ><DIV |
|
26 CLASS="NAVHEADER" |
|
27 ><TABLE |
|
28 SUMMARY="Header navigation table" |
|
29 WIDTH="100%" |
|
30 BORDER="0" |
|
31 CELLPADDING="0" |
|
32 CELLSPACING="0" |
|
33 ><TR |
|
34 ><TH |
|
35 COLSPAN="3" |
|
36 ALIGN="center" |
|
37 >SDL Library Documentation</TH |
|
38 ></TR |
|
39 ><TR |
|
40 ><TD |
|
41 WIDTH="10%" |
|
42 ALIGN="left" |
|
43 VALIGN="bottom" |
|
44 ><A |
|
45 HREF="sdlremovetimer.html" |
|
46 ACCESSKEY="P" |
|
47 >Prev</A |
|
48 ></TD |
|
49 ><TD |
|
50 WIDTH="80%" |
|
51 ALIGN="center" |
|
52 VALIGN="bottom" |
|
53 ></TD |
|
54 ><TD |
|
55 WIDTH="10%" |
|
56 ALIGN="right" |
|
57 VALIGN="bottom" |
|
58 > </TD |
|
59 ></TR |
|
60 ></TABLE |
|
61 ><HR |
|
62 ALIGN="LEFT" |
|
63 WIDTH="100%"></DIV |
|
64 ><H1 |
|
65 ><A |
|
66 NAME="SDLSETTIMER" |
|
67 ></A |
|
68 >SDL_SetTimer</H1 |
|
69 ><DIV |
|
70 CLASS="REFNAMEDIV" |
|
71 ><A |
|
72 NAME="AEN8557" |
|
73 ></A |
|
74 ><H2 |
|
75 >Name</H2 |
|
76 >SDL_SetTimer -- Set a callback to run after the specified number of milliseconds has |
|
77 elapsed.</DIV |
|
78 ><DIV |
|
79 CLASS="REFSYNOPSISDIV" |
|
80 ><A |
|
81 NAME="AEN8560" |
|
82 ></A |
|
83 ><H2 |
|
84 >Synopsis</H2 |
|
85 ><DIV |
|
86 CLASS="FUNCSYNOPSIS" |
|
87 ><A |
|
88 NAME="AEN8561" |
|
89 ></A |
|
90 ><P |
|
91 ></P |
|
92 ><PRE |
|
93 CLASS="FUNCSYNOPSISINFO" |
|
94 >#include "SDL.h"</PRE |
|
95 ><P |
|
96 ><CODE |
|
97 ><CODE |
|
98 CLASS="FUNCDEF" |
|
99 >int <B |
|
100 CLASS="FSFUNC" |
|
101 >SDL_SetTimer</B |
|
102 ></CODE |
|
103 >(Uint32 interval, SDL_TimerCallback callback);</CODE |
|
104 ></P |
|
105 ><P |
|
106 ></P |
|
107 ></DIV |
|
108 ></DIV |
|
109 ><DIV |
|
110 CLASS="REFSECT1" |
|
111 ><A |
|
112 NAME="SDLTIMERCALLBACK" |
|
113 ></A |
|
114 ><H2 |
|
115 >Callback</H2 |
|
116 ><P |
|
117 >/* Function prototype for the timer callback function */ |
|
118 typedef Uint32 (*SDL_TimerCallback)(Uint32 interval);</P |
|
119 ></DIV |
|
120 ><DIV |
|
121 CLASS="REFSECT1" |
|
122 ><A |
|
123 NAME="AEN8570" |
|
124 ></A |
|
125 ><H2 |
|
126 >Description</H2 |
|
127 ><P |
|
128 >Set a callback to run after the specified number of milliseconds has |
|
129 elapsed. The callback function is passed the current timer interval |
|
130 and returns the next timer interval. If the returned value is the |
|
131 same as the one passed in, the periodic alarm continues, otherwise a |
|
132 new alarm is scheduled.</P |
|
133 ><P |
|
134 >To cancel a currently running timer, call |
|
135 <TT |
|
136 CLASS="FUNCTION" |
|
137 >SDL_SetTimer(0, NULL);</TT |
|
138 ></P |
|
139 ><P |
|
140 >The timer callback function may run in a different thread than your |
|
141 main constant, and so shouldn't call any functions from within itself.</P |
|
142 ><P |
|
143 >The maximum resolution of this timer is 10 ms, which means that if |
|
144 you request a 16 ms timer, your callback will run approximately 20 ms |
|
145 later on an unloaded system. If you wanted to set a flag signaling |
|
146 a frame update at 30 frames per second (every 33 ms), you might set a |
|
147 timer for 30 ms (see example below).</P |
|
148 ><P |
|
149 >If you use this function, you need to pass <TT |
|
150 CLASS="LITERAL" |
|
151 >SDL_INIT_TIMER</TT |
|
152 > |
|
153 to <TT |
|
154 CLASS="FUNCTION" |
|
155 >SDL_Init()</TT |
|
156 >.</P |
|
157 ><DIV |
|
158 CLASS="NOTE" |
|
159 ><BLOCKQUOTE |
|
160 CLASS="NOTE" |
|
161 ><P |
|
162 ><B |
|
163 >Note: </B |
|
164 >This function is kept for compatibility but has been superseded |
|
165 by the new timer functions |
|
166 <A |
|
167 HREF="sdladdtimer.html" |
|
168 >SDL_AddTimer</A |
|
169 > and |
|
170 <A |
|
171 HREF="sdlremovetimer.html" |
|
172 >SDL_RemoveTimer</A |
|
173 > which support |
|
174 multiple timers.</P |
|
175 ></BLOCKQUOTE |
|
176 ></DIV |
|
177 ></DIV |
|
178 ><DIV |
|
179 CLASS="REFSECT1" |
|
180 ><A |
|
181 NAME="AEN8584" |
|
182 ></A |
|
183 ><H2 |
|
184 >Examples</H2 |
|
185 ><P |
|
186 ><PRE |
|
187 CLASS="PROGRAMLISTING" |
|
188 >SDL_SetTimer((33/10)*10, my_callback);</PRE |
|
189 ></P |
|
190 ></DIV |
|
191 ><DIV |
|
192 CLASS="REFSECT1" |
|
193 ><A |
|
194 NAME="AEN8588" |
|
195 ></A |
|
196 ><H2 |
|
197 >See Also</H2 |
|
198 ><P |
|
199 ><A |
|
200 HREF="sdladdtimer.html" |
|
201 ><TT |
|
202 CLASS="FUNCTION" |
|
203 >SDL_AddTimer</TT |
|
204 ></A |
|
205 ></P |
|
206 ></DIV |
|
207 ><DIV |
|
208 CLASS="NAVFOOTER" |
|
209 ><HR |
|
210 ALIGN="LEFT" |
|
211 WIDTH="100%"><TABLE |
|
212 SUMMARY="Footer navigation table" |
|
213 WIDTH="100%" |
|
214 BORDER="0" |
|
215 CELLPADDING="0" |
|
216 CELLSPACING="0" |
|
217 ><TR |
|
218 ><TD |
|
219 WIDTH="33%" |
|
220 ALIGN="left" |
|
221 VALIGN="top" |
|
222 ><A |
|
223 HREF="sdlremovetimer.html" |
|
224 ACCESSKEY="P" |
|
225 >Prev</A |
|
226 ></TD |
|
227 ><TD |
|
228 WIDTH="34%" |
|
229 ALIGN="center" |
|
230 VALIGN="top" |
|
231 ><A |
|
232 HREF="index.html" |
|
233 ACCESSKEY="H" |
|
234 >Home</A |
|
235 ></TD |
|
236 ><TD |
|
237 WIDTH="33%" |
|
238 ALIGN="right" |
|
239 VALIGN="top" |
|
240 > </TD |
|
241 ></TR |
|
242 ><TR |
|
243 ><TD |
|
244 WIDTH="33%" |
|
245 ALIGN="left" |
|
246 VALIGN="top" |
|
247 >SDL_RemoveTimer</TD |
|
248 ><TD |
|
249 WIDTH="34%" |
|
250 ALIGN="center" |
|
251 VALIGN="top" |
|
252 ><A |
|
253 HREF="time.html" |
|
254 ACCESSKEY="U" |
|
255 >Up</A |
|
256 ></TD |
|
257 ><TD |
|
258 WIDTH="33%" |
|
259 ALIGN="right" |
|
260 VALIGN="top" |
|
261 > </TD |
|
262 ></TR |
|
263 ></TABLE |
|
264 ></DIV |
|
265 ></BODY |
|
266 ></HTML |
|
267 > |