xcb: Check for the presence of XInput 2.2 before selecting touch events
Change-Id: I5309f9cdaadb87e0a577a0701d2c100d29525424 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
This commit is contained in:
parent
cb95fff1c7
commit
64d7bb9f55
@ -404,11 +404,15 @@ public:
|
|||||||
void xi2Select(xcb_window_t window);
|
void xi2Select(xcb_window_t window);
|
||||||
#endif
|
#endif
|
||||||
#ifdef XCB_USE_XINPUT21
|
#ifdef XCB_USE_XINPUT21
|
||||||
bool isUsingXInput21() { return m_xi2Enabled && m_xi2Minor >= 1; }
|
bool isUsingXInput21() const { return m_xi2Enabled && m_xi2Minor >= 1; }
|
||||||
#else
|
#else
|
||||||
bool isUsingXInput21() { return false; }
|
bool isUsingXInput21() const { return false; }
|
||||||
|
#endif
|
||||||
|
#ifdef XCB_USE_XINPUT22
|
||||||
|
bool isUsingXInput22() const { return m_xi2Enabled && m_xi2Minor >= 2; }
|
||||||
|
#else
|
||||||
|
bool isUsingXInput22() const { return false; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
void sync();
|
void sync();
|
||||||
|
|
||||||
|
@ -274,6 +274,7 @@ void QXcbConnection::xi2Select(xcb_window_t window)
|
|||||||
unsigned char *xiBitMask = reinterpret_cast<unsigned char *>(&bitMask);
|
unsigned char *xiBitMask = reinterpret_cast<unsigned char *>(&bitMask);
|
||||||
|
|
||||||
#ifdef XCB_USE_XINPUT22
|
#ifdef XCB_USE_XINPUT22
|
||||||
|
if (isUsingXInput22()) {
|
||||||
bitMask |= XI_TouchBeginMask;
|
bitMask |= XI_TouchBeginMask;
|
||||||
bitMask |= XI_TouchUpdateMask;
|
bitMask |= XI_TouchUpdateMask;
|
||||||
bitMask |= XI_TouchEndMask;
|
bitMask |= XI_TouchEndMask;
|
||||||
@ -287,9 +288,10 @@ void QXcbConnection::xi2Select(xcb_window_t window)
|
|||||||
// will not synthesize mouse events. This means Qt must do it,
|
// will not synthesize mouse events. This means Qt must do it,
|
||||||
// which is also preferable, since Qt can control better when
|
// which is also preferable, since Qt can control better when
|
||||||
// to do so.
|
// to do so.
|
||||||
if (m_xi2Minor >= 2 && result == Success)
|
if (result == Success)
|
||||||
has_touch_without_mouse_emulation = true;
|
has_touch_without_mouse_emulation = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif // XCB_USE_XINPUT22
|
#endif // XCB_USE_XINPUT22
|
||||||
|
|
||||||
QSet<int> tabletDevices;
|
QSet<int> tabletDevices;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user