From 732e751d31427f1997c738c220d2bc48af97ed50 Mon Sep 17 00:00:00 2001 From: cmraaron <102722879+cmraaron@users.noreply.github.com> Date: Fri, 19 Aug 2022 09:17:36 +0200 Subject: [PATCH] Synchronise predicate (#160) * ensure synchronised access to our predicate Signed-off-by: Aaron * release lock before signalling Signed-off-by: Aaron Signed-off-by: Aaron (cherry picked from commit d4be8403327d1b96ccca5f5e01d1719799668a80) --- micro_ros_agent/src/agent/graph_manager/graph_manager.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/micro_ros_agent/src/agent/graph_manager/graph_manager.cpp b/micro_ros_agent/src/agent/graph_manager/graph_manager.cpp index 69b8f93..3338c97 100644 --- a/micro_ros_agent/src/agent/graph_manager/graph_manager.cpp +++ b/micro_ros_agent/src/agent/graph_manager/graph_manager.cpp @@ -126,8 +126,10 @@ GraphManager::GraphManager(eprosima::fastdds::dds::DomainId_t domain_id) // Set graph cache on change callback function graphCache_.set_on_change_callback([this]() { - std::unique_lock lock(this->mtx_); - this->graph_changed_ = true; + { + std::unique_lock lock(this->mtx_); + this->graph_changed_ = true; + } this->cv_.notify_one(); }); @@ -144,6 +146,7 @@ inline void GraphManager::publish_microros_graph() { return this->graph_changed_; }); + graph_changed_ = false; } if (display_on_change_) @@ -151,7 +154,6 @@ inline void GraphManager::publish_microros_graph() std::cout << "Updated uros Graph: graph changed" << std::endl; std::cout << graphCache_ << std::endl; } - graph_changed_ = false; micro_ros_msgs::msg::Graph graph_message;