From c3e19a8076659c0456660bcaacdca8af7005f5b4 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 16 Mar 2018 12:03:41 +0100 Subject: [PATCH] QmlDesigner: Do not dispatch commands when already in destructor On Linux destructing the local sockets leads to commands being dispatched synchronously. This is not expected and totally unrequired. When we shutdown the instance server no commands have to be dispatched anymore. Change-Id: Ieeca7ac2103e7b463137d76f85cd326888cc38ce Reviewed-by: Tim Jenssen --- .../designercore/instances/nodeinstanceserverproxy.cpp | 5 +++++ .../designercore/instances/nodeinstanceserverproxy.h | 1 + 2 files changed, 6 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp index 229dbfab13b..cadd15c47cf 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp @@ -225,6 +225,8 @@ NodeInstanceServerProxy::NodeInstanceServerProxy(NodeInstanceView *nodeInstanceV NodeInstanceServerProxy::~NodeInstanceServerProxy() { + m_destructing = true; + disconnect(this, SLOT(processFinished(int,QProcess::ExitStatus))); writeCommand(QVariant::fromValue(EndPuppetCommand())); @@ -273,6 +275,9 @@ void NodeInstanceServerProxy::dispatchCommand(const QVariant &command, PuppetStr static const int debugOutputCommandType = QMetaType::type("DebugOutputCommand"); static const int puppetAliveCommandType = QMetaType::type("PuppetAliveCommand"); + if (m_destructing) + return; + qCInfo(instanceViewBenchmark) << "dispatching command" << command.userType() << command.typeName(); if (command.userType() == informationChangedCommandType) { nodeInstanceClient()->informationChanged(command.value()); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h index 4cf8f1241e3..6b2469de9ed 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h @@ -128,6 +128,7 @@ private: RunModus m_runModus; int m_synchronizeId = -1; QTime m_benchmarkTimer; + bool m_destructing = false; }; } // namespace QmlDesigner