SDL::Time - An SDL Perl extension for managing timers
Core
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);
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.
callback
interval
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.
SDL::Time::add_timer
Note: You must initialize (SDL::init) the timer subsystem to use this function.
SDL::init
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
id
SDL::Time::remove_timer returns 0 on success or -1 on error.
0
-1
To install SDL, copy and paste the appropriate command in to your terminal.
cpanm
cpanm SDL
CPAN shell
perl -MCPAN -e shell install SDL
For more information on module installation, please visit the detailed CPAN module installation guide.