vfmg (DEVEL): vfmg - DR17 speedup, now if it has nothing to regene...
sparky
sparky at pld-linux.org
Tue Apr 18 17:23:10 CEST 2006
Author: sparky Date: Tue Apr 18 15:23:10 2006 GMT
Module: vfmg Tag: DEVEL
---- Log message:
- DR17 speedup, now if it has nothing to regenerate is takes only 1.5s
---- Files affected:
vfmg:
vfmg (1.73.2.57 -> 1.73.2.58)
---- Diffs:
================================================================
Index: vfmg/vfmg
diff -u vfmg/vfmg:1.73.2.57 vfmg/vfmg:1.73.2.58
--- vfmg/vfmg:1.73.2.57 Sat Jan 28 16:39:51 2006
+++ vfmg/vfmg Tue Apr 18 17:23:05 2006
@@ -910,23 +910,79 @@
my $apps = "";
my @edje = qw(edje_cc -id . -fd . icon.edc);
foreach my $entry (sort cmpdname keys %{$menu[$no]}) {
+ my $icon_exists = 0;
my $d = $desktop[$entry];
my $name = $$d{Name};
print $tab.$name.".." if $o_verbose;
-
- unlink $$dr{icon};
my $icon = $$d{Icon};
- if ( not -r $icon and defined $$dr{text_icon} ) {
- ( my $exe = $$dr{text_icon} ) =~ s/%1/"$name"/;
- system($exe);
- } else {
- $icon = $$dr{tmp}."/blank.xpm" unless -r $icon;
- scale_icon($icon);
+
+ if ( defined $dr->{existing}->{$$d{file}} ) {
+ my $e = $dr->{existing}->{$$d{file}};
+ if (
+ (
+ (not defined $$e{Name} and not defined $$d{Name})
+ or ($$e{Name} eq $$d{Name})
+ )
+ and
+ (
+ (not defined $$e{GenericName} and not defined $$d{GenericName})
+ or ($$e{GenericName} eq $$d{GenericName})
+ )
+ and
+ (
+ (not defined $$e{Comment} and not defined $$d{Comment})
+ or ($$e{Comment} eq $$d{Comment})
+ )
+ and
+ (
+ (not defined $$e{Exec} and not defined $$d{Exec})
+ or ($$e{Exec} eq $$d{Exec} )
+ )
+ )
+ {
+ if ( -r $icon ) {
+ (my $md5 = `md5sum $icon`) =~ s/\s+.*//s;
+ $icon_exists = 1 if ( $md5 eq $$e{IconMD5} );
+ } else {
+ $icon_exists = 1 unless defined $$e{IconMD5};
+ }
+ }
+ }
+
+ unless ( $icon_exists ) {
+ delete $dr->{existing}->{$$d{file}}
+ if exists $dr->{existing}->{$$d{file}};
+ my $md5;
+ if ( -r $icon ) {
+ ($md5 = `md5sum $icon`) =~ s/\s+.*//s;
+ }
+ my $e = {
+ Name => $$d{Name},
+ GenericName => $$d{GenericName},
+ Comment => $$d{Comment},
+ Exec => $$d{Exec},
+ IconMD5 => $md5
+ };
+ $dr->{existing}->{$$d{file}} = $e;
+
+ unlink $$dr{icon};
+ if ( not -r $icon and defined $$dr{text_icon} ) {
+ ( my $exe = $$dr{text_icon} ) =~ s/%1/"$name"/;
+ system($exe);
+ } else {
+ $icon = $$dr{tmp}."/blank.xpm" unless -r $icon;
+ scale_icon($icon);
+ }
+ die "No icon $$dr{icon}\n" unless -r $$dr{icon};
+ print ".." if $o_verbose;
}
- die "No icon $$dr{icon}\n" unless -r $$dr{icon};
- print ".." if $o_verbose;
if($menu[$no]{$entry} < 0) {
+ if ( $icon_exists ) {
+ $apps .= $$d{file} . ".eap\n";
+ print "..EXISTS\n" if $o_verbose;
+ next;
+ }
my $file = "$opt{icons_dir}/$$d{file}.eap";
system(@edje,$file);
@@ -974,10 +1030,12 @@
my $file = $subdir . "/.directory.eap";
mkpath($subdir,0,0700);
print ".." if $o_verbose;
- system(@edje, $file);
- print ".." if $o_verbose;
- system("enlightenment_eapp",$file,
- "-set-name",$name);
+ unless ( $icon_exists ) {
+ system(@edje, $file);
+ print ".." if $o_verbose;
+ system("enlightenment_eapp",$file,
+ "-set-name",$name);
+ }
print "..DONE\n" if $o_verbose;
DR17($menu[$no]{$entry},$subdir,$tab.step,$dr);
@@ -1475,10 +1533,35 @@
$DR{text_icon} =~ s|\%out|$DR{icon}|g;
}
+ $DR{existing} = {};
+ if (open F_IN, "$opt{icons_dir}/.existing") {
+ my $icon = "broken?";
+ while (my $line = <F_IN>) {
+ if ( $line =~ /^\[(.*)\]$/ ) {
+ $icon = $1;
+ $DR{existing}->{$icon} = {};
+ } elsif ( $line =~ /^(\S+?):\t(.*)$/ ) {
+ $DR{existing}->{$icon}->{$1} = $2;
+ }
+ }
+ close F_IN;
+ }
+
DR17($opt{strip},$opt{destdir},"",\%DR);
unlink "blank.xpm";
unlink "icon.edc";
unlink $DR{icon};
+
+ open F_OUT, "> $opt{icons_dir}/.existing";
+ foreach my $icon ( keys %{$DR{existing}} ) {
+ print F_OUT "[$icon]\n";
+ foreach my $entry ( keys %{$DR{existing}->{$icon}} ) {
+ print F_OUT "$entry: $DR{existing}->{$icon}->{$entry}\n"
+ if defined $DR{existing}->{$icon}->{$entry};
+ }
+ }
+ close F_OUT;
+
exit;
} # }}}
elsif($o_output eq "aewm") {
================================================================
---- CVS-web:
http://cvs.pld-linux.org/vfmg/vfmg?r1=1.73.2.57&r2=1.73.2.58&f=u
More information about the pld-cvs-commit
mailing list