vfmg (DEVEL): vfmg - use fork for icons scaling (if requested)

sparky sparky at pld-linux.org
Sat Nov 5 00:32:10 CET 2005


Author: sparky                       Date: Fri Nov  4 23:32:10 2005 GMT
Module: vfmg                          Tag: DEVEL
---- Log message:
- use fork for icons scaling (if requested)

---- Files affected:
vfmg:
   vfmg (1.73.2.26 -> 1.73.2.27) 

---- Diffs:

================================================================
Index: vfmg/vfmg
diff -u vfmg/vfmg:1.73.2.26 vfmg/vfmg:1.73.2.27
--- vfmg/vfmg:1.73.2.26	Wed Nov  2 01:40:14 2005
+++ vfmg/vfmg	Sat Nov  5 00:32:05 2005
@@ -18,6 +18,7 @@
 	icons		=> 1,
 	icons_full	=> 0,
 	icons_scale	=> 0,
+	icons_fork	=> 0,
 	icons_dir	=> "",
 	icons_ext	=> "png",
 	
@@ -69,6 +70,7 @@
 					=>	\$opt{icons_full},
 	'icons-scale|scale-icons|S!'
 					=>	\$opt{icons_scale},
+	'icons-fork!'	=>	\$opt{icons_fork},
 	'icons-dir|d=s'	=>	\$opt{icons_dir},
 	'icons-ext|T=s'	=>	\$opt{icons_ext},
 
@@ -104,6 +106,7 @@
     -i, --icons       - add icons to menu (default: yes)
     -I, --icons-full  - check for icons existence and extend to full path
     -S, --icons-scale - scale (shrink) icons (implies -i -I)
+        --icons-fork  - scale icons after fork
     -d, --icons-dir=  - output dir for icons
     -T, --icons-ext=  - output icons extension (default: png)
 
@@ -783,6 +786,7 @@
 	}
 } # }}}
 
+my @scale;
 sub scale_icon {
 	my $icon_in = $_[0];
 	return $icon_in unless $opt{icons_scale};
@@ -797,7 +801,11 @@
 		s/\%in/$icon_in/g;
 		s/\%out/$icon_out/g;
 		
-		system($_);
+		if ( $opt{icons_fork} ) {
+			push @scale, $_;
+		} else {
+			system($_);
+		}
 	}
 	return $icon_out;
 }
@@ -1286,91 +1294,87 @@
 	unlink $DR{icon};
 	exit;
 } # }}}
-if($o_output eq "aewm") {
+elsif($o_output eq "aewm") {
 	aewm($opt{strip},"");
-	exit;
 }
-if($o_output eq "afterstep") {
+elsif($o_output eq "afterstep") {
 	afterstep($opt{strip},$opt{destdir});
-	exit;
 }
-if($o_output eq "blackbox") {
+elsif($o_output eq "blackbox") {
 	print "[begin] (Blackbox)\n" unless $opt{nomenu};
 	blackbox($opt{strip},"");
 	print "[end]\n" unless $opt{nomenu};
-	exit;
 }
-if($o_output eq "enlightenment") {
+elsif($o_output eq "enlightenment") {
 	enlightenment($opt{strip},"index","Enlightenment");
-	exit;
 }
-if($o_output eq "fbpanel") {
+elsif($o_output eq "fbpanel") {
 	fbpanel($opt{strip},"");
-	exit;
 }
-if($o_output eq "fluxbox") {	# This is the same as blackbox (I hope so)
+elsif($o_output eq "fluxbox") {	# This is the same as blackbox (I hope so)
 	print "[begin] (Fluxbox)\n" unless $opt{nomenu};
 	blackbox($opt{strip});
 	print "[end]\n" unless $opt{nomenu};
-	exit;
 }
-if($o_output eq "fvwm") {
+elsif($o_output eq "fvwm") {
 	fvwm($opt{strip},"", "fvwm");
-	exit;
 }
-if($o_output eq "fvwm2") {
+elsif($o_output eq "fvwm2") {
 	fvwm2($opt{strip},"fvwm2");
-	exit;
 }
-if($o_output eq "icewm") {
+elsif($o_output eq "icewm") {
 	icewm($opt{strip},"");
-	exit;
 }
-if($o_output eq "metisse") {
+elsif($o_output eq "metisse") {
 	metisse($opt{strip},"", "metisse");
-	exit;
 }
-if($o_output eq "olvwm") {
+elsif($o_output eq "olvwm") {
 	olvwm($opt{strip},"");
-	exit;
 }
-if($o_output eq "openbox") {
+elsif($o_output eq "openbox") {
 	print "<openbox_menu>\n" unless $opt{nomenu};
 	print qq(<menu id="root-menu" label="PLD Linux">\n) unless $opt{nomenu};
 	openbox($opt{strip},"");
 	print "</menu>\n" unless $opt{nomenu};
 	print "</openbox_menu>\n" unless $opt{nomenu};
-	exit;
 }
-if($o_output eq "qvwm") {
+elsif($o_output eq "qvwm") {
 	print "[StartMenu]\n";
 	qvwm($opt{strip},"");
-	exit;
 }
-if($o_output eq "wmaker") {
+elsif($o_output eq "wmaker") {
 	if($opt{strip}) {
 		wmaker(1,",","");
 	} else {
 		wmaker(0,"","");
 	}
 	print "\n";
-	exit;
 }
-if($o_output eq "wmaker-old") {
+elsif($o_output eq "wmaker-old") {
 	wmakerold($opt{strip},"");
-	exit;
 }
-if($o_output eq "xfce4") {
+elsif($o_output eq "xfce4") {
 	print "<xfdesktop-menu>\n";
 	print qq(<title name="Desktop Menu" visible="yes"/>\n) unless $opt{nomenu};
 	xfce4($opt{strip},step);
 	print "</xfdesktop-menu>\n";
-	exit;
 }
-if($o_output eq "xpde") {
+elsif($o_output eq "xpde") {
 	xpde($opt{strip},$opt{destdir});
-	exit;
 }
 # WM case }}}
+if ( @scale ) {
+	warn "Scaling $#scale icons\n";
+	my $fork = fork;
+	unless ( defined $fork ) {
+		warn "Fork failed, scaling in foreground\n";
+		$fork = 0;
+	}
+	if ( $fork == 0) {
+		foreach my $cmd (@scale) {
+			system($cmd);
+		}
+	}
+}
 
 # vi: ts=4 sw=4 noet fdm=marker
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/vfmg/vfmg?r1=1.73.2.26&r2=1.73.2.27&f=u




More information about the pld-cvs-commit mailing list