From 8184d8e703c22dc525b39493ff3e32752bc930aa Mon Sep 17 00:00:00 2001
From: hjk <qthjk@ovi.com>
Date: Wed, 15 Aug 2012 14:33:39 +0200
Subject: [PATCH] debugger: simplify DebuggerEngine construction

The master engine pointer can be given later.

Change-Id: I4d72679dcbd5fe7291067a5e78c984d26cc187aa
Reviewed-by: hjk <qthjk@ovi.com>
---
 src/plugins/debugger/cdb/cdbengine.cpp        | 11 +++----
 src/plugins/debugger/cdb/cdbengine.h          |  6 ++--
 src/plugins/debugger/debuggerengine.cpp       | 16 ++++++----
 src/plugins/debugger/debuggerengine.h         |  4 +--
 .../debugger/debuggerruncontrolfactory.h      |  1 -
 src/plugins/debugger/debuggerrunner.cpp       | 29 ++++++-----------
 .../debugger/gdb/abstractplaingdbadapter.cpp  |  5 ++-
 .../debugger/gdb/abstractplaingdbadapter.h    |  3 +-
 src/plugins/debugger/gdb/attachgdbadapter.cpp |  5 ++-
 src/plugins/debugger/gdb/attachgdbadapter.h   |  3 +-
 src/plugins/debugger/gdb/codagdbadapter.cpp   |  5 ++-
 src/plugins/debugger/gdb/codagdbadapter.h     |  3 +-
 src/plugins/debugger/gdb/coregdbadapter.cpp   |  5 ++-
 src/plugins/debugger/gdb/coregdbadapter.h     |  3 +-
 src/plugins/debugger/gdb/gdbengine.cpp        | 26 +++++++--------
 src/plugins/debugger/gdb/gdbengine.h          |  3 +-
 .../debugger/gdb/localplaingdbadapter.cpp     |  5 ++-
 .../debugger/gdb/localplaingdbadapter.h       |  3 +-
 .../debugger/gdb/remotegdbserveradapter.cpp   |  5 ++-
 .../debugger/gdb/remotegdbserveradapter.h     |  3 +-
 .../debugger/gdb/remoteplaingdbadapter.cpp    |  5 ++-
 .../debugger/gdb/remoteplaingdbadapter.h      |  3 +-
 src/plugins/debugger/gdb/termgdbadapter.cpp   |  5 ++-
 src/plugins/debugger/gdb/termgdbadapter.h     |  4 +--
 src/plugins/debugger/qml/qmlcppengine.cpp     | 32 +++++--------------
 src/plugins/debugger/qml/qmlengine.cpp        | 10 +++---
 src/plugins/debugger/qml/qmlengine.h          |  3 +-
 27 files changed, 76 insertions(+), 130 deletions(-)

diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index 9a9251aa8d3..c461f576dd7 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -327,8 +327,7 @@ static inline bool validMode(DebuggerStartMode sm)
 }
 
 // Accessed by RunControlFactory
-DebuggerEngine *createCdbEngine(const DebuggerStartParameters &sp,
-    DebuggerEngine *masterEngine, QString *errorMessage)
+DebuggerEngine *createCdbEngine(const DebuggerStartParameters &sp, QString *errorMessage)
 {
 #ifdef Q_OS_WIN
     CdbOptionsPage *op = CdbOptionsPage::instance();
@@ -336,9 +335,8 @@ DebuggerEngine *createCdbEngine(const DebuggerStartParameters &sp,
         *errorMessage = QLatin1String("Internal error: Invalid start parameters passed for thre CDB engine.");
         return 0;
     }
-    return new CdbEngine(sp, masterEngine, op->options());
+    return new CdbEngine(sp, op->options());
 #else
-    Q_UNUSED(masterEngine)
     Q_UNUSED(sp)
 #endif
     *errorMessage = QString::fromLatin1("Unsupported debug mode");
@@ -426,9 +424,8 @@ static inline Utils::SavedAction *theAssemblerAction()
     return debuggerCore()->action(OperateByInstruction);
 }
 
