From 442e7d162dd23d2d36ee6bfc8b9dee566eabcbc8 Mon Sep 17 00:00:00 2001
From: Joan Perez Ibarz <jperez@iri.upc.edu>
Date: Tue, 7 Jun 2011 08:56:34 +0000
Subject: [PATCH] - fixing bug for base algorithm. Pure virtual function was
 called in reconfigure callback. Now initialization is done in spin instead of
 constructor

---
 include/iri_base_algorithm/iri_base_algorithm.h | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/include/iri_base_algorithm/iri_base_algorithm.h b/include/iri_base_algorithm/iri_base_algorithm.h
index c804249..b8ce13f 100644
--- a/include/iri_base_algorithm/iri_base_algorithm.h
+++ b/include/iri_base_algorithm/iri_base_algorithm.h
@@ -310,8 +310,8 @@ IriBaseAlgorithm<Algorithm>::IriBaseAlgorithm() :
   this->thread_server_->create_thread(this->main_thread_id_);
   this->thread_server_->attach_thread(this->main_thread_id_, this->mainThread, this);
   
-  // assign callback to dynamic reconfigure server
-  dsrv_.setCallback(boost::bind(&IriBaseAlgorithm<Algorithm>::reconfigureCallback, this, _1, _2));
+//   // assign callback to dynamic reconfigure server
+//   dsrv_.setCallback(boost::bind(&IriBaseAlgorithm<Algorithm>::reconfigureCallback, this, _1, _2));
 }
 
 template <class Algorithm>
@@ -325,8 +325,11 @@ IriBaseAlgorithm<Algorithm>::~IriBaseAlgorithm()
 template <class Algorithm>
 void IriBaseAlgorithm<Algorithm>::reconfigureCallback(Config &config, uint32_t level)
 {
-  node_config_update(config, level);
+  ROS_INFO("IriBaseAlgorithm::reconfigureCallback");
+  this->node_config_update(config, level);
+  ROS_INFO("IriBaseAlgorithm::reconfigureCallback: node_config_update");
   this->alg_.config_update(config, level);
+  ROS_INFO("IriBaseAlgorithm::reconfigureCallback: alg_.config_update");
 }
 
 template <class Algorithm>
@@ -368,7 +371,10 @@ int IriBaseAlgorithm<Algorithm>::spin(void)
   // launch ros spin in different thread
   this->ros_thread_.reset( new boost::thread(boost::bind(&ros::spin)) );
   assert(ros_thread_);
-  
+
+  // assign callback to dynamic reconfigure server
+  this->dsrv_.setCallback(boost::bind(&IriBaseAlgorithm<Algorithm>::reconfigureCallback, this, _1, _2));
+
   // launch node thread
   this->thread_server_->start_thread( this->main_thread_id_);
   
-- 
GitLab