From 5f9a7b80e8f3ae2e81a20b9952298a9fbe8c47e3 2018-01-16 16:30:47 From: mperrinel Date: 2018-01-16 16:30:47 Subject: [PATCH] Fix bug when canceling acquisition --- diff --git a/core/src/Variable/VariableAcquisitionWorker.cpp b/core/src/Variable/VariableAcquisitionWorker.cpp index de9905b..bb2a7c0 100644 --- a/core/src/Variable/VariableAcquisitionWorker.cpp +++ b/core/src/Variable/VariableAcquisitionWorker.cpp @@ -361,6 +361,7 @@ void VariableAcquisitionWorker::VariableAcquisitionWorkerPrivate::removeAcqReque m_AcqIdentifierToAcqDataPacketVectorMap.erase(acqRequestId); m_AcqIdentifierToAcqRequestMap.erase(acqRequestId); + m_VIdentifierToCurrrentAcqIdMap.erase(vIdentifier); unlock(); qCDebug(LOG_VariableAcquisitionWorker()) diff --git a/core/src/Variable/VariableController.cpp b/core/src/Variable/VariableController.cpp index e00039b..18958df 100644 --- a/core/src/Variable/VariableController.cpp +++ b/core/src/Variable/VariableController.cpp @@ -950,6 +950,17 @@ void VariableController::VariableControllerPrivate::cancelVariableRequest(QUuid auto &varIds = varGroupIdToVarIdsIt->second; auto varIdsEnd = varIds.end(); + + // First pass all canUpdate of handler to false + for (auto varIdsIt = varIds.begin(); (varIdsIt != varIdsEnd); ++varIdsIt) { + auto itVarHandler = m_VarIdToVarRequestHandler.find(*varIdsIt); + if (itVarHandler != m_VarIdToVarRequestHandler.cend()) { + + auto varHandler = itVarHandler->second.get(); + varHandler->m_CanUpdate = false; + } + } + for (auto varIdsIt = varIds.begin(); (varIdsIt != varIdsEnd); ++varIdsIt) { auto itVarHandler = m_VarIdToVarRequestHandler.find(*varIdsIt); if (itVarHandler != m_VarIdToVarRequestHandler.cend()) { @@ -972,7 +983,6 @@ void VariableController::VariableControllerPrivate::cancelVariableRequest(QUuid itVarHandler->first); } m_VariableModel->setDataProgress(var, 0.0); - varHandler->m_CanUpdate = false; varHandler->m_State = VariableRequestHandlerState::OFF; varHandler->m_RunningVarRequest = VariableRequest{}; } @@ -991,7 +1001,6 @@ void VariableController::VariableControllerPrivate::cancelVariableRequest(QUuid itVarHandler->first); } m_VariableModel->setDataProgress(var, 0.0); - varHandler->m_CanUpdate = false; varHandler->m_State = VariableRequestHandlerState::RUNNING; varHandler->m_RunningVarRequest = varHandler->m_PendingVarRequest; varHandler->m_PendingVarRequest = VariableRequest{};