From fb1316c785f2e026316a48b7cade322026490ee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Sun, 4 Oct 2020 19:12:19 +0200 Subject: [PATCH] tdehwlib: Add regular monitoring of power supply device status, to be able to generate a signal when the power state changes, if the signal is not generated from udev. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This resolves issue TDE/tde#30. Signed-off-by: Slávek Banko --- tdecore/tdehw/tdehardwaredevices.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tdecore/tdehw/tdehardwaredevices.cpp b/tdecore/tdehw/tdehardwaredevices.cpp index b700ac3ab..f0069d38f 100644 --- a/tdecore/tdehw/tdehardwaredevices.cpp +++ b/tdecore/tdehw/tdehardwaredevices.cpp @@ -199,7 +199,7 @@ TDEHardwareDevices::TDEHardwareDevices() { m_deviceWatchTimer = new TQTimer(this); connect( m_deviceWatchTimer, SIGNAL(timeout()), this, SLOT(processStatelessDevices()) ); - // Special case for battery polling (longer delay, 5 seconds) + // Special case for battery and power supply polling (longer delay, 5 seconds) m_batteryWatchTimer = new TQTimer(this); connect( m_batteryWatchTimer, SIGNAL(timeout()), this, SLOT(processBatteryDevices()) ); @@ -906,6 +906,15 @@ void TDEHardwareDevices::processBatteryDevices() { emit hardwareUpdated(hwdevice); emit hardwareEvent(TDEHardwareEvent::HardwareUpdated, hwdevice->uniqueID()); } + else if (hwdevice->type() == TDEGenericDeviceType::PowerSupply) { + TDEMainsPowerDevice *pdevice = dynamic_cast(hwdevice); + int previousOnlineState = pdevice->online(); + rescanDeviceInformation(hwdevice, false); + if (pdevice->online() != previousOnlineState) { + emit hardwareUpdated(hwdevice); + emit hardwareEvent(TDEHardwareEvent::HardwareUpdated, hwdevice->uniqueID()); + } + } } }