From 6dfe9acce744dd0abf5d845bd0714e63216b8618 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sat, 30 Jul 2022 21:57:27 +0200 Subject: [PATCH 1/2] ensure synchronised access to our predicate Signed-off-by: Aaron --- micro_ros_agent/src/agent/graph_manager/graph_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..1816058 100644 --- a/micro_ros_agent/src/agent/graph_manager/graph_manager.cpp +++ b/micro_ros_agent/src/agent/graph_manager/graph_manager.cpp @@ -144,6 +144,7 @@ inline void GraphManager::publish_microros_graph() { return this->graph_changed_; }); + graph_changed_ = false; } if (display_on_change_) @@ -151,7 +152,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; From fcb4f9403c4b1abf9cb3196339461e73f37af44a Mon Sep 17 00:00:00 2001 From: Aaron Date: Sat, 30 Jul 2022 21:56:46 +0200 Subject: [PATCH 2/2] release lock before signalling Signed-off-by: Aaron --- micro_ros_agent/src/agent/graph_manager/graph_manager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 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 1816058..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(); });