summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/qlowenergycontroller_winrt_new.cpp
diff options
context:
space:
mode:
authorTarja Sundqvist <tarja.sundqvist@qt.io>2023-03-23 21:57:01 +0200
committerTarja Sundqvist <tarja.sundqvist@qt.io>2023-03-23 21:57:01 +0200
commit3dcb548bd6fe4aa488ca0bac95e65a7a366c3eca (patch)
treed8e263e0341880d970832326c7c7cecfd05e67cd /src/bluetooth/qlowenergycontroller_winrt_new.cpp
parente957d4810b05d8453e163d7bcdcab42d3c60a7bb (diff)
parent2b3b5c899ebdb0fc11273af7370804f5f03ad9e8 (diff)
Merge remote-tracking branch 'origin/tqtc/lts-5.15.9' into tqtc/lts-5.15-opensourcev5.15.9-lts-lgpl
Diffstat (limited to 'src/bluetooth/qlowenergycontroller_winrt_new.cpp')
-rw-r--r--src/bluetooth/qlowenergycontroller_winrt_new.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/bluetooth/qlowenergycontroller_winrt_new.cpp b/src/bluetooth/qlowenergycontroller_winrt_new.cpp
index 42f4380e..6fd0ed2a 100644
--- a/src/bluetooth/qlowenergycontroller_winrt_new.cpp
+++ b/src/bluetooth/qlowenergycontroller_winrt_new.cpp
@@ -404,6 +404,8 @@ public:
~QWinRTLowEnergyConnectionHandler()
{
qCDebug(QT_BT_WINRT) << __FUNCTION__;
+ mDevice.Reset();
+ mGattSession.Reset();
// To close the COM library gracefully, each successful call to
// CoInitialize, including those that return S_FALSE, must be balanced
// by a corresponding call to CoUninitialize.
@@ -436,7 +438,7 @@ private:
void QWinRTLowEnergyConnectionHandler::connectToDevice()
{
qCDebug(QT_BT_WINRT) << __FUNCTION__;
- mInitialized = CoInitialize(NULL);
+ mInitialized = CoInitializeEx(NULL, COINIT_MULTITHREADED);
qCDebug(QT_BT_WINRT) << qt_error_string(mInitialized);
auto earlyExit = [this]() { return mAbortConnection; };
@@ -676,10 +678,23 @@ void QWinRTLowEnergyConnectionHandler::emitConnectedAndQuitThread()
QThread::currentThread()->quit();
}
+static void registerServiceHandlerMetaTypes()
+{
+ static bool registered = false;
+ if (!registered) {
+ qRegisterMetaType<QHash<QLowEnergyHandle, QLowEnergyServicePrivate::CharData>>(
+ "QHash<QLowEnergyHandle, QLowEnergyServicePrivate::CharData>");
+ qRegisterMetaType<QVector<QBluetoothUuid>>("QVector<QBluetoothUuid>");
+ qRegisterMetaType<QLowEnergyHandle>("QLowEnergyHandle");
+ registered = true;
+ }
+}
+
QLowEnergyControllerPrivateWinRTNew::QLowEnergyControllerPrivateWinRTNew()
: QLowEnergyControllerPrivate()
{
registerQLowEnergyControllerMetaType();
+ registerServiceHandlerMetaTypes();
connect(this, &QLowEnergyControllerPrivateWinRTNew::characteristicChanged,
this, &QLowEnergyControllerPrivateWinRTNew::handleCharacteristicChanged,
Qt::QueuedConnection);