From b60047318aba0df52b23ad553a34d9cb3363ef95 Mon Sep 17 00:00:00 2001 From: Robert Haschke Date: Wed, 24 Jan 2018 19:27:02 +0100 Subject: [PATCH] code simplification Usually, if we receive stage statistics there are some changes as well. Hence, always emit notify signal in favour of complex change detection. --- .../src/remote_task_model.cpp | 17 +++++------------ .../src/remote_task_model.h | 2 +- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/visualization/motion_planning_tasks/src/remote_task_model.cpp b/visualization/motion_planning_tasks/src/remote_task_model.cpp index d8d3da86..76fb7e49 100644 --- a/visualization/motion_planning_tasks/src/remote_task_model.cpp +++ b/visualization/motion_planning_tasks/src/remote_task_model.cpp @@ -277,11 +277,10 @@ void RemoteTaskModel::processStageStatistics(const moveit_task_constructor_msgs: continue; } Node *n = it->second; - - bool changed = n->solutions_->processSolutionIDs(s.solved, s.failed, s.num_failed); + n->solutions_->processSolutionIDs(s.solved, s.failed, s.num_failed); // emit notify about model changes when node was already visited - if (changed && (n->node_flags_ & WAS_VISITED)) { + if (n->node_flags_ & WAS_VISITED) { QModelIndex idx = index(n); dataChanged(idx.sibling(idx.row(), 1), idx.sibling(idx.row(), 2)); } @@ -532,15 +531,13 @@ void RemoteSolutionModel::sortInternal() } // process solution ids received in stage statistics -bool RemoteSolutionModel::processSolutionIDs(const std::vector &successful, +void RemoteSolutionModel::processSolutionIDs(const std::vector &successful, const std::vector &failed, size_t num_failed) { - // are there any new items? - bool changed = (successful.size() + failed.size() != data_.size()); bool was_empty = data_.empty(); - auto last = --data_.end(); + // append new items to the end of data_ processSolutionIDs(successful, true); processSolutionIDs(failed, false); @@ -553,13 +550,9 @@ bool RemoteSolutionModel::processSolutionIDs(const std::vector &succes // the task may not report failure ids (in failed), // but it may report the overall number of failures num_failed_data_ = failed.size(); // needed to compute number of successes - if (num_failed_data_ > num_failed) - num_failed = num_failed_data_; - changed |= (num_failed != num_failed_); - num_failed_ = num_failed; + num_failed_ = std::max(num_failed, num_failed_data_); sortInternal(); - return changed; } void RemoteSolutionModel::processSolutionIDs(const std::vector &ids, bool successful) diff --git a/visualization/motion_planning_tasks/src/remote_task_model.h b/visualization/motion_planning_tasks/src/remote_task_model.h index 8f138a62..b7c78ae9 100644 --- a/visualization/motion_planning_tasks/src/remote_task_model.h +++ b/visualization/motion_planning_tasks/src/remote_task_model.h @@ -136,7 +136,7 @@ public: void sort(int column, Qt::SortOrder order); void setData(uint32_t id, float cost, const QString &name); - bool processSolutionIDs(const std::vector &successful, const std::vector &failed, size_t num_failed); + void processSolutionIDs(const std::vector &successful, const std::vector &failed, size_t num_failed); }; }