From c6968c72fd237fff563166d3c15eb53f8c425c09 Mon Sep 17 00:00:00 2001 From: donghualin Date: Thu, 5 Mar 2026 21:08:30 +0800 Subject: [PATCH] fix: Fix interface not displaying in real-time after inserting wired network card MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After inserting a wired network card, the managed and interfaceFlag properties initially have values of false and None. When using the NetworkManager::findNetworkInterface method to search, the newly created Device object has not yet assigned values to the interfaceFlag and managed properties, so the system considers the device to be in an unmanaged state and does not display it to the user. The fix involves waiting for the newly created device object's property assignment to complete before proceeding. Log: Fix interface not responding after inserting network card PMS: BUG-351709 fix: 修复插入有线网卡后界面没有实时显示 在插入有线网卡后,managed和interfaceFlag属性初始值为false和None,在通过NetworkManager::findNetworkInterface方法来查找时,新生成的Device对象还没有将interfaceFlag和managed属性赋值,所以系统认为该设备是未管理状态,不会显示给用户;修改为等新创建的设备对象属性赋值完成后就可以解决问题 Log: 修复插入网卡后界面无反应 --- src/impl/networkmanager/networkmanagerprocesser.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/impl/networkmanager/networkmanagerprocesser.cpp b/src/impl/networkmanager/networkmanagerprocesser.cpp index 84052285..3929c7f9 100644 --- a/src/impl/networkmanager/networkmanagerprocesser.cpp +++ b/src/impl/networkmanager/networkmanagerprocesser.cpp @@ -324,11 +324,11 @@ void NetworkManagerProcesser::onDeviceAdded(const QString &uni) connect(currentDevice.get(), &NetworkManager::Device::interfaceFlagsChanged, currentDevice.get(), [ uni, this ] { createOrRemoveDevice(uni); - }); + }, Qt::QueuedConnection); connect(currentDevice.get(), &NetworkManager::Device::managedChanged, currentDevice.get(), [ uni, this ] { createOrRemoveDevice(uni); - }); + }, Qt::QueuedConnection); if (currentDevice->managed() && ((currentDevice->interfaceFlags() & DEVICE_INTERFACE_FLAG_UP) || currentDevice->type() == NetworkManager::Device::Wifi)) { NetworkDeviceBase *newDevice = createDevice(currentDevice);