summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Cafarelli <voyageur@gentoo.org>2012-02-27 14:58:33 +0000
committerBernard Cafarelli <voyageur@gentoo.org>2012-02-27 14:58:33 +0000
commitb5b6002ab45e9d83ec37595178dfd77e878848f4 (patch)
tree48654f0ba6e89bbf22b142a74427459851e5b721 /x11-plugins/wmfire
parentRestricting pypy (diff)
downloadgentoo-2-b5b6002ab45e9d83ec37595178dfd77e878848f4.tar.gz
gentoo-2-b5b6002ab45e9d83ec37595178dfd77e878848f4.tar.bz2
gentoo-2-b5b6002ab45e9d83ec37595178dfd77e878848f4.zip
Fix display for SMP systems, report and patch by wbk in bug #404323
(Portage version: 2.2.0_alpha89/cvs/Linux x86_64)
Diffstat (limited to 'x11-plugins/wmfire')
-rw-r--r--x11-plugins/wmfire/ChangeLog10
-rw-r--r--x11-plugins/wmfire/files/wmfire-1.2.4-lastprocessor_SMP.patch130
-rw-r--r--x11-plugins/wmfire/wmfire-1.2.4-r2.ebuild (renamed from x11-plugins/wmfire/wmfire-1.2.4.ebuild)10
3 files changed, 144 insertions, 6 deletions
diff --git a/x11-plugins/wmfire/ChangeLog b/x11-plugins/wmfire/ChangeLog
index 81b2241ec933..6def55028bf1 100644
--- a/x11-plugins/wmfire/ChangeLog
+++ b/x11-plugins/wmfire/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for x11-plugins/wmfire
-# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/x11-plugins/wmfire/ChangeLog,v 1.19 2011/12/26 12:34:27 maekke Exp $
+# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/x11-plugins/wmfire/ChangeLog,v 1.20 2012/02/27 14:58:33 voyageur Exp $
+
+*wmfire-1.2.4-r2 (27 Feb 2012)
+
+ 27 Feb 2012; Bernard Cafarelli <voyageur@gentoo.org> -wmfire-1.2.4.ebuild,
+ +wmfire-1.2.4-r2.ebuild, +files/wmfire-1.2.4-lastprocessor_SMP.patch:
+ Fix display for SMP systems, report and patch by wbk in bug #404323
26 Dec 2011; Markus Meier <maekke@gentoo.org> wmfire-1.2.4-r1.ebuild:
x86 stable, bug #394081
diff --git a/x11-plugins/wmfire/files/wmfire-1.2.4-lastprocessor_SMP.patch b/x11-plugins/wmfire/files/wmfire-1.2.4-lastprocessor_SMP.patch
new file mode 100644
index 000000000000..2b389fecdd68
--- /dev/null
+++ b/x11-plugins/wmfire/files/wmfire-1.2.4-lastprocessor_SMP.patch
@@ -0,0 +1,130 @@
+--- wmfire-1.2.4/src/wmfire.c.orig 2005-12-04 11:39:16.000000000 +0100
++++ wmfire-1.2.4/src/wmfire.c 2012-02-27 15:48:05.136807354 +0100
+@@ -63,6 +63,10 @@
+ #define FIRE_NET 3
+ #define FIRE_FILE 4
+
++/* wbk 20120220 - cleaning up "next cpu" logic */
++#define CPU_AV -1 /* needs to be 1st CPU - 1 */
++#define CPU_NEXT -2 /* arbitrary but must be < CPU_AV */
++
+ #define NET_SPD_PPP 56
+ #define NET_SPD_ETH 100
+
+@@ -104,7 +108,8 @@
+ int update_mem();
+ int update_net();
+ int update_file();
+-int change_cpu(int);
++void change_cpu(int);
++int more_cpus();
+ void change_flame(int);
+ GdkCursor *setup_cursor();
+ void burn_spot(int, int, int);
+@@ -130,8 +135,7 @@
+
+ int monitor = FIRE_CPU;
+ int load = 100;
+-int cpu_av = 1;
+-int cpu_id = 0;
++int cpu_id = CPU_AV; /* wbk - special value instead of separate flag */
+ int cpu_nice = 1;
+ char net_dev[16] = "ppp0";
+ int net_spd = 0;
+@@ -224,8 +228,15 @@
+ next = 0;
+
+ if (!lock) {
+- if (monitor == FIRE_CPU && change_cpu(-1))
+- monitor = FIRE_MEM;
++ if (monitor == FIRE_CPU)
++ {
++ /* First, check if we have more CPU's to monitor. If none, *
++ * move along to FIRE_MEM. Regardless, after this check, we *
++ * call change_cpu() to increment or reset CPU number. */
++ if (!more_cpus())
++ monitor = FIRE_MEM;
++ change_cpu(CPU_NEXT);
++ }
+ else if (monitor == FIRE_MEM)
+ monitor = FIRE_NET;
+ else if (monitor == FIRE_NET)
+@@ -285,7 +296,7 @@
+
+ glibtop_get_cpu(&cpu);
+
+- if (cpu_av) {
++ if (cpu_id == CPU_AV) {
+ if (cpu_nice)
+ load = cpu.user + cpu.nice + cpu.sys;
+ else
+@@ -383,30 +394,46 @@
+ /* Change CPU monitor */
+ /******************************************/
+
+-int
++void
+ change_cpu(int which)
+ {
+- glibtop_cpu cpu;
++ /* wbk 20120221 - Changed return type to void. Use more_cpus() *
++ * for tests instead. Mixing test logic with changing the CPU *
++ * was causing CPU's to be skipped in calling function. */
+
++ /* wbk - Even though we never use the cpu struct, I think this *
++ * call may be necessary to set up glibtop_global_server? */
++ glibtop_cpu cpu;
+ glibtop_get_cpu(&cpu);
+
+ /* This should work, but I have a lonely uniprocessor system */
++ /* wbk - tested with a quad core. */
+
+- if (which >= 0) {
++ if (which != CPU_NEXT) /* was run with command-line CPU specifier */
+ cpu_id = which;
+- cpu_av = 0;
+- } else {
+- cpu_id++;
+- cpu_av = 0;
+- }
++ else /* negative value "special case" for which */
++ cpu_id++;
+
+- if (cpu_id >= glibtop_global_server->ncpu || cpu_id >= GLIBTOP_NCPU) {
+- cpu_id = 0;
+- cpu_av = 1;
+- return 1;
+- }
++ /* Since we already incremented cpu_id, we are comparing a *
++ * 1-index with 0-index value essentially. But since GLIBTOP_NCPU *
++ * is 1-indexed, keep >= for it. (a bit of an oversimplification: *
++ * cpu_id is still definitely regarded as 0-indexed elsewhere. We *
++ * index an array with it later, so this is important) */
++ if (cpu_id > glibtop_global_server->ncpu || cpu_id >= GLIBTOP_NCPU)
++ cpu_id = CPU_AV;
+
+- return 0;
++ return;
++}
++
++int
++more_cpus()
++{
++ /* returns positive if next CPU would be valid, Negative if *
++ * already monitoring highest-numbered CPU or if more cores than *
++ * glibtop supports. */
++ int next_cpu = cpu_id + 1;
++ return !(next_cpu > glibtop_global_server->ncpu
++ || next_cpu >= GLIBTOP_NCPU);
+ }
+
+ /******************************************/
+@@ -494,7 +521,7 @@
+ if (proximity++ > 100) {
+
+ if (monitor == FIRE_CPU) {
+- if (cpu_av) {
++ if (cpu_id == CPU_AV) {
+ /* Horizontal bar for average cpu */
+ memset(&bm.cmap[27 * XMAX + 20], 255, 16);
+ memset(&bm.cmap[28 * XMAX + 20], 255, 16);
diff --git a/x11-plugins/wmfire/wmfire-1.2.4.ebuild b/x11-plugins/wmfire/wmfire-1.2.4-r2.ebuild
index 3d428c317fe8..60ec02426128 100644
--- a/x11-plugins/wmfire/wmfire-1.2.4.ebuild
+++ b/x11-plugins/wmfire/wmfire-1.2.4-r2.ebuild
@@ -1,8 +1,8 @@
-# Copyright 1999-2011 Gentoo Foundation
+# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/x11-plugins/wmfire/wmfire-1.2.4.ebuild,v 1.2 2011/03/28 14:43:30 nirbheek Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-plugins/wmfire/wmfire-1.2.4-r2.ebuild,v 1.1 2012/02/27 14:58:33 voyageur Exp $
-EAPI=2
+EAPI=4
inherit autotools eutils
DESCRIPTION="Load monitoring dockapp displaying dancing flame."
@@ -25,6 +25,8 @@ DEPEND="${RDEPEND}
src_prepare() {
epatch "${FILESDIR}"/${PN}-1.2.3-stringh.patch
+ epatch "${FILESDIR}"/${P}-no_display.patch
+ epatch "${FILESDIR}"/${P}-lastprocessor_SMP.patch
eautoreconf
}
@@ -35,6 +37,6 @@ src_configure() {
}
src_install() {
- emake DESTDIR="${D}" install || die
+ emake DESTDIR="${D}" install
dodoc ALL_I_GET_IS_A_GREY_BOX AUTHORS ChangeLog NEWS README
}