#!/usr/bin/perl -w
-# vidwhacker, for xscreensaver. Copyright (c) 1998-2001 Jamie Zawinski.
+# vidwhacker, for xscreensaver. Copyright (c) 1998-2003 Jamie Zawinski.
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
use strict;
my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.20 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.22 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
my $verbose = 0;
my $use_stdin = 0;
# If you add other programs to this list, please let me know!
#
my @displayer_programs = (
- "xv -root -quit -viewonly -maxpect -noresetroot -quick24 -rmode 5" .
- " -rfg black -rbg black",
- "xli -quiet -fullscreen -onroot -center -border black",
- "xloadimage -quiet -fullscreen -onroot -center -border black",
- "chbg -once -xscreensaver -max_grow 4",
+ "xscreensaver-getimage -root -file",
+# "xv -root -quit -viewonly -maxpect -noresetroot -quick24 -rmode 5" .
+# " -rfg black -rbg black",
+# "xli -quiet -fullscreen -onroot -center -border black",
+# "xloadimage -quiet -fullscreen -onroot -center -border black",
+# "chbg -once -xscreensaver -max_grow 4",
# this lame program wasn't built with vroot.h:
# "xsri -scale -keep-aspect -center-horizontal -center-vertical",
if ($do_file_p) {
- print STDERR "$progname: running \"$cmd\"\n" if ($verbose > 1);
+ print STDERR "$progname: running: $cmd\n" if ($verbose > 1);
my $fn = `$cmd`;
$fn =~ s/\n$//s;
error "didn't get a file?" if ($fn eq "");
if ($fn =~ m/\.gif/i) { $cmd = "giftopnm < \"$fn\""; }
elsif ($fn =~ m/\.jpe?g/i) { $cmd = "djpeg < \"$fn\""; }
elsif ($fn =~ m/\.png/i) { $cmd = "pngtopnm < \"$fn\""; }
+ elsif ($fn =~ m/\.xpm/i) { $cmd = "xpmtoppm < \"$fn\""; }
+ elsif ($fn =~ m/\.bmp/i) { $cmd = "bmptoppm < \"$fn\""; }
+ elsif ($fn =~ m/\.tiff?/i) { $cmd = "tifftopnm < \"$fn\""; }
+ elsif ($fn =~ m/\.p[bgp]m/i) { return `cat \"$fn\"`; }
else {
error "unrecognized file extension on $fn";
}
- print STDERR "$progname: converting with \"$cmd\"\n" if ($verbose > 1);
+ print STDERR "$progname: converting with: $cmd\n" if ($verbose > 1);
$cmd .= " 2>/dev/null" unless ($verbose > 1);
$ppm = `$cmd`;
} else {
- print STDERR "$progname: running \"$cmd\"\n" if ($verbose > 1);
+ print STDERR "$progname: running: $cmd\n" if ($verbose > 1);
$ppm = `$cmd`;
error "no data?" if ($ppm eq "");
error "not a PPM file" unless ($ppm =~ m/^P\d\n/s);
}
$ppm = $stdin_ppm;
} else {
- $ppm = get_ppm();
+ my $max_err_count = 20;
+ my $err_count = 0;
+ while (!defined($ppm)) {
+ $ppm = get_ppm();
+ $err_count++ if (!defined ($ppm));
+ error ("too many errors, too few images!")
+ if ($err_count > $max_err_count);
+ }
}
$ppm = frob_ppm ($ppm);