summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2016-12-10 19:49:09 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2016-12-10 19:49:09 +0300
commitf56fbc709d62d6cd72f427d8d5834774dfcdb02d (patch)
tree08b4b3e0fac710f291c6f9299eada12901627eb6
parent028ddc8e576e78d500f1cba443d7e21401130bb6 (diff)
client:
correct session cleanup few memory leaks eliminated
-rw-r--r--client-qt/udm-client-qt/client_session.cpp4
-rw-r--r--client-qt/udm-client-qt/filters_model.cpp7
-rw-r--r--client-qt/udm-client-qt/udm_main.cpp32
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)));