[Bf-blender-cvs] [c9344d6c5b0] master: Fix T58776, T58030: pressure sensitivity on Linux not working for some tablets.
Brecht Van Lommel
noreply at git.blender.org
Wed Dec 5 14:04:01 CET 2018
Commit: c9344d6c5b0533629966c6baa853591f345af00a
Author: Brecht Van Lommel
Date: Wed Dec 5 13:58:38 2018 +0100
Branches: master
https://developer.blender.org/rBc9344d6c5b0533629966c6baa853591f345af00a
Fix T58776, T58030: pressure sensitivity on Linux not working for some tablets.
===================================================================
M intern/ghost/intern/GHOST_SystemX11.cpp
===================================================================
diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp
index 0c0abc95356..3befb700c55 100644
--- a/intern/ghost/intern/GHOST_SystemX11.cpp
+++ b/intern/ghost/intern/GHOST_SystemX11.cpp
@@ -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;
More information about the Bf-blender-cvs
mailing list