Avoid crash if querying device that has gone away

A device removed very fast after being inserted might disappear while
we are still seting it up. We must therefore check if we indeed still
get a matching device

Task-number: QTBUG-40820
Change-Id: I4372fb1932264e5799f37cea0d016795e28ebed6
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
bb10
Allan Sandfeld Jensen 2014-08-21 15:33:09 +02:00 committed by Shawn Rutledge
parent f9de7efe60
commit 8f547c4252
1 changed files with 4 additions and 2 deletions

View File

@ -336,10 +336,12 @@ XInput2TouchDeviceData *QXcbConnection::touchDeviceForId(int id)
{
XInput2TouchDeviceData *dev = m_touchDevices[id];
if (!dev) {
int unused = 0;
int nrDevices = 0;
QTouchDevice::Capabilities caps = 0;
dev = new XInput2TouchDeviceData;
dev->xiDeviceInfo = XIQueryDevice(static_cast<Display *>(m_xlib_display), id, &unused);
dev->xiDeviceInfo = XIQueryDevice(static_cast<Display *>(m_xlib_display), id, &nrDevices);
if (nrDevices <= 0)
return 0;
int type = -1;
int maxTouchPoints = 1;
bool hasRelativeCoords = false;