Merge branch 'master' into blender2.8
authorBastien Montagne <montagne29@wanadoo.fr>
Wed, 5 Dec 2018 13:41:00 +0000 (14:41 +0100)
committerBastien Montagne <montagne29@wanadoo.fr>
Wed, 5 Dec 2018 13:41:00 +0000 (14:41 +0100)
build_files/build_environment/install_deps.sh
intern/ghost/intern/GHOST_SystemX11.cpp

index 6ce5fd9a8fbcb2206cc642ff8f4398b9d3941ad3..b480f4a9c4e01028e8ccf8dd7bb353868addd13e 100755 (executable)
@@ -378,7 +378,7 @@ ALEMBIC_FORCE_BUILD=false
 ALEMBIC_FORCE_REBUILD=false
 ALEMBIC_SKIP=false
 
-OPENCOLLADA_VERSION="1.6.63"
+OPENCOLLADA_VERSION="1.6.68"
 OPENCOLLADA_FORCE_BUILD=false
 OPENCOLLADA_FORCE_REBUILD=false
 OPENCOLLADA_SKIP=false
index e228a11dac2d7e612ae9403a9c127dd93a46ac86..ce056ef2c62e62b01d5989ea6a6d34a3db691513 100644 (file)
@@ -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;