From 11e59b1fce93d34b09b24456fe2d690c29a70555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Mon, 27 Sep 2021 11:04:35 +0200 Subject: [PATCH] ArchLinux tdenetworkmanager: Backport patches to resolve crash. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Slávek Banko --- arch/tde-extra/tde-tdenetworkmanager/PKGBUILD | 16 ++- .../bp000-ea2b20ed7a.diff | 78 +++++++++++ .../bp001-e4e7853030.diff | 121 ++++++++++++++++++ 3 files changed, 213 insertions(+), 2 deletions(-) create mode 100644 arch/tde-extra/tde-tdenetworkmanager/bp000-ea2b20ed7a.diff create mode 100644 arch/tde-extra/tde-tdenetworkmanager/bp001-e4e7853030.diff diff --git a/arch/tde-extra/tde-tdenetworkmanager/PKGBUILD b/arch/tde-extra/tde-tdenetworkmanager/PKGBUILD index 8fb18086e..ce1489353 100644 --- a/arch/tde-extra/tde-tdenetworkmanager/PKGBUILD +++ b/arch/tde-extra/tde-tdenetworkmanager/PKGBUILD @@ -14,13 +14,25 @@ makedepends=('pkgconfig' 'cmake') #conflicts=('tdenetworkmanager') #replaces=('tdenetworkmanager') options=('staticlibs' 'libtool' '!strip') -source=("https://mirror.ppa.trinitydesktop.org/trinity/releases/R${pkgver}/main/applications/tdenetworkmanager-trinity-${pkgver}.tar.xz") -md5sums=('2edab1bc48066a52f0b53a19457495a2') +source=( + "https://mirror.ppa.trinitydesktop.org/trinity/releases/R${pkgver}/main/applications/tdenetworkmanager-trinity-${pkgver}.tar.xz" + 'bp000-ea2b20ed7a.diff' + 'bp001-e4e7853030.diff' +) +md5sums=( + '2edab1bc48066a52f0b53a19457495a2' + '40f95a5c7c02471e629e109aeca86ce3' + 'd292626fb10780eb68bbc1a60c1e7ed7' +) # install='' [ -n "$TDEDIR" ] || TDEDIR=/opt/trinity build() { + cd ${srcdir}/${pkgname#*-}-trinity-${pkgver} + patch -p1 < ${srcdir}/bp000-ea2b20ed7a.diff + patch -p1 < ${srcdir}/bp001-e4e7853030.diff + msg "Creating out-of-source build directory: ${srcdir}/build" mkdir -p "${srcdir}/build" cd "${srcdir}/build" diff --git a/arch/tde-extra/tde-tdenetworkmanager/bp000-ea2b20ed7a.diff b/arch/tde-extra/tde-tdenetworkmanager/bp000-ea2b20ed7a.diff new file mode 100644 index 000000000..22abf310b --- /dev/null +++ b/arch/tde-extra/tde-tdenetworkmanager/bp000-ea2b20ed7a.diff @@ -0,0 +1,78 @@ +commit ea2b20ed7ab3e83b8585e20d2febdbb5f2d356c1 +Author: Michele Calgaro +Date: Mon Aug 2 11:24:50 2021 +0900 + + Removed unused hardwareEvent code. + + Initialization of TDEHardwareDevices() always happens before the signal + was connected. The constructor of TDEHardwareDevices() is the only place + that was triggering the signal emission, so the code was non functional. + + Signed-off-by: Michele Calgaro + +diff --git a/tdenetworkmanager/src/devicetraycomponent.cpp b/tdenetworkmanager/src/devicetraycomponent.cpp +index 5f1f26e..085435c 100644 +--- a/tdenetworkmanager/src/devicetraycomponent.cpp ++++ b/tdenetworkmanager/src/devicetraycomponent.cpp +@@ -74,8 +74,6 @@ DeviceTrayComponent::DeviceTrayComponent(TQString device, KSystemTray * parent, + + TDEHardwareDevices* hwdevices = TDEGlobal::hardwareDevices(); + +- // Listen for hardware change events +- connect(hwdevices, TQT_SIGNAL(hardwareEvent(TDEHardwareEvent::TDEHardwareEvent, TQString)), this, TQT_SLOT(tdeHardwareEventHandler(TDEHardwareEvent::TDEHardwareEvent, TQString))); + // Trigger an initial hardware information update + tdeHardwareEventHandler(TDEHardwareEvent::HardwareListModified, TQString::null); + +diff --git a/tdenetworkmanager/src/tdenetman-tray.cpp b/tdenetworkmanager/src/tdenetman-tray.cpp +index 9427679..173464f 100644 +--- a/tdenetworkmanager/src/tdenetman-tray.cpp ++++ b/tdenetworkmanager/src/tdenetman-tray.cpp +@@ -963,14 +963,6 @@ void Tray::slotGenericDeviceRemoved(TDEGenericDevice *dev) + } + } + +-void Tray::slotGenericHardwareEvent(TDEHardwareEvent::TDEHardwareEvent event, TQString) +-{ +- if (event == TDEHardwareEvent::HardwareListModified) { +- updateDeviceTrays(); +- connectTrayDeviceManager(); +- } +-} +- + void Tray::slotVPNEventHandler(TDENetworkVPNEventType::TDENetworkVPNEventType event, TQString message) + { + if (event == TDENetworkVPNEventType::LoginBanner) { +@@ -1094,7 +1086,6 @@ Tray::Tray() : KSystemTray() + // get notified about new/removed devices + connect(hwdevices, TQT_SIGNAL(hardwareAdded(TDEGenericDevice*)), this, TQT_SLOT(slotGenericDeviceAdded(TDEGenericDevice*))); + connect(hwdevices, TQT_SIGNAL(hardwareRemoved(TDEGenericDevice*)), this, TQT_SLOT(slotGenericDeviceRemoved(TDEGenericDevice*))); +- connect(hwdevices, TQT_SIGNAL(hardwareEvent(TDEHardwareEvent::TDEHardwareEvent, TQString)), this, TQT_SLOT(slotGenericHardwareEvent(TDEHardwareEvent::TDEHardwareEvent, TQString))); + + // Notifications + connect(TDEGlobal::networkManager(), TQT_SIGNAL(networkConnectionStateChanged(TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags, TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags)), this, TQT_SLOT(slotStateChangedNotify(TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags, TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags))); +diff --git a/tdenetworkmanager/src/tdenetman-tray.h b/tdenetworkmanager/src/tdenetman-tray.h +index d086902..6f4fdea 100644 +--- a/tdenetworkmanager/src/tdenetman-tray.h ++++ b/tdenetworkmanager/src/tdenetman-tray.h +@@ -115,7 +115,6 @@ class Tray : public KSystemTray + private slots: + void slotGenericDeviceAdded(TDEGenericDevice*); + void slotGenericDeviceRemoved(TDEGenericDevice*); +- void slotGenericHardwareEvent(TDEHardwareEvent::TDEHardwareEvent, TQString); + void slotVPNEventHandler(TDENetworkVPNEventType::TDENetworkVPNEventType event, TQString message); + + private: +diff --git a/tdenetworkmanager/src/tdenetman-wireless_device_tray.cpp b/tdenetworkmanager/src/tdenetman-wireless_device_tray.cpp +index 2d4eccb..9b855ec 100644 +--- a/tdenetworkmanager/src/tdenetman-wireless_device_tray.cpp ++++ b/tdenetworkmanager/src/tdenetman-wireless_device_tray.cpp +@@ -487,9 +487,6 @@ WirelessDeviceTray::WirelessDeviceTray (TQString dev, KSystemTray * parent, cons + setPixmapForState(TDENetworkConnectionStatus::Disconnected, "wireless"); + setPixmapForState(TDENetworkConnectionStatus::Connected, "nm_signal_50"); + +- // Listen for hardware change events +- connect(hwdevices, TQT_SIGNAL(hardwareEvent(TDEHardwareEvent::TDEHardwareEvent, TQString)), this, TQT_SLOT(tdeHardwareEventHandler(TDEHardwareEvent::TDEHardwareEvent, TQString))); +- + // Trigger an initial hardware information update + tdeHardwareEventHandler(TDEHardwareEvent::HardwareListModified, TQString::null); + } diff --git a/arch/tde-extra/tde-tdenetworkmanager/bp001-e4e7853030.diff b/arch/tde-extra/tde-tdenetworkmanager/bp001-e4e7853030.diff new file mode 100644 index 000000000..887c989f1 --- /dev/null +++ b/arch/tde-extra/tde-tdenetworkmanager/bp001-e4e7853030.diff @@ -0,0 +1,121 @@ +commit e4e7853030d8efbf14e5ad6631c4cfb6b3601269 +Author: Michele Calgaro +Date: Mon Aug 2 23:19:04 2021 +0900 + + Removed unused hardwareEvent code - part 2. + + Signed-off-by: Michele Calgaro + +diff --git a/tdenetworkmanager/src/devicetraycomponent.cpp b/tdenetworkmanager/src/devicetraycomponent.cpp +index 085435c..2ea4e35 100644 +--- a/tdenetworkmanager/src/devicetraycomponent.cpp ++++ b/tdenetworkmanager/src/devicetraycomponent.cpp +@@ -75,7 +75,11 @@ DeviceTrayComponent::DeviceTrayComponent(TQString device, KSystemTray * parent, + TDEHardwareDevices* hwdevices = TDEGlobal::hardwareDevices(); + + // Trigger an initial hardware information update +- tdeHardwareEventHandler(TDEHardwareEvent::HardwareListModified, TQString::null); ++ TDENetworkDevice* dev = dynamic_cast(hwdevices->findByUniqueID(m_device)); ++ TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); ++ ++ connect(deviceConnMan, TQT_SIGNAL(networkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString)), TQT_SLOT(deviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString))); ++ connect(deviceConnMan, TQT_SIGNAL(networkDeviceEvent(TDENetworkDeviceEventType::TDENetworkDeviceEventType, TQString)), this, TQT_SLOT(deviceEventHandler(TDENetworkDeviceEventType::TDENetworkDeviceEventType, TQString))); + + m_pixmaps[TDENetworkConnectionStatus::Invalid] = "nm_no_connection"; + m_pixmaps[TDENetworkConnectionStatus::UnManaged] = "nm_no_connection"; +@@ -110,18 +114,6 @@ TQString DeviceTrayComponent::device() const + return m_device; + } + +-void DeviceTrayComponent::tdeHardwareEventHandler(TDEHardwareEvent::TDEHardwareEvent event, TQString) +-{ +- if (event == TDEHardwareEvent::HardwareListModified) { +- TDEHardwareDevices* hwdevices = TDEGlobal::hardwareDevices(); +- TDENetworkDevice* dev = dynamic_cast(hwdevices->findByUniqueID(m_device)); +- TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); +- +- connect(deviceConnMan, TQT_SIGNAL(networkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString)), TQT_SLOT(deviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString))); +- connect(deviceConnMan, TQT_SIGNAL(networkDeviceEvent(TDENetworkDeviceEventType::TDENetworkDeviceEventType, TQString)), this, TQT_SLOT(deviceEventHandler(TDENetworkDeviceEventType::TDENetworkDeviceEventType, TQString))); +- } +-} +- + void DeviceTrayComponent::deviceEventHandler(TDENetworkDeviceEventType::TDENetworkDeviceEventType event, TQString message) { + kdDebug() << "DeviceTrayComponent::deviceEventHandler" << endl; + +diff --git a/tdenetworkmanager/src/devicetraycomponent.h b/tdenetworkmanager/src/devicetraycomponent.h +index af0ccea..c3c40e1 100644 +--- a/tdenetworkmanager/src/devicetraycomponent.h ++++ b/tdenetworkmanager/src/devicetraycomponent.h +@@ -59,7 +59,6 @@ class DeviceTrayComponent : public TrayComponent + void deviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString); + + private slots: +- void tdeHardwareEventHandler(TDEHardwareEvent::TDEHardwareEvent, TQString); + void deviceEventHandler(TDENetworkDeviceEventType::TDENetworkDeviceEventType event, TQString message); + + protected: +diff --git a/tdenetworkmanager/src/tdenetman-wireless_device_tray.cpp b/tdenetworkmanager/src/tdenetman-wireless_device_tray.cpp +index 9b855ec..8811650 100644 +--- a/tdenetworkmanager/src/tdenetman-wireless_device_tray.cpp ++++ b/tdenetworkmanager/src/tdenetman-wireless_device_tray.cpp +@@ -428,25 +428,6 @@ void WirelessDeviceTray::slotAccessPointRemoved(TDEMACAddress) + KNotifyClient::event( tray()->winId(), "tdenm-nm-network-gone", i18n("TDENetworkManager Wireless Network Disappeared") ); + } + +-void WirelessDeviceTray::tdeHardwareEventHandler(TDEHardwareEvent::TDEHardwareEvent event, TQString) +-{ +- if (event == TDEHardwareEvent::HardwareListModified) { +- TDENetworkDevice* dev = dynamic_cast(hwdevices->findByUniqueID(d->dev)); +- TDENetworkConnectionManager* deviceConnMan = (dev)?dev->connectionManager():NULL; +- +- // get notified when the device state changes +- connect(deviceConnMan, TQT_SIGNAL(networkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString)), this, TQT_SLOT(slotUpdateDeviceState(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString))); +- +- // get notified of all AP changes +- connect(deviceConnMan, TQT_SIGNAL(accessPointStatusChanged(TDEMACAddress, TDENetworkAPEventType::TDENetworkAPEventType)), this, TQT_SLOT(tdeAccessPointStatusChangedHandler(TDEMACAddress, TDENetworkAPEventType::TDENetworkAPEventType))); +- +- // force status update to ensure correct icon is shown on startup +- if ((dev) && (deviceConnMan)) { +- slotUpdateDeviceState(deviceConnMan->deviceInformation().statusFlags, TDENetworkConnectionStatus::Invalid, dev->deviceNode()); +- } +- } +-} +- + void WirelessDeviceTray::tdeAccessPointStatusChangedHandler(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event) { + TDENetworkDevice* dev = dynamic_cast(hwdevices->findByUniqueID(d->dev)); + TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); +@@ -487,8 +468,20 @@ WirelessDeviceTray::WirelessDeviceTray (TQString dev, KSystemTray * parent, cons + setPixmapForState(TDENetworkConnectionStatus::Disconnected, "wireless"); + setPixmapForState(TDENetworkConnectionStatus::Connected, "nm_signal_50"); + +- // Trigger an initial hardware information update +- tdeHardwareEventHandler(TDEHardwareEvent::HardwareListModified, TQString::null); ++ // initial hardware information update ++ TDENetworkDevice* netdev = dynamic_cast(hwdevices->findByUniqueID(d->dev)); ++ TDENetworkConnectionManager* deviceConnMan = (netdev)?netdev->connectionManager():NULL; ++ ++ // get notified when the device state changes ++ connect(deviceConnMan, TQT_SIGNAL(networkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString)), this, TQT_SLOT(slotUpdateDeviceState(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString))); ++ ++ // get notified of all AP changes ++ connect(deviceConnMan, TQT_SIGNAL(accessPointStatusChanged(TDEMACAddress, TDENetworkAPEventType::TDENetworkAPEventType)), this, TQT_SLOT(tdeAccessPointStatusChangedHandler(TDEMACAddress, TDENetworkAPEventType::TDENetworkAPEventType))); ++ ++ // force status update to ensure correct icon is shown on startup ++ if ((netdev) && (deviceConnMan)) { ++ slotUpdateDeviceState(deviceConnMan->deviceInformation().statusFlags, TDENetworkConnectionStatus::Invalid, netdev->deviceNode()); ++ } + } + + WirelessDeviceTray::~WirelessDeviceTray () +diff --git a/tdenetworkmanager/src/tdenetman-wireless_device_tray.h b/tdenetworkmanager/src/tdenetman-wireless_device_tray.h +index 59a24a1..eb429b9 100644 +--- a/tdenetworkmanager/src/tdenetman-wireless_device_tray.h ++++ b/tdenetworkmanager/src/tdenetman-wireless_device_tray.h +@@ -66,7 +66,6 @@ class WirelessDeviceTray : public DeviceTrayComponent + void slotAccessPointRemoved(TDEMACAddress); + + private slots: +- void tdeHardwareEventHandler(TDEHardwareEvent::TDEHardwareEvent, TQString); + void tdeAccessPointStatusChangedHandler(TDEMACAddress, TDENetworkAPEventType::TDENetworkAPEventType); + void sendUpdateUI(); +