unity 3d touch stops registering clicks
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
xorg-server (Ubuntu) |
Fix Released
|
High
|
Chase Douglas | ||
Precise |
Fix Released
|
High
|
Chase Douglas |
Bug Description
SRU Criteria
============
[Impact]
Touchscreen input handling is broken in many ways in the Precise X server. The issues include crashes, events sent to the wrong window, broken grabs, memory leaks, and Compiz and toolkit pop-up menu breakage.
[Upstream Fixes]
http://
All commits were developed specifically for this bug. I just kept unraveling issues until things worked properly on my touchscreen. A high level overview of the impact of the fixes:
* Crash or events sent to the wrong windows due to inappropriate casting and memory accesses:
- Check core event mask properly for pointer emulated touch events
- Only set XI2 mask if pointer emulation is for XI2 client
- Check other clients' core masks properly when adding touch listener
* Non-functional changes required for subsequent fixes:
- Split out helper function TouchListenerAc
- Rename TouchEnsureSprite to TouchBuildSprite and event type checks
* Fixes for internal touch and pointer records remaining in an open state, leading to memory leaks and potentially input locking up:
- Accept touch sequence for pointer listener after second event delivery
- When deactivating an explicit pointer grab, reject all grabs on touches
- Ensure touch is ended when last listener is rejected
* Fixes for event and server time issues, which lead to grab and ungrab requests being rejected or unhandled:
- Fix copy/paste error from before git history in UpdateCurrentTi
- Update currentTime in dispatch loop
- Replay original touch begin event instead of generated begin event
* Don't send end event to accepting client if touch hasn't physically ended:
- On touch accept, only process end event for owner if it has seen the end
* Don't prematurely end touches and deactivate implicit grabs if a touch end event is emitted in response to something other than the touch physically ending:
- End a pointer emulated touch event only on a "real" end event
- Don't deactivate implicit pointer grab on fake touch end event
* Fix toolkit pop-up menus so when you touch the menu, it opens, and then you drag to select an item before lifting the menu will receive the events:
- When activating an explicit grab, update owning listener
* Fix dragging a Compiz window by touching the title bar using a touchscreen:
- Create a new dix touch record for an emulated touch with no listeners
- Update device state including when touch record does not exist
[Development Fix]
The Q series is not open yet, so there is no development fix.
[Stable Fix]
The upstream fixes have been squashed and rebased into one patch for the Precise xorg-server. The patch has been attached.
The touch code has been completely rewritten from the prototype implementation in previous Ubuntu releases, so these changes have not been nominated for them.
[Test Cases]
* Attempt to interact with a GTK menu on a touchscreen by touching to open the menu and dragging to select items without lifting the touch in between. The items should highlight, and the selected item should activate.
* Attempt to move a window in Unity 3D by dragging the title bar with a touchscreen touch.
* Interact with various windows in Unity to raise them. This exercises grabbing code paths. Ensure all input devices continue to function properly, no crashes result, and events appear to go to the appropriate windows.
[Regression Potential]
Many patches only affect touch pointer emulation, which only affects touchscreens. The code paths modified should have no regression potential for other usages. Some of the other patches affect touch handling in general. These could impact gestures for trackpads, but traditional trackpad pointing and clicking does not go through these code paths. The server time fixes that are not touch-specific are small and merely keep the server time more up to date than it currently is. There could be a regression potential here for input device grabbing, but it is unlikely.
Original Bug Report
===================
Hi,
similar to #949791 ...
that bug made things better (i can now move windows using the touch screen) but it still often stops to react to any clicks when using touch.
I just updated.
In unity 3d (not in unity 2d nor in gnome shell) if i touch the top bar without any program running it most of the time stops to react to any clicks (both touch and clicks of the touch pad buttons). I cannot reproduce it always with the first touch but usually latest with 2 or 3.
i am not sure what happens but after something around a minute it starts to work again ..... i tried the super key to open the dash and then it suddenly worked again. I'm sorry but i can't say exactly what happens.
this happened like 2 or 3 times in this session, so maybe you see something in the logs ubuntu-bug attaches.
If you need more info i'll do my best to provide it.
ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: unity 5.8.0-0ubuntu2
ProcVersionSign
Uname: Linux 3.2.0-22-generic x86_64
.tmp.unity.
ApportVersion: 2.0-0ubuntu4
Architecture: amd64
CompizPlugins: [core,composite
CompositorRunning: compiz
Date: Fri Apr 6 08:53:14 2012
DistUpgraded: 2012-03-11 11:16:56,683 DEBUG enabling apt cron job
DistroCodename: precise
DistroVariant: ubuntu
InstallationMedia: Ubuntu 11.10 "Oneiric Ocelot" - Release amd64 (20111012)
MachineType: Acer Aspire 1825PTZ
ProcKernelCmdLine: BOOT_IMAGE=
SourcePackage: unity
UpgradeStatus: Upgraded to precise on 2012-03-11 (25 days ago)
dmi.bios.date: 04/23/2010
dmi.bios.vendor: INSYDE
dmi.bios.version: V1.3127
dmi.board.
dmi.board.name: JM12-MS-CAP
dmi.board.vendor: Acer
dmi.board.version: Base Board Version
dmi.chassis.type: 10
dmi.chassis.vendor: Chassis Manufacturer
dmi.chassis.
dmi.modalias: dmi:bvnINSYDE:
dmi.product.name: Aspire 1825PTZ
dmi.product.
dmi.sys.vendor: Acer
version.compiz: compiz 1:0.9.7.4-0ubuntu2
version.ia32-libs: ia32-libs N/A
version.libdrm2: libdrm2 2.4.32-1ubuntu1
version.
version.
version.
version.
version.
version.
version.
version.
Related branches
Changed in unity (Ubuntu): | |
assignee: | nobody → Chase Douglas (chasedouglas) |
importance: | Undecided → Medium |
affects: | unity (Ubuntu) → xorg-server (Ubuntu) |
description: | updated |
Changed in xorg-server (Ubuntu Precise): | |
status: | In Progress → Fix Committed |
tags: | added: verification-done |
There are many bugs in the touchscreen pointer emulation code. I have developed many fixes for them and sent them on to <email address hidden>. I also created one big patch for the precise xserver. I have uploaded it to ppa:chasedougla s/jupiter as xorg-server 1.11.4- 0ubuntu11~ jupiter5. Once it has built, please test it out.
Note that there appears to be a bug in gnome panel where it will no longer show the menu after tapping it. I have traced the server and found that it still does send events and receive replies from the panel, so I believe this is a bug in the panel itself rather than the server. The server is still working properly if you can interact with other objects like the desktop.