0,0 → 1,288 |
<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="AEN7933" |
></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="AEN7936" |
></A |
><H2 |
>Synopsis</H2 |
><DIV |
CLASS="FUNCSYNOPSIS" |
><A |
NAME="AEN7937" |
></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="AEN7946" |
></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="AEN7958" |
></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="AEN7962" |
></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="AEN7966" |
></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 |
> |