diff options
author | Tarja Sundqvist <tarja.sundqvist@qt.io> | 2023-03-23 21:57:01 +0200 |
---|---|---|
committer | Tarja Sundqvist <tarja.sundqvist@qt.io> | 2023-03-23 21:57:01 +0200 |
commit | 3dcb548bd6fe4aa488ca0bac95e65a7a366c3eca (patch) | |
tree | d8e263e0341880d970832326c7c7cecfd05e67cd /src/bluetooth/qlowenergycontroller_winrt_new.cpp | |
parent | e957d4810b05d8453e163d7bcdcab42d3c60a7bb (diff) | |
parent | 2b3b5c899ebdb0fc11273af7370804f5f03ad9e8 (diff) |
Merge remote-tracking branch 'origin/tqtc/lts-5.15.9' into tqtc/lts-5.15-opensourcev5.15.9-lts-lgpl
Change-Id: I6f5b5789b64c033f10223c2147ce7a312d868230
Diffstat (limited to 'src/bluetooth/qlowenergycontroller_winrt_new.cpp')
-rw-r--r-- | src/bluetooth/qlowenergycontroller_winrt_new.cpp | 17 |
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); |