From 2228523cf053123acee04ce5eec28b288889ada0 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 12 Nov 2019 19:25:24 +0100 Subject: [PATCH 1/2] Don't emit EventEmitted for invalid devices --- libnymea-core/devices/devicemanagerimplementation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libnymea-core/devices/devicemanagerimplementation.cpp b/libnymea-core/devices/devicemanagerimplementation.cpp index 91ee8f5f..eb055792 100644 --- a/libnymea-core/devices/devicemanagerimplementation.cpp +++ b/libnymea-core/devices/devicemanagerimplementation.cpp @@ -1417,7 +1417,7 @@ void DeviceManagerImplementation::onEventTriggered(const Event &event) { // Doing some sanity checks here... Device *device = m_configuredDevices.value(event.deviceId()); - if (!device) { + if (!device || !m_configuredDevices.contains(device->id())) { qCWarning(dcDeviceManager()) << "Invalid device id in emitted event. Not forwarding event."; return; } From f5942a022392f3ca56b9a32ee16ee580fcd084c7 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Fri, 15 Nov 2019 11:01:03 +0100 Subject: [PATCH 2/2] Also check state changes --- libnymea-core/devices/devicemanagerimplementation.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libnymea-core/devices/devicemanagerimplementation.cpp b/libnymea-core/devices/devicemanagerimplementation.cpp index eb055792..f49f56c3 100644 --- a/libnymea-core/devices/devicemanagerimplementation.cpp +++ b/libnymea-core/devices/devicemanagerimplementation.cpp @@ -1417,8 +1417,8 @@ void DeviceManagerImplementation::onEventTriggered(const Event &event) { // Doing some sanity checks here... Device *device = m_configuredDevices.value(event.deviceId()); - if (!device || !m_configuredDevices.contains(device->id())) { - qCWarning(dcDeviceManager()) << "Invalid device id in emitted event. Not forwarding event."; + if (!device) { + qCWarning(dcDeviceManager()) << "Invalid device id in emitted event. Not forwarding event. Device setup not complete yet?"; return; } EventType eventType = device->deviceClass().eventTypes().findById(event.eventTypeId()); @@ -1433,7 +1433,8 @@ void DeviceManagerImplementation::onEventTriggered(const Event &event) void DeviceManagerImplementation::slotDeviceStateValueChanged(const StateTypeId &stateTypeId, const QVariant &value) { Device *device = qobject_cast(sender()); - if (!device) { + if (!device || !m_configuredDevices.contains(device->id())) { + qCWarning(dcDeviceManager()) << "Invalid device id in state change. Not forwarding event. Device setup not complete yet?"; return; } emit deviceStateChanged(device, stateTypeId, value);