From a48acdff52e4cf3d26f2f64beb1e30cdac8cdb16 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Tue, 19 Jul 2016 23:22:41 +0300 Subject: [PATCH] QmakePM: Replace QSignalMapper with a lambda Change-Id: Iea656322c56f31f6958d3d497f98fc3bcb424c78 Reviewed-by: Tobias Hunger --- .../qmakeprojectmanager/externaleditors.cpp | 18 +++++------------- .../qmakeprojectmanager/externaleditors.h | 2 -- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/plugins/qmakeprojectmanager/externaleditors.cpp b/src/plugins/qmakeprojectmanager/externaleditors.cpp index 6fd2b3dbfb9..ccafbe6b212 100644 --- a/src/plugins/qmakeprojectmanager/externaleditors.cpp +++ b/src/plugins/qmakeprojectmanager/externaleditors.cpp @@ -37,7 +37,6 @@ #include #include -#include #include #include @@ -261,24 +260,17 @@ bool DesignerExternalEditor::startEditor(const QString &fileName, QString *error if (!startEditorProcess(data, errorMessage)) return false; - // Set up signal mapper to track process termination via socket - if (!m_terminationMapper) { - m_terminationMapper = new QSignalMapper(this); - connect(m_terminationMapper, - static_cast(&QSignalMapper::mapped), - this, &DesignerExternalEditor::processTerminated); - } // Insert into cache if socket is created, else try again next time if (server.waitForNewConnection(3000)) { QTcpSocket *socket = server.nextPendingConnection(); socket->setParent(this); - m_processCache.insert(data.binary, socket); - m_terminationMapper->setMapping(socket, data.binary); - auto mapSlot = static_cast(&QSignalMapper::map); - connect(socket, &QAbstractSocket::disconnected, m_terminationMapper, mapSlot); + const QString binary = data.binary; + m_processCache.insert(binary, socket); + auto mapSlot = [this, binary] { processTerminated(binary); }; + connect(socket, &QAbstractSocket::disconnected, this, mapSlot); connect(socket, static_cast(&QAbstractSocket::error), - m_terminationMapper, mapSlot); + this, mapSlot); } return true; } diff --git a/src/plugins/qmakeprojectmanager/externaleditors.h b/src/plugins/qmakeprojectmanager/externaleditors.h index 4c08d1e5bf5..f80e1c41a92 100644 --- a/src/plugins/qmakeprojectmanager/externaleditors.h +++ b/src/plugins/qmakeprojectmanager/externaleditors.h @@ -34,7 +34,6 @@ QT_BEGIN_NAMESPACE class QProcess; class QTcpSocket; -class QSignalMapper; QT_END_NAMESPACE namespace QtSupport { class BaseQtVersion; } @@ -132,7 +131,6 @@ private: typedef QMap ProcessCache; ProcessCache m_processCache; - QSignalMapper *m_terminationMapper = nullptr; }; } // namespace Internal