summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPasi Petäjäjärvi <pasi.petajajarvi@qt.io>2022-05-11 13:02:41 +0300
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-05-12 10:47:00 +0000
commit448e05551972647093b27a7b2b3913fadc614153 (patch)
treef46c24330f432b0d21a04294dd86c259b4a1f834
parentbab755c2237893da31aac42300ad76404315be1b (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 Fixes: QTBUG-102816 Change-Id: Ia4f1c0b807ea14645a27bb1bc758f8879c5c2473 Reviewed-by: <schilling@mueller-elektronik.de> Reviewed-by: Teemu Holappa <teemu.holappa@qt.io> (cherry picked from commit d40afbc3f42e4ba1873edcdfed185d11819d55a3) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-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)