From f56fbc709d62d6cd72f427d8d5834774dfcdb02d Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Sat, 10 Dec 2016 19:49:09 +0300 Subject: client: correct session cleanup few memory leaks eliminated --- client-qt/udm-client-qt/udm_main.cpp | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) (limited to 'client-qt/udm-client-qt/udm_main.cpp') 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 #include #include +#include #include @@ -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))); -- cgit v1.2.3