Bug 83900 - Focus occasionally not retained by target window
Summary: Focus occasionally not retained by target window
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Server/Input/Core (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Xorg Project Team
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-09-15 17:19 UTC by patrick keshishian
Modified: 2015-05-16 06:02 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments
Xorg.0.log (31.91 KB, text/plain)
2014-09-15 17:19 UTC, patrick keshishian
no flags Details
Focus bug workaround (1.34 KB, patch)
2015-05-09 09:59 UTC, August Karlstrom
no flags Details | Splinter Review
Add call to XSync (415 bytes, text/plain)
2015-05-14 05:37 UTC, August Karlstrom
no flags Details

Description patrick keshishian 2014-09-15 17:19:51 UTC
Created attachment 106335 [details]
Xorg.0.log

Using blackbox as WM with focus-mode set to sloppy, moving pointer from window A to window B, window B fails to retain focus occasionally.

Here is short (21sec) visual demo: http://youtu.be/gl49UBVOUog

I attempted to see what is going on using xev and an xterm window. Comparing a "good" event sequence to a "bad" one shows:

good (details below)
1. EnterNotify (mouse moved from xterm -> xev window)
2. FocusIn (xev window got focus)
3. bunch of MotionNotify events as mouse moved around
4. LeaveNotify (mouse left xev window)
5. FocusOut (mouse entered xterm window)

bad:
1. EnterNotify (mouse moved from xterm -> xev window)
2. FocusIn (xev window got focus - briefly?)
3. FocusOut (mouse still in xev window, but window w/o focus)
   XXX What happened here?
4. bunch of MotionNotify events as mouse moved around
5. LeaveNotify (mouse left xev window)


Also including a diff of two Xorg.0.log, one where this issue was not present and one when it manifested itself. I'll attach full Xorg.0.log where the issue is pesent.


DETAILS:

good (actual reported events):

EnterNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82741873, (13,137), root:(960,467),
    mode NotifyNormal, detail NotifyAncestor, same_screen YES,
    focus NO, state 0

KeymapNotify event, serial 35, synthetic NO, window 0x0,
    keys:  4294967224 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82741877, (13,137), root:(960,467),
    state 0x0, is_hint 0, same_screen YES

FocusIn event, serial 35, synthetic NO, window 0x1c00001,
    mode NotifyNormal, detail NotifyNonlinear

KeymapNotify event, serial 35, synthetic NO, window 0x0,
    keys:  4294967224 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82741889, (47,139), root:(994,469),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82741903, (72,139), root:(1019,469),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82741913, (82,139), root:(1029,469),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82741926, (84,139), root:(1031,469),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82741937, (84,139), root:(1031,469),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82742392, (79,139), root:(1026,469),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82742404, (67,138), root:(1014,468),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82742416, (41,134), root:(988,464),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82742428, (10,133), root:(957,463),
    state 0x0, is_hint 0, same_screen YES

LeaveNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82742433, (-22,131), root:(925,461),
    mode NotifyNormal, detail NotifyAncestor, same_screen YES,
    focus YES, state 0

FocusOut event, serial 35, synthetic NO, window 0x1c00001,
    mode NotifyNormal, detail NotifyNonlinear



bad (actual reported events):
EnterNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82742834, (23,139), root:(970,469),
    mode NotifyNormal, detail NotifyAncestor, same_screen YES,
    focus NO, state 0

KeymapNotify event, serial 35, synthetic NO, window 0x0,
    keys:  4294967224 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82742837, (23,139), root:(970,469),
    state 0x0, is_hint 0, same_screen YES

FocusIn event, serial 35, synthetic NO, window 0x1c00001,
    mode NotifyNormal, detail NotifyNonlinear

KeymapNotify event, serial 35, synthetic NO, window 0x0,
    keys:  4294967224 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

FocusOut event, serial 35, synthetic NO, window 0x1c00001,
    mode NotifyNormal, detail NotifyNonlinear

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82742850, (66,139), root:(1013,469),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82742862, (101,139), root:(1048,469),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82742874, (126,139), root:(1073,469),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82742886, (132,139), root:(1079,469),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82752228, (132,143), root:(1079,473),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82752240, (132,144), root:(1079,474),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82752252, (132,149), root:(1079,479),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82752264, (132,154), root:(1079,484),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82752275, (132,159), root:(1079,489),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82752288, (132,170), root:(1079,500),
    state 0x0, is_hint 0, same_screen YES

LeaveNotify event, serial 35, synthetic NO, window 0x1c00001,
    root 0x2b8, subw 0x0, time 82752294, (132,185), root:(1079,515),
    mode NotifyNormal, detail NotifyNonlinear, same_screen YES,
    focus NO, state 0


diff -up Xorg.0.log-good Xorg.0.log-bad
--- /tmp/xorg.20140321	Mon Sep 15 09:16:10 2014
+++ /tmp/xorg.20140909	Mon Sep 15 09:16:19 2014
@@ -1,20 +1,25 @@
-[  nnnn.nnn] (--) checkDevMem: using aperture driver /dev/xf86
+[  nnnn.nnn] (WW) checkDevMem: failed to open /dev/xf86 and /dev/mem
+	(Operation not permitted)
+	Check that you have set 'machdep.allowaperture=1'
+	in /etc/sysctl.conf and reboot your machine
+	refer to xf86(4) for details
+[  nnnn.nnn] 	linear framebuffer access unavailable
 [  nnnn.nnn] (--) Using wscons driver on /dev/ttyC4 in pcvt compatibility mode (version 3.32)
 [  nnnn.nnn] 
-X.Org X Server 1.14.5
-Release Date: 2013-12-12
+X.Org X Server 1.15.2
+Release Date: 2014-06-27
 [  nnnn.nnn] X Protocol Version 11, Revision 0
-[  nnnn.nnn] Build Operating System: OpenBSD 5.5 amd64 
-[  nnnn.nnn] Current Operating System: OpenBSD noir.local 5.5 GENERIC.MP#11 amd64
-[  nnnn.nnn] Build Date: 18 March 2014  08:06:40AM
+[  nnnn.nnn] Build Operating System: OpenBSD 5.6 amd64 
+[  nnnn.nnn] Current Operating System: OpenBSD noir.local 5.6 GENERIC.MP#368 amd64
+[  nnnn.nnn] Build Date: 08 September 2014  11:50:00PM
 [  nnnn.nnn]  
-[  nnnn.nnn] Current version of pixman: 0.32.4
+[  nnnn.nnn] Current version of pixman: 0.32.6
 [  nnnn.nnn] 	Before reporting problems, check http://wiki.x.org
 	to make sure that you have the latest version.
 [  nnnn.nnn] Markers: (--) probed, (**) from config file, (==) default setting,
 	(++) from command line, (!!) notice, (II) informational,
 	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
-[  nnnn.nnn] (==) Log file: "/var/log/Xorg.0.log", Time: Fri Mar 21 17:20:25 2014
+[  nnnn.nnn] (==) Log file: "/var/log/Xorg.0.log", Time: Fri Sep 12 21:05:27 2014
 [  nnnn.nnn] (==) Using config file: "/etc/X11/xorg.conf"
 [  nnnn.nnn] (==) Using system config directory "/usr/X11R6/share/X11/xorg.conf.d"
 [  nnnn.nnn] (==) ServerLayout "Layout0"
@@ -29,12 +34,11 @@ Release Date: 2013-12-12
 [  nnnn.nnn] (==) Automatically adding devices
 [  nnnn.nnn] (==) Automatically enabling devices
 [  nnnn.nnn] (==) Not automatically adding GPU devices
-[  nnnn.nnn] (WW) The directory "/usr/local/share/ghostscript/fonts/" does not exist.
-[  nnnn.nnn] 	Entry deleted from font path.
 [  nnnn.nnn] (**) FontPath set to:
 	/usr/local/lib/X11/fonts/artwiz-aleczapka/,
 	/usr/local/lib/X11/fonts/terminus/,
 	/usr/local/lib/X11/fonts/league-fonts/,
+	/usr/local/share/ghostscript/fonts/,
 	/usr/X11R6/lib/X11/fonts/misc/,
 	/usr/X11R6/lib/X11/fonts/TTF/,
 	/usr/X11R6/lib/X11/fonts/OTF/,
@@ -44,13 +48,13 @@ Release Date: 2013-12-12
 [  nnnn.nnn] (==) ModulePath set to "/usr/X11R6/lib/modules"
 [  nnnn.nnn] (II) The server relies on wscons to provide the list of input devices.
 	If no devices become available, reconfigure wscons or disable AutoAddDevices.
-[  nnnn.nnn] (II) Loader magic: 0x1f6c51fec040
+[  nnnn.nnn] (II) Loader magic: 0xa78ede074e0
 [  nnnn.nnn] (II) Module ABI versions:
 [  nnnn.nnn] 	X.Org ANSI C Emulation: 0.4
-[  nnnn.nnn] 	X.Org Video Driver: 14.1
-[  nnnn.nnn] 	X.Org XInput driver : 19.1
-[  nnnn.nnn] 	X.Org Server Extension : 7.0
-[  nnnn.nnn] (--) PCI:*(0:0:1:0) 1002:9802:17aa:21df rev 0, Mem @ 0xe0000000/268435456, 0xf0200000/262144, I/O @ 0x00004000/256
+[  nnnn.nnn] 	X.Org Video Driver: 15.0
+[  nnnn.nnn] 	X.Org XInput driver : 20.0
+[  nnnn.nnn] 	X.Org Server Extension : 8.0
+[  nnnn.nnn] (--) PCI:*(0:0:1:0) 1002:9802:17aa:21df rev 0
 [  nnnn.nnn] Initializing built-in extension Generic Event Extension
 [  nnnn.nnn] Initializing built-in extension SHAPE
 [  nnnn.nnn] Initializing built-in extension MIT-SHM
@@ -71,6 +75,7 @@ Release Date: 2013-12-12
 [  nnnn.nnn] Initializing built-in extension DOUBLE-BUFFER
 [  nnnn.nnn] Initializing built-in extension RECORD
 [  nnnn.nnn] Initializing built-in extension DPMS
+[  nnnn.nnn] Initializing built-in extension Present
 [  nnnn.nnn] Initializing built-in extension X-Resource
 [  nnnn.nnn] Initializing built-in extension XVideo
 [  nnnn.nnn] Initializing built-in extension XVideo-MotionCompensation
@@ -81,8 +86,8 @@ Release Date: 2013-12-12
 [  nnnn.nnn] (II) LoadModule: "glx"
 [  nnnn.nnn] (II) Loading /usr/X11R6/lib/modules/extensions/libglx.so
 [  nnnn.nnn] (II) Module glx: vendor="X.Org Foundation"
-[  nnnn.nnn] 	compiled for 1.14.5, module version = 1.0.0
-[  nnnn.nnn] 	ABI class: X.Org Server Extension, version 7.0
+[  nnnn.nnn] 	compiled for 1.15.2, module version = 1.0.0
+[  nnnn.nnn] 	ABI class: X.Org Server Extension, version 8.0
 [  nnnn.nnn] (==) AIGLX enabled
 [  nnnn.nnn] Loading extension GLX
 [  nnnn.nnn] (==) Matched ati as autoconfigured driver 0
@@ -91,27 +96,27 @@ Release Date: 2013-12-12
 [  nnnn.nnn] (II) LoadModule: "ati"
 [  nnnn.nnn] (II) Loading /usr/X11R6/lib/modules/drivers/ati_drv.so
 [  nnnn.nnn] (II) Module ati: vendor="X.Org Foundation"
-[  nnnn.nnn] 	compiled for 1.14.5, module version = 7.2.0
+[  nnnn.nnn] 	compiled for 1.15.2, module version = 7.3.0
 [  nnnn.nnn] 	Module class: X.Org Video Driver
-[  nnnn.nnn] 	ABI class: X.Org Video Driver, version 14.1
+[  nnnn.nnn] 	ABI class: X.Org Video Driver, version 15.0
 [  nnnn.nnn] (II) LoadModule: "radeon"
 [  nnnn.nnn] (II) Loading /usr/X11R6/lib/modules/drivers/radeon_drv.so
 [  nnnn.nnn] (II) Module radeon: vendor="X.Org Foundation"
-[  nnnn.nnn] 	compiled for 1.14.5, module version = 7.2.0
+[  nnnn.nnn] 	compiled for 1.15.2, module version = 7.3.0
 [  nnnn.nnn] 	Module class: X.Org Video Driver
-[  nnnn.nnn] 	ABI class: X.Org Video Driver, version 14.1
+[  nnnn.nnn] 	ABI class: X.Org Video Driver, version 15.0
 [  nnnn.nnn] (II) LoadModule: "vesa"
 [  nnnn.nnn] (II) Loading /usr/X11R6/lib/modules/drivers/vesa_drv.so
 [  nnnn.nnn] (II) Module vesa: vendor="X.Org Foundation"
-[  nnnn.nnn] 	compiled for 1.14.5, module version = 2.3.3
+[  nnnn.nnn] 	compiled for 1.15.2, module version = 2.3.3
 [  nnnn.nnn] 	Module class: X.Org Video Driver
-[  nnnn.nnn] 	ABI class: X.Org Video Driver, version 14.1
+[  nnnn.nnn] 	ABI class: X.Org Video Driver, version 15.0
 [  nnnn.nnn] (II) LoadModule: "usbtablet"
 [  nnnn.nnn] (II) Loading /usr/X11R6/lib/modules/input/usbtablet_drv.so
 [  nnnn.nnn] (II) Module usbtablet: vendor="X.Org Foundation"
-[  nnnn.nnn] 	compiled for 1.14.5, module version = 1.1.0
+[  nnnn.nnn] 	compiled for 1.15.2, module version = 1.1.0
 [  nnnn.nnn] 	Module class: X.Org XInput Driver
-[  nnnn.nnn] 	ABI class: X.Org XInput driver, version 19.1
+[  nnnn.nnn] 	ABI class: X.Org XInput driver, version 20.0
 [  nnnn.nnn] (II) USB Tablet driver
 [  nnnn.nnn] (II) RADEON: Driver for ATI Radeon chipsets:
 	ATI Radeon Mobility X600 (M24) 3150 (PCIE), ATI FireMV 2400 (PCI),
@@ -297,7 +302,7 @@ Release Date: 2013-12-12
 	ATI Radeon HD 3200 Graphics, ATI Radeon 3100 Graphics,
 	ATI Radeon HD 3300 Graphics, ATI Radeon HD 3200 Graphics,
 	ATI Radeon 3000 Graphics, SUMO, SUMO, SUMO2, SUMO2, SUMO2, SUMO2,
-	SUMO, SUMO, SUMO, SUMO, SUMO, SUMO, SUMO, SUMO, ATI Radeon HD 4200,
+	SUMO, SUMO, SUMO2, SUMO, SUMO, SUMO, SUMO, SUMO, ATI Radeon HD 4200,
 	ATI Radeon 4100, ATI Mobility Radeon HD 4200,
 	ATI Mobility Radeon 4100, ATI Radeon HD 4290, ATI Radeon HD 4250,
 	AMD Radeon HD 6310 Graphics, AMD Radeon HD 6310 Graphics,
@@ -353,7 +358,11 @@ Release Date: 2013-12-12
 	HAINAN, HAINAN, HAINAN, BONAIRE, BONAIRE, BONAIRE, BONAIRE, BONAIRE,
 	BONAIRE, BONAIRE, BONAIRE, KABINI, KABINI, KABINI, KABINI, KABINI,
 	KABINI, KABINI, KABINI, KABINI, KABINI, KABINI, KABINI, KABINI,
-	KABINI, KABINI, KABINI
+	KABINI, KABINI, KABINI, KAVERI, KAVERI, KAVERI, KAVERI, KAVERI,
+	KAVERI, KAVERI, KAVERI, KAVERI, KAVERI, KAVERI, KAVERI, KAVERI,
+	KAVERI, KAVERI, KAVERI, KAVERI, KAVERI, KAVERI, KAVERI, KAVERI,
+	HAWAII, HAWAII, HAWAII, HAWAII, HAWAII, HAWAII, HAWAII, HAWAII,
+	HAWAII, HAWAII, HAWAII, HAWAII
 [  nnnn.nnn] (II) VESA: driver for VESA chipsets: vesa
 [  nnnn.nnn] (II) [KMS] Kernel modesetting enabled.
 [  nnnn.nnn] (WW) Falling back to old probe method for vesa
@@ -372,8 +381,8 @@ Release Date: 2013-12-12
 [  nnnn.nnn] (II) LoadModule: "exa"
 [  nnnn.nnn] (II) Loading /usr/X11R6/lib/modules/libexa.so
 [  nnnn.nnn] (II) Module exa: vendor="X.Org Foundation"
-[  nnnn.nnn] 	compiled for 1.14.5, module version = 2.6.0
-[  nnnn.nnn] 	ABI class: X.Org Video Driver, version 14.1
+[  nnnn.nnn] 	compiled for 1.15.2, module version = 2.6.0
+[  nnnn.nnn] 	ABI class: X.Org Video Driver, version 15.0
 [  nnnn.nnn] (II) RADEON(0): KMS Color Tiling: enabled
 [  nnnn.nnn] (II) RADEON(0): KMS Color Tiling 2D: enabled
 [  nnnn.nnn] (II) RADEON(0): KMS Pageflipping: enabled
@@ -438,7 +447,7 @@ Release Date: 2013-12-12
 [  nnnn.nnn] (II) LoadModule: "fb"
 [  nnnn.nnn] (II) Loading /usr/X11R6/lib/modules/libfb.so
 [  nnnn.nnn] (II) Module fb: vendor="X.Org Foundation"
-[  nnnn.nnn] 	compiled for 1.14.5, module version = 1.0.0
+[  nnnn.nnn] 	compiled for 1.15.2, module version = 1.0.0
 [  nnnn.nnn] 	ABI class: X.Org ANSI C Emulation, version 0.4
 [  nnnn.nnn] (II) Loading sub module "ramdac"
 [  nnnn.nnn] (II) LoadModule: "ramdac"
@@ -451,7 +460,7 @@ Release Date: 2013-12-12
 [  nnnn.nnn] (II) RADEON(0): [DRI2]   VDPAU driver: r600
 [  nnnn.nnn] (II) RADEON(0): Front buffer size: 4128K
 [  nnnn.nnn] (II) RADEON(0): VRAM usage limit set to 346118K
-[  nnnn.nnn] (==) RADEON(0): Backing store disabled
+[  nnnn.nnn] (==) RADEON(0): Backing store enabled
 [  nnnn.nnn] (II) RADEON(0): Direct rendering enabled
 [  nnnn.nnn] (II) EXA(0): Driver allocated offscreen pixmaps
 [  nnnn.nnn] (II) EXA(0): Driver registered support for the following operations:
@@ -469,11 +478,13 @@ Release Date: 2013-12-12
 [  nnnn.nnn] (II) RADEON(0): RandR 1.2 enabled, ignore the following RandR disabled message.
 [  nnnn.nnn] (--) RandR disabled
 [  nnnn.nnn] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer
-[  nnnn.nnn] (II) AIGLX: enabled GLX_INTEL_swap_event
 [  nnnn.nnn] (II) AIGLX: enabled GLX_ARB_create_context
 [  nnnn.nnn] (II) AIGLX: enabled GLX_ARB_create_context_profile
 [  nnnn.nnn] (II) AIGLX: enabled GLX_EXT_create_context_es2_profile
+[  nnnn.nnn] (II) AIGLX: enabled GLX_INTEL_swap_event
 [  nnnn.nnn] (II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control
+[  nnnn.nnn] (II) AIGLX: enabled GLX_EXT_framebuffer_sRGB
+[  nnnn.nnn] (II) AIGLX: enabled GLX_ARB_fbconfig_float
 [  nnnn.nnn] (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects
 [  nnnn.nnn] (II) AIGLX: Loaded and initialized r600
 [  nnnn.nnn] (II) GLX: Initialized DRI2 GL provider for screen 0
@@ -499,9 +510,9 @@ Release Date: 2013-12-12
 [  nnnn.nnn] (II) LoadModule: "kbd"
 [  nnnn.nnn] (II) Loading /usr/X11R6/lib/modules/input/kbd_drv.so
 [  nnnn.nnn] (II) Module kbd: vendor="X.Org Foundation"
-[  nnnn.nnn] 	compiled for 1.14.5, module version = 1.8.0
+[  nnnn.nnn] 	compiled for 1.15.2, module version = 1.8.0
 [  nnnn.nnn] 	Module class: X.Org XInput Driver
-[  nnnn.nnn] 	ABI class: X.Org XInput driver, version 19.1
+[  nnnn.nnn] 	ABI class: X.Org XInput driver, version 20.0
 [  nnnn.nnn] (II) Using input driver 'kbd' for '/dev/wskbd'
 [  nnnn.nnn] (**) /dev/wskbd: always reports core events
 [  nnnn.nnn] (**) /dev/wskbd: always reports core events
@@ -515,9 +526,9 @@ Release Date: 2013-12-12
 [  nnnn.nnn] (II) LoadModule: "synaptics"
 [  nnnn.nnn] (II) Loading /usr/X11R6/lib/modules/input/synaptics_drv.so
 [  nnnn.nnn] (II) Module synaptics: vendor="X.Org Foundation"
-[  nnnn.nnn] 	compiled for 1.14.5, module version = 1.7.1
+[  nnnn.nnn] 	compiled for 1.15.2, module version = 1.8.0
 [  nnnn.nnn] 	Module class: X.Org XInput Driver
-[  nnnn.nnn] 	ABI class: X.Org XInput driver, version 19.1
+[  nnnn.nnn] 	ABI class: X.Org XInput driver, version 20.0
 [  nnnn.nnn] (II) Using input driver 'synaptics' for '/dev/wsmouse0'
 [  nnnn.nnn] (**) /dev/wsmouse0: always reports core events
 [  nnnn.nnn] (**) Option "Device" "/dev/wsmouse0"
@@ -536,9 +547,9 @@ Release Date: 2013-12-12
 [  nnnn.nnn] (II) LoadModule: "ws"
 [  nnnn.nnn] (II) Loading /usr/X11R6/lib/modules/input/ws_drv.so
 [  nnnn.nnn] (II) Module ws: vendor="X.Org Foundation"
-[  nnnn.nnn] 	compiled for 1.14.5, module version = 1.3.0
+[  nnnn.nnn] 	compiled for 1.15.2, module version = 1.3.0
 [  nnnn.nnn] 	Module class: X.Org XInput Driver
-[  nnnn.nnn] 	ABI class: X.Org XInput driver, version 19.1
+[  nnnn.nnn] 	ABI class: X.Org XInput driver, version 20.0
 [  nnnn.nnn] (II) Using input driver 'ws' for '/dev/wsmouse'
 [  nnnn.nnn] (**) /dev/wsmouse: always reports core events
 [  nnnn.nnn] (II) ws: /dev/wsmouse: debuglevel 0
@@ -553,136 +564,6 @@ Release Date: 2013-12-12
 [  nnnn.nnn] (==) ws: /dev/wsmouse: Buttons: 7
 [  nnnn.nnn] (**) ws: /dev/wsmouse: YAxisMapping: buttons 4 and 5
 [  nnnn.nnn] (II) XINPUT: Adding extended input device "/dev/wsmouse" (type: MOUSE, id 8)
-[  nnnn.nnn] (**) /dev/wsmouse: (accel) keeping acceleration scheme 1
-[  nnnn.nnn] (**) /dev/wsmouse: (accel) acceleration profile 0
-[  nnnn.nnn] (**) /dev/wsmouse: (accel) acceleration factor: 2.000
-[  nnnn.nnn] (**) /dev/wsmouse: (accel) acceleration threshold: 4
-[  nnnn.nnn] (II) UnloadModule: "ws"
-[  nnnn.nnn] (II) UnloadModule: "synaptics"
-[  nnnn.nnn] (II) UnloadModule: "kbd"
-[  nnnn.nnn] 10 XSELINUXs still allocated at reset
-[  nnnn.nnn] SCREEN: 0 objects of 360 bytes = 0 total bytes 0 private allocs
-[  nnnn.nnn] DEVICE: 0 objects of 96 bytes = 0 total bytes 0 private allocs
-[  nnnn.nnn] CLIENT: 0 objects of 216 bytes = 0 total bytes 0 private allocs
-[  nnnn.nnn] WINDOW: 0 objects of 56 bytes = 0 total bytes 0 private allocs
-[  nnnn.nnn] PIXMAP: 3 objects of 24 bytes = 72 total bytes 0 private allocs
-[  nnnn.nnn] GC: 4 objects of 16 bytes = 64 total bytes 0 private allocs
-[  nnnn.nnn] CURSOR: 1 objects of 8 bytes = 8 total bytes 0 private allocs
-[  nnnn.nnn] DBE_WINDOW: 0 objects of 24 bytes = 0 total bytes 0 private allocs
-[  nnnn.nnn] TOTAL: 8 objects, 144 bytes, 0 allocs
-[  nnnn.nnn] 1 SELECTIONs still allocated at reset
-[  nnnn.nnn] WINDOW: 0 objects of 56 bytes = 0 total bytes 0 private allocs
-[  nnnn.nnn] PIXMAP: 3 objects of 24 bytes = 72 total bytes 0 private allocs
-[  nnnn.nnn] GC: 4 objects of 16 bytes = 64 total bytes 0 private allocs
-[  nnnn.nnn] CURSOR: 1 objects of 8 bytes = 8 total bytes 0 private allocs
-[  nnnn.nnn] DBE_WINDOW: 0 objects of 24 bytes = 0 total bytes 0 private allocs
-[  nnnn.nnn] TOTAL: 8 objects, 144 bytes, 0 allocs
-[  nnnn.nnn] 3 PIXMAPs still allocated at reset
-[  nnnn.nnn] PIXMAP: 3 objects of 24 bytes = 72 total bytes 0 private allocs
-[  nnnn.nnn] GC: 4 objects of 16 bytes = 64 total bytes 0 private allocs
-[  nnnn.nnn] CURSOR: 1 objects of 8 bytes = 8 total bytes 0 private allocs
-[  nnnn.nnn] DBE_WINDOW: 0 objects of 24 bytes = 0 total bytes 0 private allocs
-[  nnnn.nnn] TOTAL: 8 objects, 144 bytes, 0 allocs
-[  nnnn.nnn] 4 GCs still allocated at reset
-[  nnnn.nnn] GC: 4 objects of 16 bytes = 64 total bytes 0 private allocs
-[  nnnn.nnn] CURSOR: 1 objects of 8 bytes = 8 total bytes 0 private allocs
-[  nnnn.nnn] DBE_WINDOW: 0 objects of 24 bytes = 0 total bytes 0 private allocs
-[  nnnn.nnn] TOTAL: 5 objects, 72 bytes, 0 allocs
-[  nnnn.nnn] 1 CURSORs still allocated at reset
-[  nnnn.nnn] CURSOR: 1 objects of 8 bytes = 8 total bytes 0 private allocs
-[  nnnn.nnn] DBE_WINDOW: 0 objects of 24 bytes = 0 total bytes 0 private allocs
-[  nnnn.nnn] TOTAL: 1 objects, 8 bytes, 0 allocs
-[  nnnn.nnn] 1 CURSOR_BITSs still allocated at reset
-[  nnnn.nnn] DBE_WINDOW: 0 objects of 24 bytes = 0 total bytes 0 private allocs
-[  nnnn.nnn] TOTAL: 0 objects, 0 bytes, 0 allocs
-[  nnnn.nnn] 2 DAMAGEs still allocated at reset
-[  nnnn.nnn] TOTAL: 0 objects, 0 bytes, 0 allocs
-[  nnnn.nnn] 1 PICTUREs still allocated at reset
-[  nnnn.nnn] TOTAL: 0 objects, 0 bytes, 0 allocs
-[  nnnn.nnn] (II) APM registered successfully
-[  nnnn.nnn] (II) RADEON(0): [DRI2] Setup complete
-[  nnnn.nnn] (II) RADEON(0): [DRI2]   DRI driver: r600
-[  nnnn.nnn] (II) RADEON(0): [DRI2]   VDPAU driver: r600
-[  nnnn.nnn] (II) RADEON(0): Front buffer size: 4128K
-[  nnnn.nnn] (II) RADEON(0): VRAM usage limit set to 346118K
-[  nnnn.nnn] (II) RADEON(0): Direct rendering enabled
-[  nnnn.nnn] (II) EXA(0): Driver allocated offscreen pixmaps
-[  nnnn.nnn] (II) EXA(0): Driver registered support for the following operations:
-[  nnnn.nnn] (II)         Solid
-[  nnnn.nnn] (II)         Copy
-[  nnnn.nnn] (II)         Composite (RENDER acceleration)
-[  nnnn.nnn] (II)         UploadToScreen
-[  nnnn.nnn] (II)         DownloadFromScreen
-[  nnnn.nnn] (II) RADEON(0): Acceleration enabled
-[  nnnn.nnn] (==) RADEON(0): DPMS enabled
-[  nnnn.nnn] (II) RADEON(0): Set up textured video
-[  nnnn.nnn] (II) RADEON(0): [XvMC] Associated with Radeon Textured Video.
-[  nnnn.nnn] (II) RADEON(0): [XvMC] Extension initialized.
-[  nnnn.nnn] (II) RADEON(0): RandR 1.2 enabled, ignore the following RandR disabled message.
-[  nnnn.nnn] (--) RandR disabled
-[  nnnn.nnn] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer
-[  nnnn.nnn] (II) AIGLX: enabled GLX_INTEL_swap_event
-[  nnnn.nnn] (II) AIGLX: enabled GLX_ARB_create_context
-[  nnnn.nnn] (II) AIGLX: enabled GLX_ARB_create_context_profile
-[  nnnn.nnn] (II) AIGLX: enabled GLX_EXT_create_context_es2_profile
-[  nnnn.nnn] (II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control
-[  nnnn.nnn] (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects
-[  nnnn.nnn] (II) AIGLX: Loaded and initialized r600
-[  nnnn.nnn] (II) GLX: Initialized DRI2 GL provider for screen 0
-[  nnnn.nnn] (II) RADEON(0): Setting screen physical size to 361 x 203
-[  nnnn.nnn] (II) Using input driver 'usbtablet' for 'w_stylus'
-[  nnnn.nnn] (**) Option "SendCoreEvents"
-[  nnnn.nnn] (**) w_stylus: always reports core events
-[  nnnn.nnn] (**) Stylus: always reports core events
-[  nnnn.nnn] (**) Stylus device is /dev/uhid0
-[  nnnn.nnn] (**) Stylus is in absolute mode
-[  nnnn.nnn] (==) Stylus: threshold = 5
-[  nnnn.nnn] (==) Stylus: suppress = 2
-[  nnnn.nnn] (**) Option "Device" "/dev/uhid0"
-[  nnnn.nnn] (EE) xf86OpenSerial: Cannot open device /dev/uhid0
-	Device not configured.
-[  nnnn.nnn] (EE) Error opening /dev/uhid0: Device not configured
-[  nnnn.nnn] (EE) Couldn't init device "Stylus"
-[  nnnn.nnn] (II) UnloadModule: "usbtablet"
-[  nnnn.nnn] (II) config/wscons: checking input device /dev/wskbd
-[  nnnn.nnn] (II) wskbd: using layout us
-[  nnnn.nnn] (II) wskbd: using option ctrl:swapcaps
-[  nnnn.nnn] (II) Using input driver 'kbd' for '/dev/wskbd'
-[  nnnn.nnn] (**) /dev/wskbd: always reports core events
-[  nnnn.nnn] (**) /dev/wskbd: always reports core events
-[  nnnn.nnn] (**) Option "Protocol" "standard"
-[  nnnn.nnn] (**) Option "XkbRules" "base"
-[  nnnn.nnn] (**) Option "XkbModel" "pc105"
-[  nnnn.nnn] (**) Option "XkbLayout" "us"
-[  nnnn.nnn] (**) Option "XkbOptions" "ctrl:swapcaps"
-[  nnnn.nnn] (II) config/wscons: checking input device /dev/wsmouse0
-[  nnnn.nnn] (II) Using input driver 'synaptics' for '/dev/wsmouse0'
-[  nnnn.nnn] (**) /dev/wsmouse0: always reports core events
-[  nnnn.nnn] (**) Option "Device" "/dev/wsmouse0"
-[  nnnn.nnn] (--) synaptics: /dev/wsmouse0: x-axis range 1472 - 5884 resolution 74
-[  nnnn.nnn] (--) synaptics: /dev/wsmouse0: y-axis range 1408 - 5402 resolution 174
-[  nnnn.nnn] (**) /dev/wsmouse0: always reports core events
-[  nnnn.nnn] (**) synaptics: /dev/wsmouse0: (accel) MinSpeed is now constant deceleration 2.5
-[  nnnn.nnn] (**) synaptics: /dev/wsmouse0: (accel) MaxSpeed is now 1.75
-[  nnnn.nnn] (**) synaptics: /dev/wsmouse0: (accel) AccelFactor is now 0.034
-[  nnnn.nnn] (**) /dev/wsmouse0: (accel) keeping acceleration scheme 1
-[  nnnn.nnn] (**) /dev/wsmouse0: (accel) acceleration profile 1
-[  nnnn.nnn] (**) /dev/wsmouse0: (accel) acceleration factor: 2.000
-[  nnnn.nnn] (**) /dev/wsmouse0: (accel) acceleration threshold: 4
-[  nnnn.nnn] (II) config/wscons: checking input device /dev/wsmouse
-[  nnnn.nnn] (II) Using input driver 'ws' for '/dev/wsmouse'
-[  nnnn.nnn] (**) /dev/wsmouse: always reports core events
-[  nnnn.nnn] (II) ws: /dev/wsmouse: debuglevel 0
-[  nnnn.nnn] (**) Option "Device" "/dev/wsmouse"
-[  nnnn.nnn] (**) ws: /dev/wsmouse: ZAxisMapping: buttons 4 and 5
-[  nnnn.nnn] (**) ws: /dev/wsmouse: WAxisMapping: buttons 6 and 7
-[  nnnn.nnn] (**) ws: /dev/wsmouse: associated screen: 0
-[  nnnn.nnn] (II) ws: /dev/wsmouse: minimum x position: 0
-[  nnnn.nnn] (II) ws: /dev/wsmouse: maximum x position: 1365
-[  nnnn.nnn] (II) ws: /dev/wsmouse: minimum y position: 0
-[  nnnn.nnn] (II) ws: /dev/wsmouse: maximum y position: 767
-[  nnnn.nnn] (==) ws: /dev/wsmouse: Buttons: 7
-[  nnnn.nnn] (**) ws: /dev/wsmouse: YAxisMapping: buttons 4 and 5
 [  nnnn.nnn] (**) /dev/wsmouse: (accel) keeping acceleration scheme 1
 [  nnnn.nnn] (**) /dev/wsmouse: (accel) acceleration profile 0
 [  nnnn.nnn] (**) /dev/wsmouse: (accel) acceleration factor: 2.000
Comment 1 patrick keshishian 2014-09-16 01:38:43 UTC
I dug some more in the blackbox source and I believe the issue
with it calling XSetInputFocus() with a "stale" time. I am
unable to reproduce the issue with the following change:

--- Window.cc.orig	Mon Sep 15 18:35:18 2014
+++ Window.cc	Mon Sep 15 18:35:33 2014
@@ -2194,7 +2194,7 @@ bool BlackboxWindow::setInputFocus(void) {
   }
 
   XSetInputFocus(blackbox->XDisplay(), client.window,
-                 RevertToPointerRoot, blackbox->XTime());
+                 RevertToPointerRoot, CurrentTime);
 
   if (client.wmprotocols.wm_take_focus) {
     XEvent ce;


Sorry for the noise.

However, I'm very curious as to what change in the Xorg server
caused this bug to manifest itself.

--patrick
Comment 2 August Karlstrom 2015-05-07 15:22:59 UTC
I use Blackbox 0.70.1 in Debian 8 (stable) and I'm experiencing the same bug (although I use "click to focus"). I tried your patch but unfortunately it didn't make a difference - every now and then Blackbox::process_event in blackbox.cc still receives an extra FocusOut event for the newly focused window. However, this only happens when I switch window focus with the mouse; I have never had this issue using the keyboard and bbkeys. Also it never happened in Debian 7.

I don't know if it is a manifestation of the same bug but quite often newly created windows, like launched applications and dialog windows also don't get focus.

Any clues?
Comment 3 patrick keshishian 2015-05-07 18:40:40 UTC
(In reply to August Karlstrom from comment #2)
> I use Blackbox 0.70.1 in Debian 8 (stable) and I'm experiencing the same bug
> (although I use "click to focus"). I tried your patch but unfortunately it
> didn't make a difference - every now and then Blackbox::process_event in
> blackbox.cc still receives an extra FocusOut event for the newly focused
> window. However, this only happens when I switch window focus with the
> mouse; I have never had this issue using the keyboard and bbkeys. Also it
> never happened in Debian 7.

I can confirm that with "Click to Focus" model, the issue is reproducible.

Interesting thing to note is, if my CPU is busy, the issue does not
manifest itself. e.g., while compiling blackbox sources I was unable
to reproduce the issue.

> I don't know if it is a manifestation of the same bug but quite often newly
> created windows, like launched applications and dialog windows also don't
> get focus.

I have seen this as well, but not very often.

> Any clues?

Unfortunately no. I suspect some sort of timing issue.

It would be great if someone from the X11 community could/would
provide hints as where to start to look.
Comment 4 August Karlstrom 2015-05-09 09:58:30 UTC
I have tried to work around the problem by discarding "focus out" events that are too close in time to previous "focus in" events. Unfortunately it doesn't work as expected; windows that should lose their focus sometimes don't. Can you spot any error in the provided diff (blackbox-0.70.1.diff)?
Comment 5 August Karlstrom 2015-05-09 09:59:26 UTC
Created attachment 115655 [details] [review]
Focus bug workaround
Comment 6 patrick keshishian 2015-05-09 20:47:01 UTC
(In reply to August Karlstrom from comment #4)
> I have tried to work around the problem by discarding "focus out" events
> that are too close in time to previous "focus in" events. Unfortunately it
> doesn't work as expected; windows that should lose their focus sometimes
> don't. Can you spot any error in the provided diff (blackbox-0.70.1.diff)?

Hi,

One problem I see is that entries are never removed from the map.
Windows long gone will remain, and consume (read: leak) memory.


I had played with another approach to ignore similar events,
with similar results, if by "windows that should lose their focus
sometimes don't" you mean their frames remain "highlighted".


Anyway ... here is what I see happening. There is a no_focus_window
in BScreen class, which is given focus to during FocusOut event,
by setFocusedWindow(0).


Window A (e.g., xterm) has focus, you click on Window B (e.g., xcalc)
on ButtonPress the BlackboxWindow::buttonPressHandler() is called and
setInputFocus() method called, and it calls XSetInputFocus().

This will generate FocusOut for Window A and FocusIn for its Window (B),
which Blackbox::process_event() will process as follows:

1. First it gets FocusOut for Window A.
   It looks to see if there are any pending FocusIn events and if
   so calls process_event recursively to process it. If focus has
   has been given to a "known window" (see comment at end of FocusIn
   case), no_focus is set to false, and things are fine.

   If FOCUS_DEBUG is enabled you'll see output as such:

FocusOut: window   e0016a mode Normal detail NonlinearVirtual
FocusIn : window   e00133 mode Normal detail NonlinearVirtual
          win 0x12fb52ecf400 got focus
          win 0x12fb75542000 lost focus

   and we are done.


   However, if no FocusIn events are pending, the FocusOut case
   will call setFocusedWindow(0) which calls XSetInputFocus() with
   active_screen->noFocusWindow() argument (the no_focus_window).

   FOCUS_DEBUG output (with one printf()s added by myself):

FocusOut: window   e0016a mode Normal detail NonlinearVirtual
          window  2200383 has focus.
          win 0x12fb75542000 lost focus
          no window has focus

In the latter case, the FocusIn event for Window B comes in a
bit later:

2. FocusIn event for Window B.

FocusIn : window   e00133 mode Normal detail NonlinearVirtual
          win 0x12fb52ecf400 got focus

Followed by:

3. FocusOut event for Window B generated by no_focus_window's
   XSetInputFocus() call in step 1 when no pending FocusIn events
   are found during FocusOut processing for Window A.

FocusOut: window   e00133 mode Normal detail NonlinearVirtual
          window   e0001e has focus (no_focus_window).
          win 0x12fb52ecf400 lost focus
          no window has focus


For some reason if I get the CPU busy (e.g., compiling), I don't seem
to hit the "bad case". The FocusOut events always find a FocusIn event
in the queue, and things work normally. But if the CPU is not so busy,
the bad case is hit often.



Now, I am not sure of the need for no_focus_window and it getting focus
as is done in Blackbox; I am not familiar with WM design concepts enough.
However, if I comment out the bit in src/blackbox.cc where XSetInputFocus()
is called with the no_focus_window argument, I can't reproduce this
issue.


$ diff -up src/blackbox.cc{.orig,}
--- src/blackbox.cc.orig        Tue Oct 18 04:33:25 2005
+++ src/blackbox.cc     Sat May  9 12:30:21 2015
@@ -536,8 +536,8 @@ void Blackbox::setFocusedWindow(BlackboxWindow *win) {
     // nothing has focus
     focused_window = 0;
     assert(active_screen != 0);
-    XSetInputFocus(XDisplay(), active_screen->noFocusWindow(),
-                   RevertToPointerRoot, XTime());
+//    XSetInputFocus(XDisplay(), active_screen->noFocusWindow(),
+//                   RevertToPointerRoot, XTime());
   }
 
   updateActiveWindow();


(I'll attach this diff so you may test it).

That said, I haven't ran with this long enough to know if it has any
adverse effects.

Please let me know if it works for you, or if it causes other issues.
Comment 7 August Karlstrom 2015-05-10 08:36:27 UTC
(In reply to patrick keshishian from comment #6)
> One problem I see is that entries are never removed from the map.
> Windows long gone will remain, and consume (read: leak) memory.

Correct.
 
> I had played with another approach to ignore similar events,
> with similar results, if by "windows that should lose their focus
> sometimes don't" you mean their frames remain "highlighted".

Yes, exactly.

> Anyway ... here is what I see happening.
[...]
> $ diff -up src/blackbox.cc{.orig,}
> --- src/blackbox.cc.orig        Tue Oct 18 04:33:25 2005
> +++ src/blackbox.cc     Sat May  9 12:30:21 2015
> @@ -536,8 +536,8 @@ void Blackbox::setFocusedWindow(BlackboxWindow *win) {
>      // nothing has focus
>      focused_window = 0;
>      assert(active_screen != 0);
> -    XSetInputFocus(XDisplay(), active_screen->noFocusWindow(),
> -                   RevertToPointerRoot, XTime());
> +//    XSetInputFocus(XDisplay(), active_screen->noFocusWindow(),
> +//                   RevertToPointerRoot, XTime());
>    }
>  
>    updateActiveWindow();

This looks very promising. After applying your patch with the call to XSetInputFocus removed I haven't been able reproduce the bug. Also, new windows and fullscreen video gets proper focus as well :-) Thanks a lot, Patrick! This is/was a very annoying bug.
Comment 8 August Karlstrom 2015-05-11 06:21:36 UTC
(In reply to patrick keshishian from comment #6)
> Please let me know if it works for you, or if it causes other issues.

As none of us can reproduce the bug with your patch applied I (re)set the status to Resolved.
Comment 9 patrick keshishian 2015-05-11 17:12:18 UTC
(In reply to August Karlstrom from comment #8)
> (In reply to patrick keshishian from comment #6)
> > Please let me know if it works for you, or if it causes other issues.
> 
> As none of us can reproduce the bug with your patch applied I (re)set the
> status to Resolved.

Thanks for the update. Glad to see it working.

And thanks for freedesktop.org/Xorg for hosting this bug :-)
Comment 10 August Karlstrom 2015-05-14 05:36:24 UTC
Brian Bidulock, who maintains a fork of Blackbox at https://github.com/bbidulock/blackboxwm, seems to have found the proper fix to this bug: Add a call to XSync before XCheckIfEvent is called in src/blackbox.cc. Does this patch work for you, Patrick?
Comment 11 August Karlstrom 2015-05-14 05:37:40 UTC
Created attachment 115761 [details]
Add call to XSync
Comment 12 patrick keshishian 2015-05-16 03:00:38 UTC
(In reply to August Karlstrom from comment #10)
> Brian Bidulock, who maintains a fork of Blackbox at
> https://github.com/bbidulock/blackboxwm, seems to have found the proper fix
> to this bug: Add a call to XSync before XCheckIfEvent is called in
> src/blackbox.cc. Does this patch work for you, Patrick?

Sorry for the delay.

Yes. Adding the XSync() call does seem to fix the issue as well.

Thanks for showing me a maintained version of the blackbox WM. I
was not aware of this project.
Comment 13 August Karlstrom 2015-05-16 06:02:25 UTC
(In reply to patrick keshishian from comment #12)
> (In reply to August Karlstrom from comment #10)
> > Brian Bidulock, who maintains a fork of Blackbox at
> > https://github.com/bbidulock/blackboxwm, seems to have found the proper fix
> > to this bug
[...]
> Thanks for showing me a maintained version of the blackbox WM. I
> was not aware of this project.

And for Debian users:

http://anonscm.debian.org/cgit/collab-maint/blackbox.git/

I have contacted Herbert Parentes Fortes Neto to get the patch into the repository.


-- August


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.