home *** CD-ROM | disk | FTP | other *** search
- <HTML
- ><HEAD
- ><TITLE
- >SDL_AddTimer</TITLE
- ><META
- NAME="GENERATOR"
- CONTENT="Modular DocBook HTML Stylesheet Version 1.64
- "><LINK
- REL="HOME"
- TITLE="SDL Library Documentation"
- HREF="index.html"><LINK
- REL="UP"
- TITLE="Time"
- HREF="time.html"><LINK
- REL="PREVIOUS"
- TITLE="SDL_Delay"
- HREF="sdldelay.html"><LINK
- REL="NEXT"
- TITLE="SDL_RemoveTimer"
- HREF="sdlremovetimer.html"></HEAD
- ><BODY
- CLASS="REFENTRY"
- BGCOLOR="#FFF8DC"
- TEXT="#000000"
- LINK="#0000ee"
- VLINK="#551a8b"
- ALINK="#ff0000"
- ><DIV
- CLASS="NAVHEADER"
- ><TABLE
- WIDTH="100%"
- BORDER="0"
- CELLPADDING="0"
- CELLSPACING="0"
- ><TR
- ><TH
- COLSPAN="3"
- ALIGN="center"
- >SDL Library Documentation</TH
- ></TR
- ><TR
- ><TD
- WIDTH="10%"
- ALIGN="left"
- VALIGN="bottom"
- ><A
- HREF="sdldelay.html"
- >Prev</A
- ></TD
- ><TD
- WIDTH="80%"
- ALIGN="center"
- VALIGN="bottom"
- ></TD
- ><TD
- WIDTH="10%"
- ALIGN="right"
- VALIGN="bottom"
- ><A
- HREF="sdlremovetimer.html"
- >Next</A
- ></TD
- ></TR
- ></TABLE
- ><HR
- ALIGN="LEFT"
- WIDTH="100%"></DIV
- ><H1
- ><A
- NAME="SDLADDTIMER"
- >SDL_AddTimer</A
- ></H1
- ><DIV
- CLASS="REFNAMEDIV"
- ><A
- NAME="AEN7939"
- ></A
- ><H2
- >Name</H2
- >SDL_AddTimer -- Add a timer which will call a callback after the specified number of milliseconds has
- elapsed.</DIV
- ><DIV
- CLASS="REFSYNOPSISDIV"
- ><A
- NAME="AEN7942"
- ></A
- ><H2
- >Synopsis</H2
- ><DIV
- CLASS="FUNCSYNOPSIS"
- ><A
- NAME="AEN7943"
- ></A
- ><P
- ></P
- ><PRE
- CLASS="FUNCSYNOPSISINFO"
- >#include "SDL.h"</PRE
- ><P
- ><CODE
- ><CODE
- CLASS="FUNCDEF"
- >SDL_TimerID <B
- CLASS="FSFUNC"
- >SDL_AddTimer</B
- ></CODE
- >(Uint32 interval, SDL_NewTimerCallback callback, void *param);</CODE
- ></P
- ><P
- ></P
- ></DIV
- ></DIV
- ><DIV
- CLASS="REFSECT1"
- ><A
- NAME="SDLNEWTIMERCALLBACK"
- ></A
- ><H2
- >Callback</H2
- ><PRE
- CLASS="PROGRAMLISTING"
- >/* type definition for the "new" timer callback function */
- typedef Uint32 (*SDL_NewTimerCallback)(Uint32 interval, void *param);</PRE
- ></DIV
- ><DIV
- CLASS="REFSECT1"
- ><A
- NAME="AEN7952"
- ></A
- ><H2
- >Description</H2
- ><P
- >Adds a callback function to be run after the specified number of
- milliseconds has elapsed. The callback function is passed the current
- timer interval and the user supplied parameter from the
- <TT
- CLASS="FUNCTION"
- >SDL_AddTimer</TT
- > call and returns the next timer
- interval. If the returned value from the callback is the same as the one
- passed in, the periodic alarm continues, otherwise a new alarm is
- scheduled.</P
- ><P
- >To cancel a currently running timer call
- <A
- HREF="sdlremovetimer.html"
- >SDL_RemoveTimer</A
- > with the
- timer ID returned from
- <TT
- CLASS="FUNCTION"
- >SDL_AddTimer</TT
- >.</P
- ><P
- >The timer callback function may run in a different thread than your
- main program, and so shouldn't call any functions from within itself.
- You may always call <A
- HREF="sdlpushevent.html"
- >SDL_PushEvent</A
- >, however.</P
- ><P
- >The granularity of the timer is platform-dependent, but you should count
- on it being at least 10 ms as this is the most common number.
- This means that if
- you request a 16 ms timer, your callback will run approximately 20 ms
- later on an unloaded system. If you wanted to set a flag signaling
- a frame update at 30 frames per second (every 33 ms), you might set a
- timer for 30 ms (see example below).
-
- If you use this function, you need to pass <TT
- CLASS="LITERAL"
- >SDL_INIT_TIMER</TT
- >
- to <A
- HREF="sdlinit.html"
- >SDL_Init</A
- >.</P
- ></DIV
- ><DIV
- CLASS="REFSECT1"
- ><A
- NAME="AEN7964"
- ></A
- ><H2
- >Return Value</H2
- ><P
- >Returns an ID value for the added timer or
- <SPAN
- CLASS="RETURNVALUE"
- >NULL</SPAN
- > if there was an error.</P
- ></DIV
- ><DIV
- CLASS="REFSECT1"
- ><A
- NAME="AEN7968"
- ></A
- ><H2
- >Examples</H2
- ><P
- ><PRE
- CLASS="PROGRAMLISTING"
- >my_timer_id = SDL_AddTimer((33/10)*10, my_callbackfunc, my_callback_param);</PRE
- ></P
- ></DIV
- ><DIV
- CLASS="REFSECT1"
- ><A
- NAME="AEN7972"
- ></A
- ><H2
- >See Also</H2
- ><P
- ><A
- HREF="sdlremovetimer.html"
- ><TT
- CLASS="FUNCTION"
- >SDL_RemoveTimer</TT
- ></A
- >,
- <A
- HREF="sdlpushevent.html"
- ><TT
- CLASS="FUNCTION"
- >SDL_PushEvent</TT
- ></A
- ></P
- ></DIV
- ><DIV
- CLASS="NAVFOOTER"
- ><HR
- ALIGN="LEFT"
- WIDTH="100%"><TABLE
- WIDTH="100%"
- BORDER="0"
- CELLPADDING="0"
- CELLSPACING="0"
- ><TR
- ><TD
- WIDTH="33%"
- ALIGN="left"
- VALIGN="top"
- ><A
- HREF="sdldelay.html"
- >Prev</A
- ></TD
- ><TD
- WIDTH="34%"
- ALIGN="center"
- VALIGN="top"
- ><A
- HREF="index.html"
- >Home</A
- ></TD
- ><TD
- WIDTH="33%"
- ALIGN="right"
- VALIGN="top"
- ><A
- HREF="sdlremovetimer.html"
- >Next</A
- ></TD
- ></TR
- ><TR
- ><TD
- WIDTH="33%"
- ALIGN="left"
- VALIGN="top"
- >SDL_Delay</TD
- ><TD
- WIDTH="34%"
- ALIGN="center"
- VALIGN="top"
- ><A
- HREF="time.html"
- >Up</A
- ></TD
- ><TD
- WIDTH="33%"
- ALIGN="right"
- VALIGN="top"
- >SDL_RemoveTimer</TD
- ></TR
- ></TABLE
- ></DIV
- ></BODY
- ></HTML
- >