From 18bb1a4cfd7f89898cb5cb9470ca1933d3ebbcef Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Mon, 2 Jul 2018 23:19:34 +0200 Subject: [PATCH] fix removing hue devices when there's still a request going on --- philipshue/devicepluginphilipshue.cpp | 18 ++++++++++++++++++ philipshue/devicepluginphilipshue.h | 1 + 2 files changed, 19 insertions(+) diff --git a/philipshue/devicepluginphilipshue.cpp b/philipshue/devicepluginphilipshue.cpp index 137a3f55..61b942c6 100644 --- a/philipshue/devicepluginphilipshue.cpp +++ b/philipshue/devicepluginphilipshue.cpp @@ -240,6 +240,15 @@ DeviceManager::DeviceSetupStatus DevicePluginPhilipsHue::setupDevice(Device *dev void DevicePluginPhilipsHue::deviceRemoved(Device *device) { + abortRequests(m_lightRefreshRequests, device); + abortRequests(m_lightSetNameRequests, device); + abortRequests(m_bridgeRefreshRequests, device); + abortRequests(m_lightsRefreshRequests, device); + abortRequests(m_sensorsRefreshRequests, device); + abortRequests(m_bridgeLightsDiscoveryRequests, device); + abortRequests(m_bridgeSensorsDiscoveryRequests, device); + abortRequests(m_bridgeSearchDevicesRequests, device); + if (device->deviceClassId() == hueBridgeDeviceClassId) { HueBridge *bridge = m_bridges.key(device); m_bridges.remove(bridge); @@ -1335,3 +1344,12 @@ int DevicePluginPhilipsHue::percentageToBrightness(int percentage) { return qRound((255.0 * percentage) / 100.0); } + +void DevicePluginPhilipsHue::abortRequests(QHash requestList, Device *device) +{ + foreach (QNetworkReply* reply, requestList.keys()) { + if (requestList.value(reply) == device) { + reply->abort(); + } + } +} diff --git a/philipshue/devicepluginphilipshue.h b/philipshue/devicepluginphilipshue.h index 3641a691..b8c968b5 100644 --- a/philipshue/devicepluginphilipshue.h +++ b/philipshue/devicepluginphilipshue.h @@ -123,6 +123,7 @@ private: int brightnessToPercentage(int brightness); int percentageToBrightness(int percentage); + void abortRequests(QHash requestList, Device* device); }; #endif // DEVICEPLUGINBOBLIGHT_H