-CdbEngine::CdbEngine(const DebuggerStartParameters &sp,
-        DebuggerEngine *masterEngine, const OptionsPtr &options) :
-    DebuggerEngine(sp, masterEngine),
+CdbEngine::CdbEngine(const DebuggerStartParameters &sp, const OptionsPtr &options) :
+    DebuggerEngine(sp),
     m_creatorExtPrefix("<qtcreatorcdbext>|"),
     m_tokenPrefix("<token>"),
     m_options(options),
diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h
index 10af0521460..f4e0e04f1a4 100644
--- a/src/plugins/debugger/cdb/cdbengine.h
+++ b/src/plugins/debugger/cdb/cdbengine.h
@@ -79,11 +79,9 @@ public:
     typedef void (CdbEngine::*BuiltinCommandHandler)(const CdbBuiltinCommandPtr &);
     typedef void (CdbEngine::*ExtensionCommandHandler)(const CdbExtensionCommandPtr &);
 
-    explicit CdbEngine(const DebuggerStartParameters &sp,
-        DebuggerEngine *masterEngine,
-        const OptionsPtr &options);
+    CdbEngine(const DebuggerStartParameters &sp, const OptionsPtr &options);
+    ~CdbEngine();
 
-    virtual ~CdbEngine();
     // Factory function that returns 0 if the debug engine library cannot be found.
 
     virtual bool setToolTipExpression(const QPoint &mousePos, TextEditor::ITextEditor *editor,
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index 4c4021ecd37..4d2f088ae26 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -153,11 +153,9 @@ class DebuggerEnginePrivate : public QObject
     Q_OBJECT
 
 public:
-    DebuggerEnginePrivate(DebuggerEngine *engine,
-            DebuggerEngine *masterEngine,
-            const DebuggerStartParameters &sp)
+    DebuggerEnginePrivate(DebuggerEngine *engine, const DebuggerStartParameters &sp)
       : m_engine(engine),
-        m_masterEngine(masterEngine),
+        m_masterEngine(0),
         m_runControl(0),
         m_startParameters(sp),
         m_state(DebuggerNotReady),
@@ -330,9 +328,8 @@ public:
 //
 //////////////////////////////////////////////////////////////////////
 
-DebuggerEngine::DebuggerEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *parentEngine)
-  : d(new DebuggerEnginePrivate(this, parentEngine, startParameters))
+DebuggerEngine::DebuggerEngine(const DebuggerStartParameters &startParameters)
+  : d(new DebuggerEnginePrivate(this, startParameters))
 {}
 
 DebuggerEngine::~DebuggerEngine()
@@ -1264,6 +1261,11 @@ bool DebuggerEngine::isMasterEngine() const
     return d->m_masterEngine == 0;
 }
 
