From 9282bb86792caca8ca721b176e134378928dfee5 Mon Sep 17 00:00:00 2001 From: Simo Piiroinen Date: Fri, 31 Aug 2018 14:45:21 +0300 Subject: [PATCH] [usb-moded-qt5] Handle usb mode changes separately from events. JB#42756 Usb-moded sends both events and mode change indications via the same D-Bus signal. Updating the cached usb-mode based on events means the value is not necessarily in sync with what a direct query would return. Update usb-mode only on mode changes and forward events as QT signals. Signed-off-by: Simo Piiroinen --- src/qusbmoded.cpp | 10 +++++++--- src/qusbmoded.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/qusbmoded.cpp b/src/qusbmoded.cpp index 69d9ef8..646ce7c 100644 --- a/src/qusbmoded.cpp +++ b/src/qusbmoded.cpp @@ -447,9 +447,13 @@ void QUsbModed::onUnhideModeFinished(QDBusPendingCallWatcher* aCall) void QUsbModed::onUsbStateChanged(QString aMode) { DEBUG_(aMode); - if (iPrivate->iCurrentMode != aMode) { - iPrivate->iCurrentMode = aMode; - Q_EMIT currentModeChanged(); + if (isEvent(aMode)) { + Q_EMIT eventReceived(aMode); + } else { + if (iPrivate->iCurrentMode != aMode) { + iPrivate->iCurrentMode = aMode; + Q_EMIT currentModeChanged(); + } } } diff --git a/src/qusbmoded.h b/src/qusbmoded.h index e26e697..6183e64 100644 --- a/src/qusbmoded.h +++ b/src/qusbmoded.h @@ -74,6 +74,7 @@ public Q_SLOTS: void supportedModesChanged(); void availableModesChanged(); void currentModeChanged(); + void eventReceived(QString event); void configModeChanged(); void usbStateError(QString error); void hiddenModesChanged();