summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPasi Petäjäjärvi <pasi.petajajarvi@qt.io>2022-05-11 13:02:41 +0300
committerPasi Petäjäjärvi <pasi.petajajarvi@qt.io>2022-05-12 13:36:19 +0300
commitd40afbc3f42e4ba1873edcdfed185d11819d55a3 (patch)
tree3988e021e555f77e4f99eacf7bcdf163958eb09e
parent013e2c20d60c8588718069e04eb15b1dcad0d492 (diff)
Fix having zero initial technologies (interfaces) on device
We always expect to have at least one technology available when new technology is added via onTechnologyAdded Pick-to: 5.15 6.2 6.3 Fixes: QTBUG-102816 Change-Id: Ia4f1c0b807ea14645a27bb1bc758f8879c5c2473 Reviewed-by: <schilling@mueller-elektronik.de> Reviewed-by: Teemu Holappa <teemu.holappa@qt.io>
-rw-r--r--src/networksettings/connman/qnetworksettingsmanager_p.cpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/networksettings/connman/qnetworksettingsmanager_p.cpp b/src/networksettings/connman/qnetworksettingsmanager_p.cpp
index 9a812d1..eb2c1e7 100644
--- a/src/networksettings/connman/qnetworksettingsmanager_p.cpp
+++ b/src/networksettings/connman/qnetworksettingsmanager_p.cpp
@@ -181,20 +181,23 @@ void QNetworkSettingsManagerPrivate::onTechnologyAdded(const QDBusObjectPath &te
Q_Q(QNetworkSettingsManager);
foreach (QNetworkSettingsInterface* item, m_interfaceModel.getModel()) {
- ConnmanSettingsInterface* tech = qobject_cast<ConnmanSettingsInterface*>(item);
- if (tech->path() != technology.path()) {
- ConnmanSettingsInterface *interface = new ConnmanSettingsInterface(technology.path(), properties, this);
- interface->scanServices();
-
- if (interface->type() == QNetworkSettingsType::Wired) {
- m_interfaceModel.insert(0, interface);
- }
- else if (interface->type() == QNetworkSettingsType::Wifi) {
- m_interfaceModel.append(interface);
- }
- emit q->interfacesChanged();
+ ConnmanSettingsInterface* interface = qobject_cast<ConnmanSettingsInterface*>(item);
+ if (interface->path() == technology.path()) {
+ return; // we already know the interface/technology
}
}
+
+ ConnmanSettingsInterface *interface = new ConnmanSettingsInterface(technology.path(), properties, this);
+ interface->scanServices();
+
+ if (interface->type() == QNetworkSettingsType::Wired) {
+ m_interfaceModel.insert(0, interface);
+ }
+ else if (interface->type() == QNetworkSettingsType::Wifi) {
+ m_interfaceModel.append(interface);
+ }
+
+ emit q->interfacesChanged();
}
void QNetworkSettingsManagerPrivate::onTechnologyRemoved(const QDBusObjectPath &technology)