diff options
author | Pasi Petäjäjärvi <pasi.petajajarvi@qt.io> | 2022-05-11 13:02:41 +0300 |
---|---|---|
committer | Pasi Petäjäjärvi <pasi.petajajarvi@qt.io> | 2022-05-12 13:36:19 +0300 |
commit | d40afbc3f42e4ba1873edcdfed185d11819d55a3 (patch) | |
tree | 3988e021e555f77e4f99eacf7bcdf163958eb09e /src | |
parent | 013e2c20d60c8588718069e04eb15b1dcad0d492 (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>
Diffstat (limited to 'src')
-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) |