mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-04 00:37:46 +08:00
Fixed rtabmapviz exit without hard kill
This commit is contained in:
+11
-2
@@ -33,9 +33,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include <rtabmap/utilite/ULogger.h>
|
#include <rtabmap/utilite/ULogger.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
|
QApplication * app = 0;
|
||||||
|
|
||||||
void my_handler(int s){
|
void my_handler(int s){
|
||||||
ROS_INFO("rtabmapviz: ctrl-c catched! Exiting Qt app...");
|
ROS_INFO("rtabmapviz: ctrl-c catched! Exiting Qt app...");
|
||||||
QApplication::exit();
|
if(app)
|
||||||
|
{
|
||||||
|
QMetaObject::invokeMethod(app, "quit");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
@@ -47,6 +52,9 @@ int main(int argc, char** argv)
|
|||||||
|
|
||||||
ros::init(argc, argv, "rtabmapviz");
|
ros::init(argc, argv, "rtabmapviz");
|
||||||
|
|
||||||
|
app = new QApplication(argc, argv);
|
||||||
|
app->connect( app, SIGNAL( lastWindowClosed() ), app, SLOT( quit() ) );
|
||||||
|
|
||||||
GuiWrapper gui(argc, argv);
|
GuiWrapper gui(argc, argv);
|
||||||
|
|
||||||
// Catch ctrl-c to close the gui
|
// Catch ctrl-c to close the gui
|
||||||
@@ -63,10 +71,11 @@ int main(int argc, char** argv)
|
|||||||
|
|
||||||
ROS_INFO("rtabmapviz started.");
|
ROS_INFO("rtabmapviz started.");
|
||||||
// Now wait for application to finish
|
// Now wait for application to finish
|
||||||
int r = gui.exec();// MUST be called by the Main Thread
|
int r = app->exec();// MUST be called by the Main Thread
|
||||||
|
|
||||||
spinner.stop();
|
spinner.stop();
|
||||||
|
|
||||||
|
delete app;
|
||||||
ROS_INFO("rtabmapviz: All done! Closing...");
|
ROS_INFO("rtabmapviz: All done! Closing...");
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,6 @@ float max3( const float& a, const float& b, const float& c)
|
|||||||
}
|
}
|
||||||
|
|
||||||
GuiWrapper::GuiWrapper(int & argc, char** argv) :
|
GuiWrapper::GuiWrapper(int & argc, char** argv) :
|
||||||
app_(0),
|
|
||||||
mainWindow_(0),
|
mainWindow_(0),
|
||||||
frameId_("base_link"),
|
frameId_("base_link"),
|
||||||
waitForTransform_(true),
|
waitForTransform_(true),
|
||||||
@@ -85,7 +84,6 @@ GuiWrapper::GuiWrapper(int & argc, char** argv) :
|
|||||||
depthOdomInfo2Sync_(0)
|
depthOdomInfo2Sync_(0)
|
||||||
{
|
{
|
||||||
ros::NodeHandle nh;
|
ros::NodeHandle nh;
|
||||||
app_ = new QApplication(argc, argv);
|
|
||||||
|
|
||||||
QString configFile = QDir::homePath()+"/.ros/rtabmapGUI.ini";
|
QString configFile = QDir::homePath()+"/.ros/rtabmapGUI.ini";
|
||||||
for(int i=1; i<argc; ++i)
|
for(int i=1; i<argc; ++i)
|
||||||
@@ -111,7 +109,6 @@ GuiWrapper::GuiWrapper(int & argc, char** argv) :
|
|||||||
bool paused = false;
|
bool paused = false;
|
||||||
nh.param("is_rtabmap_paused", paused, paused);
|
nh.param("is_rtabmap_paused", paused, paused);
|
||||||
mainWindow_->setMonitoringState(paused);
|
mainWindow_->setMonitoringState(paused);
|
||||||
app_->connect( app_, SIGNAL( lastWindowClosed() ), app_, SLOT( quit() ) );
|
|
||||||
|
|
||||||
ros::NodeHandle pnh("~");
|
ros::NodeHandle pnh("~");
|
||||||
|
|
||||||
@@ -249,12 +246,6 @@ GuiWrapper::~GuiWrapper()
|
|||||||
|
|
||||||
delete infoMapSync_;
|
delete infoMapSync_;
|
||||||
delete mainWindow_;
|
delete mainWindow_;
|
||||||
delete app_;
|
|
||||||
}
|
|
||||||
|
|
||||||
int GuiWrapper::exec()
|
|
||||||
{
|
|
||||||
return app_->exec();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiWrapper::infoMapCallback(
|
void GuiWrapper::infoMapCallback(
|
||||||
|
|||||||
@@ -68,8 +68,6 @@ public:
|
|||||||
GuiWrapper(int & argc, char** argv);
|
GuiWrapper(int & argc, char** argv);
|
||||||
virtual ~GuiWrapper();
|
virtual ~GuiWrapper();
|
||||||
|
|
||||||
int exec();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void handleEvent(UEvent * anEvent);
|
virtual void handleEvent(UEvent * anEvent);
|
||||||
|
|
||||||
@@ -263,7 +261,6 @@ private:
|
|||||||
rtabmap::Transform getTransform(const std::string & fromFrameId, const std::string & toFrameId, const ros::Time & stamp) const;
|
rtabmap::Transform getTransform(const std::string & fromFrameId, const std::string & toFrameId, const ros::Time & stamp) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QApplication * app_;
|
|
||||||
rtabmap::MainWindow * mainWindow_;
|
rtabmap::MainWindow * mainWindow_;
|
||||||
std::string cameraNodeName_;
|
std::string cameraNodeName_;
|
||||||
double lastOdomInfoUpdateTime_;
|
double lastOdomInfoUpdateTime_;
|
||||||
|
|||||||
Reference in New Issue
Block a user