summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2022-08-11 14:07:57 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-08-15 09:18:53 +0000
commit9e27158caaab6140b66c53587e30b525258329bb (patch)
tree6da879c40751d40b9619451ace9e9bfc9d5d5f74
parentb7a7e31f95c09c3ac11260c18964665aae183c6b (diff)
downloadqtconnectivity-9e27158caaab6140b66c53587e30b525258329bb.tar.gz
Windows: properly cache discovered services in QLowEnergyController
GattDeviceService can return AccessDenied error when queried for service details, if it was not closed properly when it was last used. Commit 0b60ca266f0fe27053a58eff3dbd903e3a1678ca introduces a service cache, which keeps track of the used services, and ensures that they are properly closed before being reused. This patch puts all the newly-discovered services into the service cache, which helps to prevent some errors when later querying for service details. Task-number: QTBUG-94001 Change-Id: Icdf26e2aaece5c44d9268ec907750242b61c64f7 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Juha Vuolle <juha.vuolle@insta.fi> (cherry picked from commit 093501477f91b2184db3f60f1f87a6d31cbf1577) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/bluetooth/qlowenergycontroller_winrt.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/bluetooth/qlowenergycontroller_winrt.cpp b/src/bluetooth/qlowenergycontroller_winrt.cpp
index 995be953..32900618 100644
--- a/src/bluetooth/qlowenergycontroller_winrt.cpp
+++ b/src/bluetooth/qlowenergycontroller_winrt.cpp
@@ -1093,6 +1093,7 @@ HRESULT QLowEnergyControllerPrivateWinRT::onServiceDiscoveryFinished(ABI::Window
hr = deviceService->get_Uuid(&guuid);
WARN_AND_CONTINUE_IF_FAILED(hr, "Could not obtain service's Uuid");
const QBluetoothUuid service(guuid);
+ m_openedServices[service] = deviceService;
qCDebug(QT_BT_WINDOWS_SERVICE_THREAD) << __FUNCTION__
<< "Changing service pointer from thread"