Fix T58776, T58030: pressure sensitivity on Linux not working for some tablets.
This commit is contained in:
@@ -2269,6 +2269,8 @@ void GHOST_SystemX11::refreshXInputDevices()
|
||||
if (m_xtablet.StylusDevice != NULL) {
|
||||
/* Find how many pressure levels tablet has */
|
||||
XAnyClassPtr ici = device_info[i].inputclassinfo;
|
||||
bool found_valuator_class = false;
|
||||
|
||||
for (int j = 0; j < m_xtablet.StylusDevice->num_classes; ++j) {
|
||||
if (ici->c_class == ValuatorClass) {
|
||||
// printf("\t\tfound ValuatorClass\n");
|
||||
@@ -2286,11 +2288,23 @@ void GHOST_SystemX11::refreshXInputDevices()
|
||||
m_xtablet.YtiltLevels = 0;
|
||||
}
|
||||
|
||||
found_valuator_class = true;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
ici = (XAnyClassPtr)(((char *)ici) + ici->length);
|
||||
}
|
||||
|
||||
if (!found_valuator_class) {
|
||||
/* In case our name matching detects a device that
|
||||
* isn't actually a stylus. For example there can
|
||||
* be "XPPEN Tablet" and "XPPEN Tablet Pen", but
|
||||
* only the latter is a stylus. */
|
||||
XCloseDevice(m_display, m_xtablet.StylusDevice);
|
||||
m_xtablet.StylusDevice = NULL;
|
||||
m_xtablet.StylusID = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
m_xtablet.StylusID = 0;
|
||||
|
||||
Reference in New Issue
Block a user