+void DebuggerEngine::setMasterEngine(DebuggerEngine *masterEngine)
+{
+    d->m_masterEngine = masterEngine;
+}
+
 DebuggerEngine *DebuggerEngine::masterEngine() const
 {
     return d->m_masterEngine;
diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h
index b87c7b5f6ef..580a3e4db7e 100644
--- a/src/plugins/debugger/debuggerengine.h
+++ b/src/plugins/debugger/debuggerengine.h
@@ -139,8 +139,7 @@ class DEBUGGER_EXPORT DebuggerEngine : public QObject
     Q_OBJECT
 
 public:
-    explicit DebuggerEngine(const DebuggerStartParameters &sp,
-        DebuggerEngine *parentEngine = 0);
+    explicit DebuggerEngine(const DebuggerStartParameters &sp);
     virtual ~DebuggerEngine();
 
     const DebuggerStartParameters &startParameters() const;
@@ -360,6 +359,7 @@ protected:
     virtual void frameDown();
 
     void setTargetState(DebuggerState state);
+    void setMasterEngine(DebuggerEngine *masterEngine);
 
     DebuggerRunControl *runControl() const;
 
diff --git a/src/plugins/debugger/debuggerruncontrolfactory.h b/src/plugins/debugger/debuggerruncontrolfactory.h
index b53bd94df48..9f0b2c230ab 100644
--- a/src/plugins/debugger/debuggerruncontrolfactory.h
+++ b/src/plugins/debugger/debuggerruncontrolfactory.h
@@ -57,7 +57,6 @@ public:
 
     static DebuggerEngine *createEngine(DebuggerEngineType et,
         const DebuggerStartParameters &sp,
-        DebuggerEngine *masterEngine,
         QString *errorMessage);
 
     static DebuggerRunControl *createAndScheduleRun(
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 317d1ce0e8b..bc78d87c84c 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -42,7 +42,6 @@
 #include "debuggerprofileinformation.h"
 #include "lldb/lldbenginehost.h"
 #include "debuggertooltipmanager.h"
-#include "qml/qmlengine.h"
 
 #ifdef Q_OS_WIN
 #  include "peutils.h"
@@ -85,19 +84,14 @@ namespace Internal {
 
 bool isCdbEngineEnabled(); // Check the configuration page
 //bool checkCdbConfiguration(const DebuggerStartParameters &sp, ConfigurationCheck *check);
-DebuggerEngine *createCdbEngine(const DebuggerStartParameters &sp,
-    DebuggerEngine *masterEngine, QString *error);
+DebuggerEngine *createCdbEngine(const DebuggerStartParameters &sp, QString *error);
 
 //bool checkGdbConfiguration(const DebuggerStartParameters &sp, ConfigurationCheck *check);
-DebuggerEngine *createGdbEngine(const DebuggerStartParameters &sp,
-    DebuggerEngine *masterEngine);
-
+DebuggerEngine *createGdbEngine(const DebuggerStartParameters &sp);
 DebuggerEngine *createScriptEngine(const DebuggerStartParameters &sp);
 DebuggerEngine *createPdbEngine(const DebuggerStartParameters &sp);
-QmlEngine *createQmlEngine(const DebuggerStartParameters &sp,
-    DebuggerEngine *masterEngine);
-DebuggerEngine *createQmlCppEngine(const DebuggerStartParameters &sp,
-    QString *errorMessage);
+DebuggerEngine *createQmlEngine(const DebuggerStartParameters &sp);
+DebuggerEngine *createQmlCppEngine(const DebuggerStartParameters &sp, QString *error);
 DebuggerEngine *createLldbEngine(const DebuggerStartParameters &sp);
 
 extern QString msgNoBinaryForToolChain(const Abi &abi);
@@ -326,7 +320,7 @@ DebuggerRunControl::DebuggerRunControl(RunConfiguration *runConfiguration,
     // Create the engine. Could arguably be moved to the factory, but
     // we still have a derived S60DebugControl. Should rarely fail, though.
     QString errorMessage;
-    d->m_engine = DebuggerRunControlFactory::createEngine(sp.masterEngineType, sp, 0, &errorMessage);
+    d->m_engine = DebuggerRunControlFactory::createEngine(sp.masterEngineType, sp, &errorMessage);
 
     if (d->m_engine) {
         DebuggerToolTipManager::instance()->registerEngine(d->m_engine);
@@ -757,23 +751,20 @@ RunConfigWidget *DebuggerRunControlFactory::createConfigurationWidget
     return new DebuggerRunConfigWidget(runConfiguration);
 }
 
-DebuggerEngine *DebuggerRunControlFactory::createEngine
-    (DebuggerEngineType et,
-     const DebuggerStartParameters &sp,
-     DebuggerEngine *masterEngine,
-     QString *errorMessage)
+DebuggerEngine *DebuggerRunControlFactory::createEngine(DebuggerEngineType et,
+    const DebuggerStartParameters &sp, QString *errorMessage)
 {
     switch (et) {
     case GdbEngineType:
-        return createGdbEngine(sp, masterEngine);
+        return createGdbEngine(sp);
     case ScriptEngineType:
         return createScriptEngine(sp);
     case CdbEngineType:
-        return createCdbEngine(sp, masterEngine, errorMessage);
+        return createCdbEngine(sp, errorMessage);
     case PdbEngineType:
         return createPdbEngine(sp);
     case QmlEngineType:
-        return createQmlEngine(sp, masterEngine);
+        return createQmlEngine(sp);
     case LldbEngineType:
         return createLldbEngine(sp);
     case QmlCppEngineType:
diff --git a/src/plugins/debugger/gdb/abstractplaingdbadapter.cpp b/src/plugins/debugger/gdb/abstractplaingdbadapter.cpp
index 6a1d209c027..2b76292dfba 100644
--- a/src/plugins/debugger/gdb/abstractplaingdbadapter.cpp
+++ b/src/plugins/debugger/gdb/abstractplaingdbadapter.cpp
@@ -49,9 +49,8 @@ namespace Internal {
     static_cast<GdbEngine::GdbCommandCallback>(&GdbAbstractPlainEngine::callback), \
     STRINGIFY(callback)
 
-GdbAbstractPlainEngine::GdbAbstractPlainEngine(const DebuggerStartParameters &startParameters,
-    DebuggerEngine *masterEngine)
-    : GdbEngine(startParameters, masterEngine)
+GdbAbstractPlainEngine::GdbAbstractPlainEngine(const DebuggerStartParameters &startParameters)
+    : GdbEngine(startParameters)
 {}
 
 void GdbAbstractPlainEngine::setupInferior()
diff --git a/src/plugins/debugger/gdb/abstractplaingdbadapter.h b/src/plugins/debugger/gdb/abstractplaingdbadapter.h
index 7986b647fb4..fa3bb49115a 100644
--- a/src/plugins/debugger/gdb/abstractplaingdbadapter.h
+++ b/src/plugins/debugger/gdb/abstractplaingdbadapter.h
@@ -42,8 +42,7 @@ class GdbAbstractPlainEngine : public GdbEngine
     Q_OBJECT
 
 public:
-    GdbAbstractPlainEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine);
+    explicit GdbAbstractPlainEngine(const DebuggerStartParameters &startParameters);
 
     void setupInferior();
     void runEngine();
diff --git a/src/plugins/debugger/gdb/attachgdbadapter.cpp b/src/plugins/debugger/gdb/attachgdbadapter.cpp
index 438d9313593..e32cc399633 100644
--- a/src/plugins/debugger/gdb/attachgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/attachgdbadapter.cpp
@@ -52,9 +52,8 @@ namespace Internal {
 //
 ///////////////////////////////////////////////////////////////////////
 
-GdbAttachEngine::GdbAttachEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine)
-    : GdbEngine(startParameters, masterEngine)
+GdbAttachEngine::GdbAttachEngine(const DebuggerStartParameters &startParameters)
+    : GdbEngine(startParameters)
 {
 }
 
diff --git a/src/plugins/debugger/gdb/attachgdbadapter.h b/src/plugins/debugger/gdb/attachgdbadapter.h
index 590fa7a374c..d77f934b406 100644
--- a/src/plugins/debugger/gdb/attachgdbadapter.h
+++ b/src/plugins/debugger/gdb/attachgdbadapter.h
@@ -48,8 +48,7 @@ class GdbAttachEngine : public GdbEngine
     Q_OBJECT
 
 public:
-    GdbAttachEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine);
+    explicit GdbAttachEngine(const DebuggerStartParameters &startParameters);
 
 private:
     DumperHandling dumperHandling() const { return DumperLoadedByGdb; }
diff --git a/src/plugins/debugger/gdb/codagdbadapter.cpp b/src/plugins/debugger/gdb/codagdbadapter.cpp
index 6cd37a19a02..47d479a24ad 100644
--- a/src/plugins/debugger/gdb/codagdbadapter.cpp
+++ b/src/plugins/debugger/gdb/codagdbadapter.cpp
@@ -116,9 +116,8 @@ static inline QString startMsg(const Coda::Session &session)
  *       - Stop all threads once one stops?
  *       - Breakpoints do not trigger in threads other than the main thread. */
 
-GdbCodaEngine:: GdbCodaEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine)
-    : GdbEngine(startParameters, masterEngine),
+GdbCodaEngine:: GdbCodaEngine(const DebuggerStartParameters &startParameters)
+    : GdbEngine(startParameters),
     m_running(false),
     m_stopReason(0),
     m_gdbAckMode(true),
diff --git a/src/plugins/debugger/gdb/codagdbadapter.h b/src/plugins/debugger/gdb/codagdbadapter.h
index 4e264382abd..d4e6d2df0ac 100644
--- a/src/plugins/debugger/gdb/codagdbadapter.h
+++ b/src/plugins/debugger/gdb/codagdbadapter.h
@@ -80,8 +80,7 @@ public:
     typedef Coda::Callback<const Coda::CodaCommandResult &> CodaCallback;
     typedef Coda::Callback<const GdbResponse &> GdbCallback;
 
-    GdbCodaEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine);
+    explicit GdbCodaEngine(const DebuggerStartParameters &startParameters);
     ~GdbCodaEngine();
 
     void setGdbServerName(const QString &name);
diff --git a/src/plugins/debugger/gdb/coregdbadapter.cpp b/src/plugins/debugger/gdb/coregdbadapter.cpp
index 44c70289d71..f6ca7af3665 100644
--- a/src/plugins/debugger/gdb/coregdbadapter.cpp
+++ b/src/plugins/debugger/gdb/coregdbadapter.cpp
@@ -63,9 +63,8 @@ namespace Internal {
 //
 ///////////////////////////////////////////////////////////////////////
 
-GdbCoreEngine::GdbCoreEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine)
-    : GdbEngine(startParameters, masterEngine)
+GdbCoreEngine::GdbCoreEngine(const DebuggerStartParameters &startParameters)
+    : GdbEngine(startParameters)
 {}
 
 GdbCoreEngine::~GdbCoreEngine()
diff --git a/src/plugins/debugger/gdb/coregdbadapter.h b/src/plugins/debugger/gdb/coregdbadapter.h
index 75104e44f38..1027fffbbf4 100644
--- a/src/plugins/debugger/gdb/coregdbadapter.h
+++ b/src/plugins/debugger/gdb/coregdbadapter.h
@@ -48,8 +48,7 @@ class GdbCoreEngine : public GdbEngine
     Q_OBJECT
 
 public:
-    GdbCoreEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine);
+    explicit GdbCoreEngine(const DebuggerStartParameters &startParameters);
     ~GdbCoreEngine();
 
 private:
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index af672d8252f..c9c1f3944de 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -237,9 +237,8 @@ private:
 //
 ///////////////////////////////////////////////////////////////////////
 
-GdbEngine::GdbEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine)
-  : DebuggerEngine(startParameters, masterEngine)
+GdbEngine::GdbEngine(const DebuggerStartParameters &startParameters)
+  : DebuggerEngine(startParameters)
 {
     setObjectName(_("GdbEngine"));
 
@@ -5399,27 +5398,24 @@ void GdbEngine::interruptLocalInferior(qint64 pid)
 // Factory
 //
 
-DebuggerEngine *createGdbEngine(const DebuggerStartParameters &sp,
-    DebuggerEngine *masterEngine)
+DebuggerEngine *createGdbEngine(const DebuggerStartParameters &sp)
 {
-    if (sp.toolChainAbi.os() == Abi::SymbianOS) {
-        // FIXME: 1 of 3 testing hacks.
-        return new GdbCodaEngine(sp, masterEngine);
-    }
+    if (sp.toolChainAbi.os() == Abi::SymbianOS)
+        return new GdbCodaEngine(sp);
 
     switch (sp.startMode) {
     case AttachCore:
-        return new GdbCoreEngine(sp, masterEngine);
+        return new GdbCoreEngine(sp);
     case AttachToRemoteServer:
-        return new GdbRemoteServerEngine(sp, masterEngine);
+        return new GdbRemoteServerEngine(sp);
     case StartRemoteGdb:
-        return new GdbRemotePlainEngine(sp, masterEngine);
+        return new GdbRemotePlainEngine(sp);
     case AttachExternal:
-        return new GdbAttachEngine(sp, masterEngine);
+        return new GdbAttachEngine(sp);
     default:
         if (sp.useTerminal)
-            return new GdbTermEngine(sp, masterEngine);
-        return new GdbLocalPlainEngine(sp, masterEngine);
+            return new GdbTermEngine(sp);
+        return new GdbLocalPlainEngine(sp);
     }
 }
 
diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h
index 71d364b7aa9..cd2e513653f 100644
--- a/src/plugins/debugger/gdb/gdbengine.h
+++ b/src/plugins/debugger/gdb/gdbengine.h
@@ -195,8 +195,7 @@ class GdbEngine : public Debugger::DebuggerEngine
     Q_OBJECT
 
 public:
-    GdbEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine);
+    explicit GdbEngine(const DebuggerStartParameters &startParameters);
     ~GdbEngine();
 
 private: ////////// General Interface //////////
diff --git a/src/plugins/debugger/gdb/localplaingdbadapter.cpp b/src/plugins/debugger/gdb/localplaingdbadapter.cpp
index 0684bf07889..59a02f59673 100644
--- a/src/plugins/debugger/gdb/localplaingdbadapter.cpp
+++ b/src/plugins/debugger/gdb/localplaingdbadapter.cpp
@@ -51,9 +51,8 @@ namespace Internal {
 //
 ///////////////////////////////////////////////////////////////////////
 
-GdbLocalPlainEngine::GdbLocalPlainEngine(const DebuggerStartParameters &startParameters,
-    DebuggerEngine *masterEngine)
-    : GdbAbstractPlainEngine(startParameters, masterEngine)
+GdbLocalPlainEngine::GdbLocalPlainEngine(const DebuggerStartParameters &startParameters)
+    : GdbAbstractPlainEngine(startParameters)
 {
     // Output
     connect(&m_outputCollector, SIGNAL(byteDelivery(QByteArray)),
diff --git a/src/plugins/debugger/gdb/localplaingdbadapter.h b/src/plugins/debugger/gdb/localplaingdbadapter.h
index 534651f743e..684360fe879 100644
--- a/src/plugins/debugger/gdb/localplaingdbadapter.h
+++ b/src/plugins/debugger/gdb/localplaingdbadapter.h
@@ -49,8 +49,7 @@ class GdbLocalPlainEngine : public GdbAbstractPlainEngine
     Q_OBJECT
 
 public:
-    GdbLocalPlainEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine);
+    explicit GdbLocalPlainEngine(const DebuggerStartParameters &startParameters);
 
 private:
     void setupEngine();
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
index c4d8505eead..bae3168c849 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
@@ -57,9 +57,8 @@ namespace Internal {
 //
 ///////////////////////////////////////////////////////////////////////
 
-GdbRemoteServerEngine::GdbRemoteServerEngine(const DebuggerStartParameters &startParameters,
-    DebuggerEngine *masterEngine)
-    : GdbEngine(startParameters, masterEngine)
+GdbRemoteServerEngine::GdbRemoteServerEngine(const DebuggerStartParameters &startParameters)
+    : GdbEngine(startParameters)
 {
     connect(&m_uploadProc, SIGNAL(error(QProcess::ProcessError)),
         SLOT(uploadProcError(QProcess::ProcessError)));
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.h b/src/plugins/debugger/gdb/remotegdbserveradapter.h
index 303c6172beb..e23c630b417 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.h
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.h
@@ -48,8 +48,7 @@ class GdbRemoteServerEngine : public GdbEngine
     Q_OBJECT
 
 public:
-    GdbRemoteServerEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine);
+    explicit GdbRemoteServerEngine(const DebuggerStartParameters &startParameters);
 
 private:
     DumperHandling dumperHandling() const;
diff --git a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp
index 17f91a0b11c..f4556f5bd67 100644
--- a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp
+++ b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp
@@ -39,9 +39,8 @@
 namespace Debugger {
 namespace Internal {
 
-GdbRemotePlainEngine::GdbRemotePlainEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine)
-    : GdbAbstractPlainEngine(startParameters, masterEngine),
+GdbRemotePlainEngine::GdbRemotePlainEngine(const DebuggerStartParameters &startParameters)
+    : GdbAbstractPlainEngine(startParameters),
       m_gdbProc(startParameters.connParams, this)
 {
     connect(&m_gdbProc, SIGNAL(started()), this, SLOT(handleGdbStarted()));
diff --git a/src/plugins/debugger/gdb/remoteplaingdbadapter.h b/src/plugins/debugger/gdb/remoteplaingdbadapter.h
index 79870bbdf83..92ab079b4e1 100644
--- a/src/plugins/debugger/gdb/remoteplaingdbadapter.h
+++ b/src/plugins/debugger/gdb/remoteplaingdbadapter.h
@@ -43,8 +43,7 @@ class GdbRemotePlainEngine : public GdbAbstractPlainEngine
 
 public:
     friend class RemoteGdbProcess;
-    GdbRemotePlainEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine);
+    explicit GdbRemotePlainEngine(const DebuggerStartParameters &startParameters);
 
 private slots:
     void handleGdbStarted();
diff --git a/src/plugins/debugger/gdb/termgdbadapter.cpp b/src/plugins/debugger/gdb/termgdbadapter.cpp
index 5ca2ec9aaa1..f41ec430743 100644
--- a/src/plugins/debugger/gdb/termgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/termgdbadapter.cpp
@@ -56,9 +56,8 @@ namespace Internal {
 //
 ///////////////////////////////////////////////////////////////////////
 
-GdbTermEngine::GdbTermEngine(const DebuggerStartParameters &startParameters,
-    DebuggerEngine *masterEngine)
-    : GdbEngine(startParameters, masterEngine)
+GdbTermEngine::GdbTermEngine(const DebuggerStartParameters &startParameters)
+    : GdbEngine(startParameters)
 {
 #ifdef Q_OS_WIN
     // Windows up to xp needs a workaround for attaching to freshly started processes. see proc_stub_win
diff --git a/src/plugins/debugger/gdb/termgdbadapter.h b/src/plugins/debugger/gdb/termgdbadapter.h
index d727a0d2fd5..a0a3cd1ccbb 100644
--- a/src/plugins/debugger/gdb/termgdbadapter.h
+++ b/src/plugins/debugger/gdb/termgdbadapter.h
@@ -50,9 +50,7 @@ class GdbTermEngine : public GdbEngine
     Q_OBJECT
 
 public:
-    GdbTermEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine);
-
+    explicit GdbTermEngine(const DebuggerStartParameters &startParameters);
     ~GdbTermEngine();
 
 private:
diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp
index 5bbe39719c0..fd38502e1fe 100644
--- a/src/plugins/debugger/qml/qmlcppengine.cpp
+++ b/src/plugins/debugger/qml/qmlcppengine.cpp
@@ -54,9 +54,6 @@ enum { debug = 0 };
 
 const int ConnectionWaitTimeMs = 5000;
 
-QmlEngine *createQmlEngine(const DebuggerStartParameters &,
-    DebuggerEngine *masterEngine);
-
 DebuggerEngine *createQmlCppEngine(const DebuggerStartParameters &sp,
                                    QString *errorMessage)
 {
@@ -74,32 +71,17 @@ DebuggerEngine *createQmlCppEngine(const DebuggerStartParameters &sp,
 //
 ////////////////////////////////////////////////////////////////////////
 
-class QmlCppEnginePrivate : public QObject
+class QmlCppEnginePrivate
 {
-    Q_OBJECT
-
 public:
-    QmlCppEnginePrivate(QmlCppEngine *parent,
-            const DebuggerStartParameters &sp);
-    ~QmlCppEnginePrivate() {}
+    QmlCppEnginePrivate() {}
 
-private:
-    friend class QmlCppEngine;
-    QmlCppEngine *q;
     QmlEngine *m_qmlEngine;
     DebuggerEngine *m_cppEngine;
     DebuggerEngine *m_activeEngine;
 };
 
 
-QmlCppEnginePrivate::QmlCppEnginePrivate(QmlCppEngine *parent,
-        const DebuggerStartParameters &sp)
-    : q(parent), m_qmlEngine(createQmlEngine(sp, q)),
-      m_cppEngine(0), m_activeEngine(0)
-{
-    setObjectName(QLatin1String("QmlCppEnginePrivate"));
-}
-
 ////////////////////////////////////////////////////////////////////////
 //
 // QmlCppEngine
@@ -107,10 +89,14 @@ QmlCppEnginePrivate::QmlCppEnginePrivate(QmlCppEngine *parent,
 ////////////////////////////////////////////////////////////////////////
 
 QmlCppEngine::QmlCppEngine(const DebuggerStartParameters &sp, QString *errorMessage)
-    : DebuggerEngine(sp), d(new QmlCppEnginePrivate(this, sp))
+    : DebuggerEngine(sp)
 {
     setObjectName(QLatin1String("QmlCppEngine"));
-    d->m_cppEngine = DebuggerRunControlFactory::createEngine(sp.firstSlaveEngineType, sp, this, errorMessage);
+    d = new QmlCppEnginePrivate;
+    d->m_qmlEngine = new QmlEngine(sp);
+    d->m_qmlEngine->setMasterEngine(this);
+    d->m_cppEngine = DebuggerRunControlFactory::createEngine(sp.firstSlaveEngineType, sp, errorMessage);
+    d->m_cppEngine->setMasterEngine(this);
     if (!d->m_cppEngine) {
         *errorMessage = tr("The slave debugging engine required for combined QML/C++-Debugging could not be created: %1").arg(*errorMessage);
         return;
@@ -831,5 +817,3 @@ void QmlCppEngine::setActiveEngine(DebuggerEngine *engine)
 
 } // namespace Internal
 } // namespace Debugger
-
-#include "qmlcppengine.moc"
diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index e4530f464d3..0e8c5f3c5bc 100644
--- a/src/plugins/debugger/qml/qmlengine.cpp
+++ b/src/plugins/debugger/qml/qmlengine.cpp
@@ -266,9 +266,8 @@ public:
 //
 ///////////////////////////////////////////////////////////////////////
 
-QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine)
-  : DebuggerEngine(startParameters, masterEngine)
+QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters)
+  : DebuggerEngine(startParameters)
   , m_adapter(this)
   , m_inspectorAdapter(&m_adapter, this)
   , m_retryOnConnectFail(false)
@@ -1343,10 +1342,9 @@ bool QmlEngine::adjustBreakpointLineAndColumn(
     return success;
 }
 
-QmlEngine *createQmlEngine(const DebuggerStartParameters &sp,
-    DebuggerEngine *masterEngine)
+DebuggerEngine *createQmlEngine(const DebuggerStartParameters &sp)
 {
-    return new QmlEngine(sp, masterEngine);
+    return new QmlEngine(sp);
 }
 
 } // namespace Internal
diff --git a/src/plugins/debugger/qml/qmlengine.h b/src/plugins/debugger/qml/qmlengine.h
index eadd05bdd03..f613a4c1da6 100644
--- a/src/plugins/debugger/qml/qmlengine.h
+++ b/src/plugins/debugger/qml/qmlengine.h
@@ -60,8 +60,7 @@ class QmlEngine : public DebuggerEngine
     Q_OBJECT
 
 public:
-    QmlEngine(const DebuggerStartParameters &startParameters,
-        DebuggerEngine *masterEngine);
+    explicit QmlEngine(const DebuggerStartParameters &startParameters);
     ~QmlEngine();
 
     void notifyEngineRemoteSetupDone(int gdbServerPort, int qmlPort);
-- 
GitLab