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: