Subject: pkg/22897: Cleanups and a fix for a serious bug in wm/evilwm
To: None <gnats-bugs@gnats.NetBSD.org>
From: None <jonathan@perkin.org.uk>
List: netbsd-bugs
Date: 09/22/2003 19:20:17
>Number: 22897
>Category: pkg
>Synopsis: Cleanups and a fix for a serious bug in wm/evilwm
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Sep 22 19:21:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: Jonathan Perkin
>Release: 1.6.1
>Organization:
British Broadcasting Corporation
>Environment:
NetBSD batfink.intra.nut 1.6.1 NetBSD 1.6.1 (BATFINK) #1: Sun Aug 3 13:19:11 BST 2003 sketch@batfink.intra.nut:/usr/src/sys/arch/i386/compile/BATFINK i386
>Description:
When running evilwm on slower machines, there is the possibility of
losing applications from the window manager's control due to a race
condition while mapping/unmapping them during virtual window switches.
Bring in a fix from the CVS repository while the author spends more
time polishing up the next release, as it is a reproducible bug.
I've also included a couple of minor cleanups while reviewing the other
patches, mainly in the area of GCC-specific flags.
>How-To-Repeat:
Run evilwm on a slow-ish machine. Launch applications on two virtual
desktops then switch between the desktops rapidly. Application
windows will be lost from the window manager's control, requiring a
restart.
>Fix:
http://www.perkin.org.uk/projects/netbsd/evilwm-unhide.diff
Index: Makefile
===================================================================
RCS file: /cvsroot/pkgsrc/wm/evilwm/Makefile,v
retrieving revision 1.7
diff -u -r1.7 Makefile
--- Makefile 2003/09/16 19:23:34 1.7
+++ Makefile 2003/09/22 19:19:03
@@ -3,6 +3,7 @@
DISTNAME= evilwm_0.99.15.orig
PKGNAME= ${DISTNAME:S/.orig//:S/_/-/}
+PKGREVISION= 1
WRKSRC= ${WRKDIR}/${DISTNAME:S/_/-/}
CATEGORIES= wm x11
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=evilwm/}
Index: distinfo
===================================================================
RCS file: /cvsroot/pkgsrc/wm/evilwm/distinfo,v
retrieving revision 1.8
diff -u -r1.8 distinfo
--- distinfo 2003/09/16 19:17:39 1.8
+++ distinfo 2003/09/22 19:19:03
@@ -2,4 +2,5 @@
SHA1 (evilwm_0.99.15.orig.tar.gz) = ce969f1f85042c6e3247bcddf0b6c3bbb8e7dbc0
Size (evilwm_0.99.15.orig.tar.gz) = 22966 bytes
-SHA1 (patch-aa) = b7c0c569cfd1fefdd9b6da3c5139558c19d0bfca
+SHA1 (patch-aa) = 00542a6b1c0f94ea43be5d73379ec16bc369bf80
+SHA1 (patch-ab) = c514ba478a478282298d2b4e8f9f1b7422a98e38
Index: patches/patch-aa
===================================================================
RCS file: /cvsroot/pkgsrc/wm/evilwm/patches/patch-aa,v
retrieving revision 1.8
diff -u -r1.8 patch-aa
--- patches/patch-aa 2003/09/16 19:17:40 1.8
+++ patches/patch-aa 2003/09/22 19:19:03
@@ -1,7 +1,7 @@
$NetBSD: patch-aa,v 1.8 2003/09/16 19:17:40 xtraeme Exp $
---- Makefile.orig 2003-09-16 21:09:49.000000000 +0200
-+++ Makefile 2003-09-16 21:11:16.000000000 +0200
+--- Makefile.orig Fri Jun 27 11:32:14 2003
++++ Makefile Mon Sep 22 20:07:06 2003
@@ -1,11 +1,11 @@
# If you don't use CC
-CC = gcc
@@ -26,6 +26,18 @@
# To support virtual desktops, uncomment one or both of the following 2 lines.
DEFINES += -DVWM
+@@ -66,9 +66,9 @@
+ #DEFINES += -DXDEBUG # show some X calls
+
+ DEFINES += -DVERSION=\"$(version).$(revision).$(subrev)\" $(DEBIAN)
+-CFLAGS += $(INCLUDES) $(DEFINES) -Os -Wall
++CFLAGS += $(INCLUDES) $(DEFINES)
+ #CFLAGS += $(INCLUDES) $(DEFINES) -g -Wall
+-CFLAGS += -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wcast-qual -Wshadow -Waggregate-return -Wnested-externs -Winline -Wwrite-strings -Wundef
++#CFLAGS += -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wcast-qual -Wshadow -Waggregate-return -Wnested-externs -Winline -Wwrite-strings -Wundef
+ LDFLAGS += $(LDPATH) $(LIBS)
+
+ HEADERS = evilwm.h
@@ -90,9 +90,8 @@
doinstall:
--- /dev/null Mon Sep 22 20:08:42 2003
+++ patches/patch-ab Mon Sep 22 20:04:51 2003
@@ -0,0 +1,14 @@
+$NetBSD$
+
+--- screen.c.orig Mon Sep 22 20:04:18 2003
++++ screen.c Mon Sep 22 20:04:35 2003
+@@ -356,7 +356,8 @@
+ #endif
+
+ void unhide(Client *c, int raise) {
+- c->ignore_unmap = 0;
++ if (!c->ignore_unmap)
++ c->ignore_unmap = 0;
+ XMapWindow(dpy, c->window);
+ raise ? XMapRaised(dpy, c->parent) : XMapWindow(dpy, c->parent);
+ set_wm_state(c, NormalState);
>Release-Note:
>Audit-Trail:
>Unformatted: