diff options
author | Pasi Petäjäjärvi <pasi.petajajarvi@qt.io> | 2022-05-11 13:02:41 +0300 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-05-12 10:47:00 +0000 |
commit | 448e05551972647093b27a7b2b3913fadc614153 (patch) | |
tree | f46c24330f432b0d21a04294dd86c259b4a1f834 | |
parent | bab755c2237893da31aac42300ad76404315be1b (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.cpp | 27 |
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) |