From ca6b84af1612440a925b4a8223cbed4beb9ac33e Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Fri, 3 Nov 2017 13:04:31 +0100 Subject: winrt: Do not assert when registering a service without a local BT adapter If no bluetooth adapter is present in the system IRfCommServiceProvider::CreateAsync will result in "device not available". In this case we should not assert, but just handle that as a failed attempt to register the service. Task-number: QTBUG-64118 Change-Id: I73591a1f2dbedc798824e5afef53a9e2d793e73e Reviewed-by: Alex Blasche --- src/bluetooth/qbluetoothserviceinfo_winrt.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/bluetooth/qbluetoothserviceinfo_winrt.cpp b/src/bluetooth/qbluetoothserviceinfo_winrt.cpp index d72056b7..d1a97b6d 100644 --- a/src/bluetooth/qbluetoothserviceinfo_winrt.cpp +++ b/src/bluetooth/qbluetoothserviceinfo_winrt.cpp @@ -337,7 +337,12 @@ bool QBluetoothServiceInfoPrivate::registerService(const QBluetoothAddress &loca hr = providerStatics->CreateAsync(serviceId.Get(), &op); Q_ASSERT_SUCCEEDED(hr); hr = QWinRTFunctions::await(op, serviceProvider.GetAddressOf()); - Q_ASSERT_SUCCEEDED(hr); + if (hr == HRESULT_FROM_WIN32(ERROR_DEVICE_NOT_AVAILABLE)) { + qCWarning(QT_BT_WINRT) << Q_FUNC_INFO << "No bluetooth adapter available."; + return false; + } else { + Q_ASSERT_SUCCEEDED(hr); + } ComPtr listener = sPriv->listener(); if (!listener) { -- cgit v1.2.3