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 | 0a4112424a51f995a388391108f593ab1517f3bf (patch) | |
tree | f2422b724da8ff91175bb35758d7e033ac0a5417 | |
parent | 5a9a1808710adaf3a781449caad11ebd006b4577 (diff) |
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 5f5850f6..7b700250 100644 --- a/src/bluetooth/qlowenergycontroller_winrt.cpp +++ b/src/bluetooth/qlowenergycontroller_winrt.cpp @@ -1057,6 +1057,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" |