Audio-MikMod

 view release on metacpan or  search on metacpan

demo/player-gtk-fork  view on Meta::CPAN

# A threaded version might come in the future,
# but for now fork() will have to do.
$SIG{'HUP'}  = \&_real_pause;
$SIG{'USR1'} = \&_real_back;
$SIG{'USR2'} = \&_real_forward;
$SIG{'KILL'} = \&_exit;
$SIG{'INT'}  = \&_exit;
$SIG{'ALRM'} = \&_exit;

my ($song_loaded,$song_playing,$song_paused) = (0,0,0);
my ($songfile,$songpath,$player_busy);
my ($filelabel,$songlabel,$child);
my $url = 'http://electricrain.com/';

my $subs = {
	'exit'    => \&_exit,
	'back'    => \&_back,
	'play'    => \&_play,
	'pause'   => \&_pause,
	'stop'    => \&_stop,
	'forward' => \&_forward,

demo/player-gtk-fork  view on Meta::CPAN

	} else {
		$song_playing = 0; 
		update_info($songpath, 'Open song first.');
		$song_loaded = 0;
		_open_fw($songpath);
	}
}

sub _update {
	while (Player_Active() && $song_playing && !$song_paused) {
		$player_busy = 1;
		MikMod_Update();
		#progress_update();
		$player_busy = 0;
		usleep(10000);
	}
}

sub _stop {
	print "In _stop()\n";
	$song_paused  = 0;
	$song_playing = 0;
	usleep(1) while $player_busy;
	Player_Stop();
	kill 9, $child;
	waitpid $child, 0;
}

sub _pause { kill 'HUP', $child }
sub _real_pause {
	$song_paused = $song_paused ? 0 : 1;
	print "In _pause(): $song_paused\n";
	Player_TogglePause();

demo/player-gtk-fork  view on Meta::CPAN

sub _open ($) {
	my $file = shift;
	print "In _open : $file\n";

	$song_playing = 0;
	$song_paused  = 0;

	if ($song_loaded) {
		$song_loaded = 0;

		while ($player_busy) {
			usleep(1);
		}
		Player_Free($songfile);
	}

	$songfile = Player_Load($file, 64, 0);
	
	if (!defined $songfile or !$songfile) {
		$song_loaded = 0;
		update_info($file, 'Error loading file.');

demo/player-gtk-ipc  view on Meta::CPAN


my $song_paused = IPC::ShareLite->new(
	'-key'     => 1971,
	'-create'  => 'yes',
	'-destroy' => 'yes'
) or die $!;

$song_paused->store(0);

my ($song_loaded,$song_playing) = (0,0);
my ($songfile,$songpath,$player_busy);
my ($filelabel,$songlabel,$child,$progress_timer);
my $url = 'http://electricrain.com/';

my $subs = {
	'exit'    => \&_exit,
	'back'    => \&_back,
	'play'    => \&_play,
	'pause'   => \&_pause,
	'stop'    => \&_stop,
	'forward' => \&_forward,

demo/player-gtk-ipc  view on Meta::CPAN

		update_info($songpath, 'Open song first.');
		$song_loaded = 0;
		_open_fw($songpath);
	}
}

sub _update {
	my $paused = $song_paused->fetch;

	while (Player_Active() && $song_playing && !$paused) {
		$player_busy = 1;
		MikMod_Update();
		progress_update();
		$player_busy = 0;
		usleep(10000);
	}
	#$song_playing = 0;
	#Player_Stop();
}

sub _stop {
	print "In _stop()\n";
	$song_paused->store(0);
	$song_playing = 0;
	usleep(1) while $player_busy;
	Player_Stop();
	# pthread_join(decode_thread, NULL);
	kill 9, $child;
	waitpid $child, 0;
}

#sub _pause { kill 'HUP', $child }
sub _pause {
	if ($song_paused->fetch) {
		$song_paused->store(0);

demo/player-gtk-ipc  view on Meta::CPAN

sub _open ($) {
	my $file = shift;
	print "In _open : $file\n";

	$song_playing = 0;
	$song_paused->store(0);

	if ($song_loaded) {
		$song_loaded = 0;

		while ($player_busy) {
			usleep(1);
		}
		Player_Free($songfile);
	}

	$songfile = Player_Load($file, 64, 0);
	
	if (!defined $songfile or !$songfile) {
		$song_loaded = 0;
		update_info($file, 'Error loading file.');

demo/player-gtk-thread  view on Meta::CPAN

use Audio::MikMod qw(:MikMod :Player);
use Gtk;
use Pixmaps;
use Thread;
use Time::HiRes qw(usleep);

use constant TRUE  => 1;
use constant FALSE => 0;

my ($song_loaded,$song_playing,$song_paused,$update) = (0,0,0,1);
my ($songfile,$songpath,$player_busy);
my ($filelabel,$songlabel);
my $url = 'http://electricrain.com/';

my $subs = {
	'exit'    => \&_exit,
	'back'    => \&_back,
	'play'    => \&_play,
	'pause'   => \&_pause,
	'stop'    => \&_stop,
	'forward' => \&_forward,

demo/player-gtk-thread  view on Meta::CPAN

		$song_playing = 0; 
		update_info($songpath, 'Open song first.');
		$song_loaded = 0;
		_open_fw($songpath);
	}
}

sub _update {
	while ($update) {
		for (Player_Active() && $song_playing && !$song_paused) {
			$player_busy = 1;
			MikMod_Update();
			#progress_update();
			$player_busy = 0;
		}
		usleep(50000);
	}
}

sub _stop {
	print "In _stop()\n";
	$song_paused  = 0;
	$song_playing = 0;
	usleep(1) while $player_busy;
	Player_Stop();
}

sub _pause {
	$song_paused = $song_paused ? 0 : 1;
	print "In _pause(): $song_paused\n";
	Player_TogglePause();
}

sub _back {

demo/player-gtk-thread  view on Meta::CPAN

sub _open ($) {
	my $file = shift;
	print "In _open : $file\n";

	$song_playing = 0;
	$song_paused  = 0;

	if ($song_loaded) {
		$song_loaded = 0;

		while ($player_busy) {
			usleep(1);
		}
		Player_Free($songfile);
	}

	$songfile = Player_Load($file, 64, 0);
	
	if (!defined $songfile or !$songfile) {
		$song_loaded = 0;
		update_info($file, 'Error loading file.');



( run in 0.246 second using v1.01-cache-2.11-cpan-87723dcf8b7 )