diff options
Diffstat (limited to 'src/platformsupport/devicediscovery')
-rw-r--r-- | src/platformsupport/devicediscovery/qdevicediscovery_p.h | 3 | ||||
-rw-r--r-- | src/platformsupport/devicediscovery/qdevicediscovery_udev.cpp | 12 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/platformsupport/devicediscovery/qdevicediscovery_p.h b/src/platformsupport/devicediscovery/qdevicediscovery_p.h index c78c57b86f..d9bd9a78e4 100644 --- a/src/platformsupport/devicediscovery/qdevicediscovery_p.h +++ b/src/platformsupport/devicediscovery/qdevicediscovery_p.h @@ -72,7 +72,8 @@ public: Device_Touchscreen = 0x04, Device_Keyboard = 0x08, Device_DRM = 0x10, - Device_Tablet = 0x20, + Device_DRM_PrimaryGPU = 0x20, + Device_Tablet = 0x40, Device_InputMask = Device_Mouse | Device_Touchpad | Device_Touchscreen | Device_Keyboard | Device_Tablet, Device_VideoMask = Device_DRM }; diff --git a/src/platformsupport/devicediscovery/qdevicediscovery_udev.cpp b/src/platformsupport/devicediscovery/qdevicediscovery_udev.cpp index 9e0ce47e18..ac902b4140 100644 --- a/src/platformsupport/devicediscovery/qdevicediscovery_udev.cpp +++ b/src/platformsupport/devicediscovery/qdevicediscovery_udev.cpp @@ -149,8 +149,16 @@ QStringList QDeviceDiscovery::scanConnectedDevices() QString candidate = QString::fromUtf8(udev_device_get_devnode(udevice)); if ((m_types & Device_InputMask) && candidate.startsWith(QLatin1String(QT_EVDEV_DEVICE))) devices << candidate; - if ((m_types & Device_VideoMask) && candidate.startsWith(QLatin1String(QT_DRM_DEVICE))) - devices << candidate; + if ((m_types & Device_VideoMask) && candidate.startsWith(QLatin1String(QT_DRM_DEVICE))) { + if (m_types & Device_DRM_PrimaryGPU) { + udev_device *pci = udev_device_get_parent_with_subsystem_devtype(udevice, "pci", 0); + if (pci) { + if (qstrcmp(udev_device_get_sysattr_value(pci, "boot_vga"), "1") == 0) + devices << candidate; + } + } else + devices << candidate; + } udev_device_unref(udevice); } |