涉及NetworkManger服务重启导致的崩溃修复

This commit is contained in:
jzxc95 2022-02-24 14:20:30 +08:00
parent adcf4d166f
commit 4722a53846
2 changed files with 12 additions and 13 deletions

View File

@ -144,8 +144,10 @@ void KyNetworkResourceManager::insertActiveConnections()
void KyNetworkResourceManager::removeConnection(int pos)
{
//connections signals
QString path = m_connections.at(pos)->path();
NetworkManager::Connection::Ptr conn = m_connections.takeAt(pos);
conn->disconnect(this);
emit connectionRemove(path);
}
void KyNetworkResourceManager::clearConnections()
@ -969,7 +971,6 @@ void KyNetworkResourceManager::onConnectionRemoved(QString const & path)
connectionPtr = m_connections.at(index);
if (connectionPtr->path() == path) {
removeConnection(index);
emit connectionRemove(path);
return;
}
}

View File

@ -364,21 +364,15 @@ QString KyWirelessNetResource::getDeviceIFace(NetworkManager::WirelessNetwork::P
void KyWirelessNetResource::onWifiNetworkAdded(QString devIfaceName, QString ssid)
{
NetworkManager::WirelessNetwork::Ptr wifi = nullptr;
for (auto const & net : m_networkResourceInstance->m_wifiNets) {
if (net.isNull()) {
continue;
}
NetworkManager::AccessPoint::Ptr accessPointPtr = net->referenceAccessPoint();
QByteArray rawSsid = accessPointPtr->rawSsid();
QString wifiSsid = getSsidFromByteArray(rawSsid);
if (wifiSsid == ssid && m_networkResourceInstance->findDeviceUni(net->device())->interfaceName() == devIfaceName) {
wifi = net;
}
NetworkManager::Device::Ptr dev = m_networkResourceInstance->findDeviceInterface(devIfaceName);
if (dev.isNull()) {
return;
}
NetworkManager::WirelessDevice* w_dev = qobject_cast<NetworkManager::WirelessDevice*>(dev.data());
NetworkManager::WirelessNetwork::Ptr wifi = w_dev->findNetwork(ssid);
if (wifi.isNull()) {
return;
}
@ -423,6 +417,10 @@ void KyWirelessNetResource::onWifiNetworkPropertyChange(NetworkManager::Wireless
QByteArray rawSsid = accessPointPtr->rawSsid();
QString wifiSsid = getSsidFromByteArray(rawSsid);
if (net->device().isEmpty()) {
return;
}
QString devIface = m_networkResourceInstance->findDeviceUni(net->device())->interfaceName();
if (m_WifiNetworkList.contains(devIface)) {
QList<KyWirelessNetItem>::iterator iter = m_WifiNetworkList[devIface].begin();