From 562511a62f222b5a0c817be359255445bb4a1ea6 Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Mon, 2 Sep 2024 20:07:12 +0200 Subject: [PATCH] avoid double mutex lock --- src/driver/record.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/driver/record.cpp b/src/driver/record.cpp index c2bba6490..b77b43637 100644 --- a/src/driver/record.cpp +++ b/src/driver/record.cpp @@ -1409,11 +1409,14 @@ int CRecordManager::handleMsg(const neutrino_msg_t msg, neutrino_msg_data_t data } else if(data == check_timer) { if(CNeutrinoApp::getInstance()->getMode() != NeutrinoModes::mode_standby) { - mutex.lock(); int have_err = 0; - for(recmap_iterator_t it = recmap.begin(); it != recmap.end(); it++) - have_err |= it->second->GetStatus(); - mutex.unlock(); + bool locked = mutex.trylock(); + if (!locked) { + have_err = 0; + for(recmap_iterator_t it = recmap.begin(); it != recmap.end(); it++) + have_err |= it->second->GetStatus(); + mutex.unlock(); + } //printf("%s: check status: show err %d warn %d have_err %d\n", __FUNCTION__, error_display, warn_display, have_err); //FIXME if (have_err) { if ((have_err & REC_STATUS_OVERFLOW) && error_display) {