diff --git a/example/test/example_test_gtest.cpp b/example/test/example_test_gtest.cpp index 40e06e1..8d1155d 100644 --- a/example/test/example_test_gtest.cpp +++ b/example/test/example_test_gtest.cpp @@ -65,7 +65,7 @@ TEST_F(ExampleTest, check_parameters) { } TEST_F(ExampleTest, try_get_params) { - ASSERT_TRUE(param_listener_->try_get_params(params_)); + ASSERT_FALSE(param_listener_->try_get_params(params_)); const rclcpp ::Parameter new_param("interpolation_mode", "linear"); example_test_node_->set_parameter(new_param); diff --git a/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp/parameter_library_header b/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp/parameter_library_header index 179d506..909b9bf 100644 --- a/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp/parameter_library_header +++ b/generate_parameter_library_py/generate_parameter_library_py/jinja_templates/cpp/parameter_library_header @@ -125,12 +125,12 @@ struct StackParams { } bool try_get_params(Params & params_in) const { - if (mutex_.try_lock()) { + std::unique_lock lock(mutex_, std::try_to_lock); + if (lock.owns_lock()) { if (const bool is_old = params_in.__stamp != params_.__stamp; is_old) { params_in = params_; + return true; } - mutex_.unlock(); - return true; } return false; }