QWinRTFunctions::await: Return proper error in case of timeout
The await function is still used in other Qt modules which depend on UWP API (like Qt Bluetooth). ERROR_TIMEOUT is a win32 error not an HRESULT so that the check for FAILED(ERROR_TIMEOUT) in "static inline HRESULT await" will not work as expected if we do not use HRESULT_FROM_WIN32. The await function will fail in asyncOp->GetResults but the error message will not be related to a timeout but about a function being called at an unexpected time. Change-Id: Iac46b27f379f80769913d544e32320c77b799b4f Reviewed-by: Miguel Costa <miguel.costa@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>bb10
parent
df121fd7f7
commit
5910adae74
|
|
@ -118,7 +118,7 @@ static inline HRESULT _await_impl(const Microsoft::WRL::ComPtr<T> &asyncOp, Awai
|
|||
while (SUCCEEDED(hr = asyncInfo->get_Status(&status)) && status == AsyncStatus::Started) {
|
||||
QCoreApplication::processEvents();
|
||||
if (timeout && t.hasExpired(timeout))
|
||||
return ERROR_TIMEOUT;
|
||||
return HRESULT_FROM_WIN32(ERROR_TIMEOUT);
|
||||
}
|
||||
break;
|
||||
case ProcessThreadEvents:
|
||||
|
|
@ -126,7 +126,7 @@ static inline HRESULT _await_impl(const Microsoft::WRL::ComPtr<T> &asyncOp, Awai
|
|||
while (SUCCEEDED(hr = asyncInfo->get_Status(&status)) && status == AsyncStatus::Started) {
|
||||
dispatcher->processEvents(QEventLoop::AllEvents);
|
||||
if (timeout && t.hasExpired(timeout))
|
||||
return ERROR_TIMEOUT;
|
||||
return HRESULT_FROM_WIN32(ERROR_TIMEOUT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -136,7 +136,7 @@ static inline HRESULT _await_impl(const Microsoft::WRL::ComPtr<T> &asyncOp, Awai
|
|||
while (SUCCEEDED(hr = asyncInfo->get_Status(&status)) && status == AsyncStatus::Started) {
|
||||
QThread::yieldCurrentThread();
|
||||
if (timeout && t.hasExpired(timeout))
|
||||
return ERROR_TIMEOUT;
|
||||
return HRESULT_FROM_WIN32(ERROR_TIMEOUT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue