SDL::Time(3pm)

SDL::Time3pm

An sdl perl extension for managing timers

Usage

 use warnings;
 use strict;
 
 use threads;
 use threads::shared;
 use SDL::Time;
 package foo;
 use SDL ':all';
 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);

Category

Core

Methods

add_timer

 my $id = SDL::Timer::add_timer( $ms_interval, $callback );

This runs in a separate thread and a cloned Perl thread. "threads" and "threads::shared" must be used to share any variables the timer uses.

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

 SDL::Timer::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::add_timer" function.

"SDL::Time::remove_timer" returns 0 on success or -1 on error.

Releases

7 releases since Debian 7 (Wheezy); the text changed 6 times.

  1. 7
  2. 8
  3. 9
  4. 10
  5. 11
  6. 12
  7. 13

Authors

See "AUTHORS" in SDL.

From libsdl-perl 2.548-5+b1 in Debian 13 (Trixie). Parsed by carta from the page's man source.