diff --git a/include/interactive_markers/message_context.hpp b/include/interactive_markers/message_context.hpp index 0ecd48eb..fbefbbc8 100644 --- a/include/interactive_markers/message_context.hpp +++ b/include/interactive_markers/message_context.hpp @@ -60,7 +60,7 @@ class MessageContext MessageContext(const MessageContext &) = default; - MessageContext & operator=(const MessageContext & other); + MessageContext & operator=(const MessageContext & other) = default; // transform all messages with timestamp into target frame void getTfTransforms(); diff --git a/src/interactive_marker_server.cpp b/src/interactive_marker_server.cpp index 205a44d9..f14725f7 100644 --- a/src/interactive_marker_server.cpp +++ b/src/interactive_marker_server.cpp @@ -377,6 +377,8 @@ void InteractiveMarkerServer::getInteractiveMarkersCallback( (void)request_header; (void)request; + std::unique_lock lock(mutex_); + RCLCPP_DEBUG(logger_, "Responding to request to get interactive markers"); response->sequence_number = sequence_number_; response->markers.reserve(marker_contexts_.size()); diff --git a/src/message_context.cpp b/src/message_context.cpp index c2270ae0..75b21371 100644 --- a/src/message_context.cpp +++ b/src/message_context.cpp @@ -75,16 +75,6 @@ MessageContext::MessageContext( init(); } -template -MessageContext & MessageContext::operator=(const MessageContext & other) -{ - open_marker_idx_ = other.open_marker_idx_; - open_pose_idx_ = other.open_pose_idx_; - target_frame_ = other.target_frame_; - enable_autocomplete_transparency_ = other.enable_autocomplete_transparency_; - return *this; -} - template bool MessageContext::getTransform( std_msgs::msg::Header & header, diff --git a/src/tools.cpp b/src/tools.cpp index b30ec8ab..4608ac7d 100644 --- a/src/tools.cpp +++ b/src/tools.cpp @@ -34,6 +34,7 @@ #endif #include +#include #include #include // NOLINT(build/include_order): cpplint misclassifies the C++20 header as C #include @@ -189,8 +190,8 @@ void autoComplete( marker.pose.orientation.z = marker_orientation.z(); marker.pose.orientation.w = marker_orientation.w(); - static unsigned id = 0; - marker.id = id++; + static std::atomic id{0}; + marker.id = id.fetch_add(1, std::memory_order_relaxed); marker.ns = msg.name; // If transparency is disabled, set alpha to 1.0 for all semi-transparent markers