diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2022-08-11 14:07:57 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-08-15 09:18:53 +0000 |
commit | 9e27158caaab6140b66c53587e30b525258329bb (patch) | |
tree | 6da879c40751d40b9619451ace9e9bfc9d5d5f74 | |
parent | b7a7e31f95c09c3ac11260c18964665aae183c6b (diff) | |
download | qtconnectivity-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.cpp | 1 |
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" |