diff options
author | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2016-12-10 19:49:09 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2016-12-10 19:49:09 +0300 |
commit | f56fbc709d62d6cd72f427d8d5834774dfcdb02d (patch) | |
tree | 08b4b3e0fac710f291c6f9299eada12901627eb6 | |
parent | 028ddc8e576e78d500f1cba443d7e21401130bb6 (diff) |
client:
correct session cleanup
few memory leaks eliminated
-rw-r--r-- | client-qt/udm-client-qt/client_session.cpp | 4 | ||||
-rw-r--r-- | client-qt/udm-client-qt/filters_model.cpp | 7 | ||||
-rw-r--r-- | client-qt/udm-client-qt/udm_main.cpp | 32 |
3 files changed, 17 insertions, 26 deletions
diff --git a/client-qt/udm-client-qt/client_session.cpp b/client-qt/udm-client-qt/client_session.cpp index 25b545d..ad5363f 100644 --- a/client-qt/udm-client-qt/client_session.cpp +++ b/client-qt/udm-client-qt/client_session.cpp @@ -306,10 +306,8 @@ void client_session::handle_write(const boost::system::error_code& error) client_session::~client_session() { //TODO: correct thread termination, reimplement -// io_service_.stop(); delete socket_; -// boost::asio::io_service *s = &io_service_; -// delete s; + delete recv_data_; emit client_disconnected(); emit terminate_thread(); } diff --git a/client-qt/udm-client-qt/filters_model.cpp b/client-qt/udm-client-qt/filters_model.cpp index d69a4be..eb5e09e 100644 --- a/client-qt/udm-client-qt/filters_model.cpp +++ b/client-qt/udm-client-qt/filters_model.cpp @@ -23,12 +23,12 @@ -filters_model::filters_model(QObject *parent) +filters_model::filters_model(QObject */*parent*/) { } -int filters_model::columnCount(const QModelIndex &parent) const +int filters_model::columnCount(const QModelIndex &/*parent*/) const { return 1; } @@ -39,18 +39,21 @@ QVariant filters_model::data(const QModelIndex& index, int role) const return QVariant(); if(role != Qt::DisplayRole) return QVariant(); + return QVariant(); } QModelIndex filters_model::index(int row, int column, const QModelIndex& parent) const { if (!hasIndex(row, column, parent)) return QModelIndex(); + return QModelIndex(); } QModelIndex filters_model::parent(const QModelIndex& index) const { if (!index.isValid()) return QModelIndex(); + return QModelIndex(); } int filters_model::rowCount(const QModelIndex& parent) const 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))); |