ProcessInterface: Fix parent-child relationship

Make ProcessInterface c'tor accept nullptr as parent.
Remove parent argument from subclasses of
ProcessInterface, as calling setProcessInterface()
sets the parent anyway. Fix parent-child relationship
in subclasses of ProcessInterface - pass *this as a parent.

Change-Id: I3c37c305a87bad0e6d11251ec3db538f3a5dd64b
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2022-02-21 13:14:43 +01:00
parent 098e3794db
commit 02d9a9b7b7
2 changed files with 9 additions and 13 deletions

View File

@@ -67,7 +67,7 @@ class QTCREATOR_UTILS_EXPORT ProcessInterface : public QObject
Q_OBJECT
public:
ProcessInterface(QObject *parent) : QObject(parent) {}
ProcessInterface(QObject *parent = nullptr) : QObject(parent) {}
virtual void start() { defaultStart(); }
virtual void terminate() = 0;

View File

@@ -218,9 +218,8 @@ public:
class TerminalImpl : public ProcessInterface
{
public:
TerminalImpl(QObject *parent, ProcessImpl processImpl, TerminalMode terminalMode)
: ProcessInterface(parent)
, m_terminal(this, processImpl, terminalMode)
TerminalImpl(ProcessImpl processImpl, TerminalMode terminalMode)
: m_terminal(this, processImpl, terminalMode)
{
connect(&m_terminal, &Internal::TerminalProcess::started,
this, &ProcessInterface::started);
@@ -274,9 +273,7 @@ private:
class QProcessImpl : public ProcessInterface
{
public:
QProcessImpl(QObject *parent)
: ProcessInterface(parent)
, m_process(new ProcessHelper(parent))
QProcessImpl() : m_process(new ProcessHelper(this))
{
connect(m_process, &QProcess::started,
this, &QProcessImpl::handleStarted);
@@ -368,10 +365,9 @@ class ProcessLauncherImpl : public ProcessInterface
{
Q_OBJECT
public:
ProcessLauncherImpl(QObject *parent)
: ProcessInterface(parent), m_token(uniqueToken())
ProcessLauncherImpl() : m_token(uniqueToken())
{
m_handle = LauncherInterface::registerHandle(parent, token());
m_handle = LauncherInterface::registerHandle(this, token());
connect(m_handle, &CallerHandle::errorOccurred,
this, &ProcessInterface::errorOccurred);
connect(m_handle, &CallerHandle::started,
@@ -459,10 +455,10 @@ public:
? defaultProcessImpl() : m_setup.m_processImpl;
if (m_setup.m_terminalMode != TerminalMode::Off)
return new TerminalImpl(parent(), impl, m_setup.m_terminalMode);
return new TerminalImpl(impl, m_setup.m_terminalMode);
else if (impl == ProcessImpl::QProcess)
return new QProcessImpl(parent());
return new ProcessLauncherImpl(parent());
return new QProcessImpl();
return new ProcessLauncherImpl();
}
void setProcessInterface(ProcessInterface *process)