diff --git a/src/ros_publish.cpp b/src/ros_publish.cpp index 06d483f0e44a0c4d2195e4308b37a03630fad20a..c9856483d1534dd666ac2db5791d6f026195b32d 100644 --- a/src/ros_publish.cpp +++ b/src/ros_publish.cpp @@ -220,9 +220,10 @@ namespace dynamicgraph } //lock the mutex to avoid deleting the signal during a call to trigger + boost::mutex::scoped_lock lock (mutex_); + signalDeregistration(signal); bindedSignal_.erase (signal); - mutex_.unlock(); } std::string RosPublish::list () const @@ -262,13 +263,14 @@ namespace dynamicgraph nextPublication_ = ros::Time::now() + rate_; + boost::mutex::scoped_lock lock (mutex_); + while(! mutex_.try_lock() ){} for (iterator_t it = bindedSignal_.begin (); it != bindedSignal_.end (); ++it) { boost::get<1>(it->second) (t); } - mutex_.unlock(); return dummy; } diff --git a/src/ros_publish.hh b/src/ros_publish.hh index 6005f3ee295cf62f51c101f9856153dcd8e37224..bd9f81beae8b7d30b2f2ad99f0ac6fb1daf306c2 100644 --- a/src/ros_publish.hh +++ b/src/ros_publish.hh @@ -4,7 +4,7 @@ # include <boost/shared_ptr.hpp> # include <boost/tuple/tuple.hpp> -# include <boost/interprocess/sync/interprocess_mutex.hpp> +# include <boost/thread/mutex.hpp> # include <dynamic-graph/entity.h> # include <dynamic-graph/signal-time-dependent.h> @@ -94,7 +94,7 @@ namespace dynamicgraph dynamicgraph::SignalTimeDependent<int,int> trigger_; ros::Duration rate_; ros::Time nextPublication_; - boost::interprocess::interprocess_mutex mutex_; + boost::mutex mutex_; }; } // end of namespace dynamicgraph.