diff --git a/src/mavsdk/plugins/mission_raw/mission_raw_impl.cpp b/src/mavsdk/plugins/mission_raw/mission_raw_impl.cpp index 8a3124764..01b0e6d49 100644 --- a/src/mavsdk/plugins/mission_raw/mission_raw_impl.cpp +++ b/src/mavsdk/plugins/mission_raw/mission_raw_impl.cpp @@ -172,6 +172,12 @@ void MissionRawImpl::upload_mission_items_async( [this, callback, int_items](MavlinkMissionTransferClient::Result result) { auto converted_result = convert_result(result); auto converted_items = convert_items(int_items); + + if (converted_result == MissionRaw::Result::Success) { + std::lock_guard lock(_mission_progress.mutex); + _mission_progress.last.total = int_items.size(); + } + _system_impl->call_user_callback([callback, converted_result, converted_items]() { if (callback) { callback(converted_result); @@ -290,6 +296,12 @@ void MissionRawImpl::download_mission_async(const MissionRaw::DownloadMissionCal std::vector items) { auto converted_result = convert_result(result); auto converted_items = convert_items(items); + + if (converted_result == MissionRaw::Result::Success) { + std::lock_guard lock(_mission_progress.mutex); + _mission_progress.last.total = items.size(); + } + _system_impl->call_user_callback([callback, converted_result, converted_items]() { callback(converted_result, converted_items); }); @@ -431,9 +443,6 @@ std::vector MissionRawImpl::convert_items( new_items.push_back(convert_item(transfer_item)); } - std::lock_guard lock(_mission_progress.mutex); - _mission_progress.last.total = new_items.size(); - return new_items; }