X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fcheck-configs.pl;fp=hacks%2Fcheck-configs.pl;h=f8bba1decee5947a48ee4e9e0c61b7937443ee19;hp=d4ec71990875cf965b69944cc773b60208411a95;hb=d6b0217f2417bd19187f0ebc389d6c5c2233b11c;hpb=aa75c7476aeaa84cf3abc192b376a8b03c325213
diff --git a/hacks/check-configs.pl b/hacks/check-configs.pl
index d4ec7199..f8bba1de 100755
--- a/hacks/check-configs.pl
+++ b/hacks/check-configs.pl
@@ -21,7 +21,7 @@ use diagnostics;
use strict;
my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.21 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.22 $' =~ m/\s(\d[.\d]+)\s/s);
my $verbose = 0;
my $debug_p = 0;
@@ -204,6 +204,8 @@ sub parse_src($) {
return (\%res_to_val, \%switch_to_res);
}
+my %video_dups;
+
# Returns a list of:
# "resource = default value"
# or "resource != non-default value"
@@ -427,6 +429,13 @@ sub parse_xml($$$) {
# error ("$file: no video") unless $video;
print STDERR "\n$file: WARNING: no video\n\n" unless $video;
+ if ($video && $video_dups{$video} &&
+ $video_dups{$video} ne $saver_title) {
+ print STDERR "\n$file: WARNING: $saver_title: dup video with " .
+ $video_dups{$video} . "\n";
+ }
+ $video_dups{$video} = $saver_title if ($video);
+
return ($saver_title, $gl_p, \@result, \@widgets);
}
@@ -696,6 +705,8 @@ sub build_android(@) {
my $xml_header = "\n";
my $manifest = '';
+ my $daydream_java = '';
+ my $settings_java = '';
my $arrays = '';
my $strings = '';
my %write_files;
@@ -721,12 +732,9 @@ sub build_android(@) {
my ($saver_title, $gl_p, $xml_opts, $widgets) =
parse_xml ($saver, $switchmap, $src_opts);
- my $daydream_class = "${saver_title}Daydream";
- my $settings_class = "${saver_title}Settings";
- foreach ($settings_class, $daydream_class) {
- s/\s+//gs;
- s/^([a-z])/\U$1/gs; # upcase first letter
- }
+ my $saver_class = "${saver_title}";
+ $saver_class =~ s/\s+//gs;
+ $saver_class =~ s/^([a-z])/\U$1/gs; # upcase first letter
$saver_title =~ s/(.[a-z])([A-Z\d])/$1 $2/gs; # Spaces in InterCaps
$saver_title =~ s/^(GL|RD)[- ]?(.)/$1 \U$2/gs; # Space after "GL"
@@ -932,7 +940,7 @@ sub build_android(@) {
" android:summary=\"" .
$localize0->("${saver_underscore}_saver_desc",
$daydream_desc) . "\"\n" .
- " android:name=\".gen.$daydream_class\"\n" .
+ " android:name=\".gen.Daydream\$$saver_class\"\n" .
" android:permission=\"android.permission" .
".BIND_DREAM_SERVICE\"\n" .
" android:exported=\"true\"\n" .
@@ -947,23 +955,28 @@ sub build_android(@) {
" android:resource=\"\@xml/${saver}_dream\" />\n" .
"\n" .
"\n"
+ "$package.gen.Settings\$$saver_class\" />\n"
);
my $dream = ("\n");
+ "$package.gen.Settings\$$saver_class\" />\n");
$write_files{"$xml_dir/${saver_underscore}_dream.xml"} = $dream;
- $write_files{"$java_dir/$daydream_class.java"} =
- read_template ("XScreenSaverDaydream.java.in",
- { CLASS => $daydream_class,
- API => ($gl_p ? 'GL' : 'XLIB') });
-
- $write_files{"$java_dir/$settings_class.java"} =
- read_template ("XScreenSaverSettings.java.in",
- { CLASS => $settings_class });
+ $daydream_java .=
+ (" public static class $saver_class extends XScreenSaverDaydream {\n" .
+ " public $saver_class() {\n" .
+ " super(jwxyz.API_" . ($gl_p ? 'GL' : 'XLIB') . ");\n" .
+ " }\n" .
+ " }\n" .
+ "\n");
+
+ $settings_java .=
+ (" public static class $saver_class extends XScreenSaverSettings\n" .
+ " implements SharedPreferences.OnSharedPreferenceChangeListener {\n" .
+ " }\n" .
+ "\n");
}
$arrays =~ s/^/ /gm;
@@ -1032,9 +1045,29 @@ sub build_android(@) {
" \n" .
"\n");
+ $daydream_java = ("package org.jwz.xscreensaver.gen;\n" .
+ "\n" .
+ "import org.jwz.xscreensaver.XScreenSaverDaydream;\n" .
+ "import org.jwz.xscreensaver.jwxyz;\n" .
+ "\n" .
+ "public class Daydream {\n" .
+ $daydream_java .
+ "}\n");
+
+ $settings_java = ("package org.jwz.xscreensaver.gen;\n" .
+ "\n" .
+ "import android.content.SharedPreferences;\n" .
+ "import org.jwz.xscreensaver.XScreenSaverSettings;\n" .
+ "\n" .
+ "public class Settings {\n" .
+ $settings_java .
+ "}\n");
+
$write_files{"$project_dir/AndroidManifest.xml"} = $manifest;
$write_files{"$values_dir/settings.xml"} = $arrays;
$write_files{"$values_dir/strings.xml"} = $strings;
+ $write_files{"$java_dir/Daydream.java"} = $daydream_java;
+ $write_files{"$java_dir/Settings.java"} = $settings_java;
my @s2 = ();
foreach my $saver (sort @savers) {
@@ -1080,18 +1113,21 @@ sub build_android(@) {
# if a hack is removed from $ANDROID_HACKS in android/Makefile but
# the old XML files remain behind, the build blows up.
#
- opendir (my $dirp, $xml_dir) || error ("$xml_dir: $!");
- my @files = readdir ($dirp);
- closedir $dirp;
- foreach my $f (sort @files) {
- next if ($f eq '.' || $f eq '..');
- $f = "$xml_dir/$f";
- next if (defined ($write_files{$f}));
- if ($f =~ m/_(settings|dream)\.xml$/s) {
- print STDERR "$progname: rm $f\n";
- unlink ($f) unless ($debug_p);
- } else {
- print STDERR "$progname: warning: unrecognised file: $f\n";
+ foreach my $dd ($xml_dir, $gen_dir, $java_dir) {
+ opendir (my $dirp, $dd) || error ("$dd: $!");
+ my @files = readdir ($dirp);
+ closedir $dirp;
+ foreach my $f (sort @files) {
+ next if ($f eq '.' || $f eq '..');
+ $f = "$dd/$f";
+ next if (defined ($write_files{$f}));
+ if ($f =~ m/_(settings|dream)\.xml$/s ||
+ $f =~ m/(Settings|Daydream)\.java$/s) {
+ print STDERR "$progname: rm $f\n";
+ unlink ($f) unless ($debug_p);
+ } else {
+ print STDERR "$progname: warning: unrecognised file: $f\n";
+ }
}
}
}