updated docs
[sdlgit/SDL-Site.git] / pages / SDL-Time.html-inc
1 <div class="pod">
2 <!-- INDEX START -->
3 <h3 id="TOP">Index</h3>
4
5 <ul><li><a href="#NAME">NAME</a></li>
6 <li><a href="#CATEGORY">CATEGORY</a></li>
7 <li><a href="#SYNOPSIS">SYNOPSIS</a></li>
8 <li><a href="#METHODS">METHODS</a>
9 <ul><li><a href="#add_timer">add_timer</a></li>
10 <li><a href="#remove_timer">remove_timer</a></li>
11 </ul>
12 </li>
13 <li><a href="#AUTHORS">AUTHORS</a>
14 </li>
15 </ul><hr />
16 <!-- INDEX END -->
17
18 <h1 id="NAME">NAME</h1><p><a href="#TOP" class="toplink">Top</a></p>
19 <div id="NAME_CONTENT">
20 <p>SDL::Time - An SDL Perl extension for managing timers</p>
21
22 </div>
23 <h1 id="CATEGORY">CATEGORY</h1><p><a href="#TOP" class="toplink">Top</a></p>
24 <div id="CATEGORY_CONTENT">
25 <p>Core</p>
26
27 </div>
28 <h1 id="SYNOPSIS">SYNOPSIS</h1><p><a href="#TOP" class="toplink">Top</a></p>
29 <div id="SYNOPSIS_CONTENT">
30 <pre> use warnings;
31  use strict;
32
33  use threads;
34  use threads::shared;
35
36  use SDL::Time;
37
38  package foo;
39
40  use SDL ':all';
41
42  SDL::init(SDL_INIT_TIMER);
43
44  my $tick :shared = 0;
45  sub ticker { $tick++; warn $tick; return 100; }
46
47  package main;
48
49  my $id = SDL::Time::add_timer(100, 'foo::ticker');
50
51  sleep(2);
52
53  SDL::Time::remove_timer($id);
54
55 </pre>
56
57 </div>
58 <h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
59 <div id="METHODS_CONTENT">
60
61 </div>
62 <h2 id="add_timer">add_timer</h2>
63 <div id="add_timer_CONTENT">
64 <pre> my $id = SDL::Timer::add_timer( $ms_interval, $callback );
65
66 </pre>
67 <p>This runs in a separate thread and a cloned Perl thread.
68 <code>threads</code> and <code>threads::shared</code> must be used to share any variables the timer uses.</p>
69 <p>The <code>$callback</code> function, specified with a string of the function's name, will be called after the milliseconds of <code>$interval</code> have elapsed.
70 The actual delay may be longer than specified depending on the underlying OS.
71 The callback function is passed the current timer interval as well as the <code>$interval</code> parameter and should return the next timer interval.
72 If the return value from the callback is 0, the timer is cancelled; otherwise, the timer will continue to run.</p>
73 <p>The timer callback function may run in a different thread to your main program, so it shouldn't call any functions from within itself.
74 You may call SDL::push_event, however.</p>
75 <p><code>SDL::Time::add_timer</code> returns the identifier value of the generated timer or undef on error.</p>
76 <p><strong>Note:</strong> You must initialize (<code>SDL::init</code>) the timer subsystem to use this function.</p>
77
78 </div>
79 <h2 id="remove_timer">remove_timer</h2>
80 <div id="remove_timer_CONTENT">
81 <pre> SDL::Timer::remove_timer( $id );
82
83 </pre>
84 <p>The other way to cancel a timer is to use <code>SDL::Time::remove_timer</code> on the <code>$id</code> of a timer.
85 This ID is the return value of the <code>SDL::Time::add_timer</code> function.</p>
86 <p><code>SDL::Time::remove_timer</code> returns <code>0</code> on success or <code>-1</code> on error.</p>
87
88 </div>
89 <h1 id="AUTHORS">AUTHORS</h1><p><a href="#TOP" class="toplink">Top</a></p>
90 <div id="AUTHORS_CONTENT">
91 <p>See <b>AUTHORS</b> in <cite>SDL</cite>.</p>
92
93 </div>
94 </div>