NAME
SDL::Time - An SDL Perl extension for managing timers
CATEGORY
Core
SYNOPSIS
use threads;
use threads::shared;
use SDL ':all';
use SDL::Time;
package foo;
SDL::init(SDL_INIT_TIMER);
my $tick :shared = 0;
sub ticker { $tick++; warn $tick; return 100; }
package main;
my $id = SDL::Time::add_timer(100, 'foo::ticker');
sleep(2);
SDL::Time::remove_timer($id);
METHODS
add_timer(interval, callback)
This runs in a separate thread and a cloned Perl thread.
The callback
function, specified with a string of the function's name, will be called after the milliseconds of interval
have elapsed. The actual delay may be longer than specified depending on the underlying OS. The callback function is passed the current timer interval as well as the interval
parameter and should return the next timer interval. If the return value from the callback is 0, the timer is cancelled; otherwise, the timer will continue to run.
The timer callback function may run in a different thread to your main program, so it shouldn't call any functions from within itself. You may call SDL::push_event, however.
SDL::Time::add_timer
returns the identifier value of the generated timer or undef on error.
Note: You must initialize (SDL::init
) the timer subsystem to use this function.
remove_timer(id)
The other way to cancel a timer is to use SDL::Time::remove_timer
on the id
of a timer. This id
is the return value of the SDL::Time::remove_timer
function.
SDL::Time::remove_timer
returns 0
on success or -1
on error.