You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
296 lines
4.5 KiB
296 lines
4.5 KiB
<HTML |
|
><HEAD |
|
><TITLE |
|
>SDL_AddTimer</TITLE |
|
><META |
|
NAME="GENERATOR" |
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ |
|
"><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 |
|
SUMMARY="Header navigation 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" |
|
ACCESSKEY="P" |
|
>Prev</A |
|
></TD |
|
><TD |
|
WIDTH="80%" |
|
ALIGN="center" |
|
VALIGN="bottom" |
|
></TD |
|
><TD |
|
WIDTH="10%" |
|
ALIGN="right" |
|
VALIGN="bottom" |
|
><A |
|
HREF="sdlremovetimer.html" |
|
ACCESSKEY="N" |
|
>Next</A |
|
></TD |
|
></TR |
|
></TABLE |
|
><HR |
|
ALIGN="LEFT" |
|
WIDTH="100%"></DIV |
|
><H1 |
|
><A |
|
NAME="SDLADDTIMER" |
|
></A |
|
>SDL_AddTimer</H1 |
|
><DIV |
|
CLASS="REFNAMEDIV" |
|
><A |
|
NAME="AEN8482" |
|
></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="AEN8485" |
|
></A |
|
><H2 |
|
>Synopsis</H2 |
|
><DIV |
|
CLASS="FUNCSYNOPSIS" |
|
><A |
|
NAME="AEN8486" |
|
></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="AEN8495" |
|
></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="AEN8507" |
|
></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="AEN8511" |
|
></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="AEN8515" |
|
></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 |
|
SUMMARY="Footer navigation table" |
|
WIDTH="100%" |
|
BORDER="0" |
|
CELLPADDING="0" |
|
CELLSPACING="0" |
|
><TR |
|
><TD |
|
WIDTH="33%" |
|
ALIGN="left" |
|
VALIGN="top" |
|
><A |
|
HREF="sdldelay.html" |
|
ACCESSKEY="P" |
|
>Prev</A |
|
></TD |
|
><TD |
|
WIDTH="34%" |
|
ALIGN="center" |
|
VALIGN="top" |
|
><A |
|
HREF="index.html" |
|
ACCESSKEY="H" |
|
>Home</A |
|
></TD |
|
><TD |
|
WIDTH="33%" |
|
ALIGN="right" |
|
VALIGN="top" |
|
><A |
|
HREF="sdlremovetimer.html" |
|
ACCESSKEY="N" |
|
>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" |
|
ACCESSKEY="U" |
|
>Up</A |
|
></TD |
|
><TD |
|
WIDTH="33%" |
|
ALIGN="right" |
|
VALIGN="top" |
|
>SDL_RemoveTimer</TD |
|
></TR |
|
></TABLE |
|
></DIV |
|
></BODY |
|
></HTML |
|
> |