From ca0c8f9f4a7ae9efab431eea38bca9f812af8751 Mon Sep 17 00:00:00 2001 From: Ivan Solovev Date: Thu, 3 Feb 2022 14:21:11 +0100 Subject: Fix missing MetaType registration This patch amends bf69c830419a7cda87d6aa71c962804a946011ea. After fixing the thread affinity issue, Qt is using QueuedConnection for the charListObtained signal. As a result, the signal's arguments need to be registered for the metatype system. This patch provides such registration. This is a 5.15-only change, as Qt 6 is does not require to register the types explicitly. Fixes: QTBUG-99767 Change-Id: I50e6314669bd6e779b85373f417c92b57f23a7e9 Reviewed-by: Fabian Kosmale Reviewed-by: Oliver Wolff --- src/bluetooth/qlowenergycontroller_winrt_new.cpp | 13 +++++++++++++ src/bluetooth/qlowenergyserviceprivate_p.h | 1 + 2 files changed, 14 insertions(+) diff --git a/src/bluetooth/qlowenergycontroller_winrt_new.cpp b/src/bluetooth/qlowenergycontroller_winrt_new.cpp index b2ebab2b..19324300 100644 --- a/src/bluetooth/qlowenergycontroller_winrt_new.cpp +++ b/src/bluetooth/qlowenergycontroller_winrt_new.cpp @@ -678,10 +678,23 @@ void QWinRTLowEnergyConnectionHandler::emitConnectedAndQuitThread() QThread::currentThread()->quit(); } +static void registerServiceHandlerMetaTypes() +{ + static bool registered = false; + if (!registered) { + qRegisterMetaType>( + "QHash"); + qRegisterMetaType>("QVector"); + qRegisterMetaType("QLowEnergyHandle"); + registered = true; + } +} + QLowEnergyControllerPrivateWinRTNew::QLowEnergyControllerPrivateWinRTNew() : QLowEnergyControllerPrivate() { registerQLowEnergyControllerMetaType(); + registerServiceHandlerMetaTypes(); connect(this, &QLowEnergyControllerPrivateWinRTNew::characteristicChanged, this, &QLowEnergyControllerPrivateWinRTNew::handleCharacteristicChanged, Qt::QueuedConnection); diff --git a/src/bluetooth/qlowenergyserviceprivate_p.h b/src/bluetooth/qlowenergyserviceprivate_p.h index 5727d97c..b1d95597 100644 --- a/src/bluetooth/qlowenergyserviceprivate_p.h +++ b/src/bluetooth/qlowenergyserviceprivate_p.h @@ -146,5 +146,6 @@ typedef QHash DescriptorDa QT_END_NAMESPACE Q_DECLARE_METATYPE(QSharedPointer) +Q_DECLARE_METATYPE(QLowEnergyServicePrivate::CharData) #endif // QLOWENERGYSERVICEPRIVATE_P_H -- cgit v1.2.1