Home | History | Annotate | Download | only in 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 >