3cf7852e03
git-svn-id: svn://kolibrios.org@5131 a494cfbc-eb01-0410-851d-a64ba20cac60
288 lines
4.4 KiB
HTML
288 lines
4.4 KiB
HTML
<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
|
|
> |