Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-12-05 15:58:38 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-12-05 16:02:37 +0300
commitc9344d6c5b0533629966c6baa853591f345af00a (patch)
treefc83d7e744a4ffdecf2350cbaa36dbaf79d745c2 /intern
parente7643ee6b44d10731e10bc7aef6e4cba3de0500f (diff)
Fix T58776, T58030: pressure sensitivity on Linux not working for some tablets.
Diffstat (limited to 'intern')
-rw-r--r--intern/ghost/intern/GHOST_SystemX11.cpp14
1 files changed, 14 insertions, 0 deletions
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;