diff options
author | JackLivio <jack@livio.io> | 2021-04-06 09:12:57 -0400 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2021-04-06 09:12:57 -0400 |
commit | 05a44ff3b23645370730163441a4378d0afd24c2 (patch) | |
tree | ff7a660bc5bf4c99ed90eb097c7a5d64202ddaac | |
parent | bbf8256fa306c06d6e5c669134235e06da43fa56 (diff) | |
download | sdl_core-fix/bt_scan_blocking_updateapplist.tar.gz |
Prevent deadlock on shutdownfix/bt_scan_blocking_updateapplist
-rw-r--r-- | src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc b/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc index acd7c78dde..8342ebdcc6 100644 --- a/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc +++ b/src/components/transport_manager/src/bluetooth/bluetooth_device_scanner.cc @@ -433,10 +433,14 @@ void BluetoothDeviceScanner::TimedWaitForDeviceScanRequest() { { sync_primitives::AutoLock auto_lock(device_scan_requested_lock_); while (!(device_scan_requested_ || shutdown_requested_)) { - sync_primitives::AutoLock auto_lock(cv_exit_lock_); + if(!cv_exit_lock_.Try()) { + //Lock is taken by terminate thread, return + return; + } const sync_primitives::ConditionalVariable::WaitStatus wait_status = device_scan_requested_cv_.WaitFor(auto_lock, auto_repeat_pause_sec_ * 1000); + cv_exit_lock_.Release(); if (wait_status == sync_primitives::ConditionalVariable::kTimeout) { SDL_LOG_INFO("Bluetooth scanner timeout, performing scan"); device_scan_requested_ = true; |