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;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to