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
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2018-12-05 16:41:00 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2018-12-05 16:41:00 +0300
commitfb3f1a35676e830358ec68ae8153e076253930b4 (patch)
tree41f8d33b916dcbe0cd54e87b4335cd26ae8da896 /intern/ghost
parentbe359fc6e51a98143961cb01901761d059aaacfd (diff)
parentc9344d6c5b0533629966c6baa853591f345af00a (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'intern/ghost')
-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 e228a11dac2..ce056ef2c62 100644
--- a/intern/ghost/intern/GHOST_SystemX11.cpp
+++ b/intern/ghost/intern/GHOST_SystemX11.cpp
@@ -2367,6 +2367,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");
@@ -2384,11 +2386,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;