diff options
Diffstat (limited to 'client-qt/udm-client-qt/udm_main.cpp')
-rw-r--r-- | client-qt/udm-client-qt/udm_main.cpp | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/client-qt/udm-client-qt/udm_main.cpp b/client-qt/udm-client-qt/udm_main.cpp index 72d73d8..27ddce1 100644 --- a/client-qt/udm-client-qt/udm_main.cpp +++ b/client-qt/udm-client-qt/udm_main.cpp @@ -34,6 +34,7 @@ #include <QPushButton> #include <QToolBar> #include <QMenu> +#include <QApplication> #include <boost/log/trivial.hpp> @@ -47,12 +48,12 @@ udm_main::udm_main(QWidget *parent) : QMainWindow(parent) { - io_service_ = nullptr; - thread_client_session = nullptr; - //session = nullptr; + io_service_ = new boost::asio::io_service; + thread_client_session = new QThread(this); + session = nullptr; auto menu_main = this->menuBar()->addMenu(tr("Main")); - auto action_connect = menu_main->addAction(tr("Connect")); - connect(action_connect, SIGNAL(triggered()), this, SLOT(show_connect_widget())); + auto menu_connect = menu_main->addAction(tr("Connect")); + connect(menu_connect, SIGNAL(triggered()), this, SLOT(show_connect_widget())); auto action_exit = menu_main->addAction(tr("Exit")); connect(action_exit, SIGNAL(triggered(bool)), this, SLOT(close())); //TODO: something better lbl_state = new QLabel; @@ -203,24 +204,13 @@ void udm_main::show_connect_widget() void udm_main::client_pre_connect_init() { - if(thread_client_session) + if(session) { - thread_client_session->quit(); - delete thread_client_session; - thread_client_session = nullptr; + session->moveToThread(QApplication::instance()->thread()); + thread_client_session->quit(); + io_service_->stop(); + delete session; } - thread_client_session = new QThread(this); - if(io_service_) - { - delete io_service_; - io_service_ = nullptr; - } - io_service_ = new boost::asio::io_service; -/* if(session) //crashing - { - delete session; - session = nullptr; - } */ session = new client_session(0, io_service_); //parent must be 0 here connect(session, SIGNAL(server_message_received(server_msg)), this, SLOT(server_message_received(server_msg))); connect(session, SIGNAL(client_connected(bool,QString)), this, SLOT(client_connected(bool,QString))); |