My findings about this bug, so far: The problem is that there's a mouse grab by compiz at some point, that is caused by the XGrabButton call in updatePassiveButtonGrabs in window.cpp: [...] else { /* Grab all buttons */ XGrabButton (screen->dpy (), AnyButton, AnyModifier, serverFrame, false, ButtonPressMask | ButtonReleaseMask | ButtonMotionMask, GrabModeSync, GrabModeAsync, None, None); [...]
(I verified that this by replacing the default mouse pointer shape with the XC_pirate: when the bug occured the pointer changed to a pirate head.) This grab is used by compiz for windows that don't have the focus: when the user clicks inside a window, compiz grabs the mouse so that the mouse events are handled by compiz and not by the window. That's useful in case someone needs to raise a window by clicking on it as opposed to clicking on its frame for example. The XGrabButton uses the GrabModeSync. According to the XGrabPointer manpage: if the pointer mode is GrabModeSync the state of the pointer, as seen by client applications, appears to freeze, and the X server generates no further pointer events until the grabbing client calls XAllowEvents or until the pointer grab is released. Actual pointer changes are not lost while the pointer is frozen; they are simply queued in the server for later processing. (that's why we can't click anywhere after this grab occurs) I believe that a race condition related to the grabs/ungrabs is triggered here and it's difficult to be found because the passive grab is initiated by the xserver when the conditions set by the XGrabButton call are satisfied, so backtraces are not really helpful. -- You received this bug notification because you are a member of DX Packages, which is subscribed to unity in Ubuntu. Matching subscriptions: dx-packages https://bugs.launchpad.net/bugs/1310518 Title: Touch screen and touchpad lost click function after quickly tapped dash home repeatly by touch screen Status in OEM Priority Project: Triaged Status in OEM Priority Project precise series: New Status in OEM Priority Project trusty series: New Status in Unity: Triaged Status in Unity 7.2 series: Triaged Status in “unity” package in Ubuntu: Triaged Bug description: Touch screen and touchpad lost click function after quickly tapped dash home repeatly by touch screen, Installed 14.04, still have same issue. Quickly tapped dash home more than three times by touch screen.Found touch screen and touchpad lost click function. Note: 1.When this issue occured, cursor still can be moved by touch screen/touchpad. 2.When this issue occured ,click/double click by touch screen/touchpad,left click/right click by touchpad all were not workable. Steps to Reproduce: 1.install 12.04.4 image or 14.04 image, boot into Ubuntu OS. 2.Quickly tapped dash home more than three times by touch screen. 3.Found touch screen and touchpad lost click function. This bug is reported from private OEM project, also check https://launchpad.net/bugs/1297067 ====== using xinput --query-state can actually see the button press event ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ syntp id=6 [slave pointer (2)] ⎜ ↳ ELAN Touchscreen id=11 [slave pointer (2)] #xinput --query-state 11 2 classes : ButtonClass button[1]=up button[2]=up button[3]=up button[4]=up button[5]=up ValuatorClass Mode=Absolute Proximity=In valuator[0]=398 valuator[1]=1652 valuator[2]=5 valuator[3]=3 valuator[4]=0 valuator[5]=399 valuator[6]=1653 #xinput --query-state 6 2 classes : ButtonClass button[1]=down button[2]=up button[3]=up button[4]=up button[5]=up button[6]=up button[7]=up button[8]=up ValuatorClass Mode=Relative Proximity=In valuator[0]=1 valuator[1]=394 touchpad's button and touchpanel's valuator[2] and valuator[3] will changed after we press the button (or monitor) Also I found press "super" on keyboard will recover the touchscreen/touchpad loss. ProblemType: Bug DistroRelease: Ubuntu 12.04 Package: unity 5.20.0-0ubuntu3 ProcVersionSignature: Ubuntu 3.11.0-18.32~precise1-generic 3.11.10.4 Uname: Linux 3.11.0-18-generic x86_64 ApportVersion: 2.0.1-0ubuntu17.6 Architecture: amd64 CompizPlugins: [core,commands,composite,opengl,compiztoolbox,decor,vpswitch,snap,mousepoll,resize,place,move,wall,grid,regex,imgpng,session,gnomecompat,animation,fade,unitymtgrabhandles,workarounds,scale,expo,ezoom,unityshell] Date: Mon Apr 21 16:50:04 2014 DistributionChannelDescriptor: # This is a distribution channel descriptor # For more information see http://wiki.ubuntu.com/DistributionChannelDescriptor canonical-oem-stella-daan2-precise-amd64-20140416-1 InstallationMedia: Ubuntu 12.04 "Precise" - Failed to find casper uuid.conf in 'binary/casper/initrd.img-3.11.0-18-generic.old-dkms' LIVE Binary 20140416-06:52 MarkForUpload: True ProcEnviron: LANGUAGE=en_US: TERM=xterm PATH=(custom, no user) LANG=en_US.UTF-8 SHELL=/bin/bash SourcePackage: unity UpgradeStatus: No upgrade log present (probably fresh install) To manage notifications about this bug go to: https://bugs.launchpad.net/oem-priority/+bug/1310518/+subscriptions -- Mailing list: https://launchpad.net/~dx-packages Post to : dx-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~dx-packages More help : https://help.launchpad.net/ListHelp