diff options
Diffstat (limited to 'rbutil/rbutilqt/autodetection.cpp')
-rw-r--r-- | rbutil/rbutilqt/autodetection.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/rbutil/rbutilqt/autodetection.cpp b/rbutil/rbutilqt/autodetection.cpp index 7c194c8bbf..3684d55908 100644 --- a/rbutil/rbutilqt/autodetection.cpp +++ b/rbutil/rbutilqt/autodetection.cpp @@ -172,7 +172,7 @@ bool Autodetection::detect() return true; } - if(m_mountpoint.isEmpty() && m_device.isEmpty() && m_errdev.isEmpty()) + if(m_mountpoint.isEmpty() && m_device.isEmpty() && m_errdev.isEmpty() && m_incompat.isEmpty()) return false; return true; } @@ -262,6 +262,7 @@ bool Autodetection::detectUsb() // the ini file needs to hold the IDs as hex values. QMap<int, QString> usbids = settings->usbIdMap(); QMap<int, QString> usberror = settings->usbIdErrorMap(); + QMap<int, QString> usbincompat = settings->usbIdIncompatMap(); // usb pid detection #if defined(Q_OS_LINUX) | defined(Q_OS_MACX) @@ -293,6 +294,11 @@ bool Autodetection::detectUsb() qDebug() << "detected device with problems via usb!"; return true; } + if(usbincompat.contains(id)) { + m_incompat = usbincompat.value(id); + qDebug() << "detected incompatible player variant"; + return true; + } u = u->next; } } @@ -371,6 +377,14 @@ bool Autodetection::detectUsb() qDebug() << "detected device with problems via usb!"; return true; } + if(usbincompat.contains(id)) { + m_incompat = usbincompat.value(id); + // we detected an incompatible player variant + if(buffer) free(buffer); + SetupDiDestroyDeviceInfoList(deviceInfo); + qDebug() << "detectUsb: detected incompatible variant"; + return true; + } } if(buffer) free(buffer); } |