diff options
author | Marco Bubke <[email protected]> | 2019-02-19 19:20:57 +0100 |
---|---|---|
committer | Marco Bubke <[email protected]> | 2019-02-22 12:09:00 +0000 |
commit | 8c781f7e6aa763a4caa21c5f5c5504b79634ea46 (patch) | |
tree | 987a87ddcfa5d68f24aa0b92ddb0120beb791a20 | |
parent | 256d140933216b64123d1c50dd5e047898037ec2 (diff) |
Clang: Fix progress bar
Sometimes the messages are not send immediately, so we force it.
Task-number: QTCREATORBUG-21957
Change-Id: I9526cb4b4e3dd8b7a02e15f77bffdc51917d47c8
Reviewed-by: Ivan Donchevskii <[email protected]>
26 files changed, 153 insertions, 98 deletions
diff --git a/src/libs/clangsupport/baseserverproxy.cpp b/src/libs/clangsupport/baseserverproxy.cpp index 6f563ffd9de..0c565de269b 100644 --- a/src/libs/clangsupport/baseserverproxy.cpp +++ b/src/libs/clangsupport/baseserverproxy.cpp @@ -26,14 +26,25 @@ #include "baseserverproxy.h" #include "messageenvelop.h" -#include <QIODevice> +#include <QLocalSocket> namespace ClangBackEnd { +BaseServerProxy::BaseServerProxy(IpcClientInterface *client, QLocalSocket *localSocket) + : m_writeMessageBlock(localSocket) + , m_readMessageBlock(localSocket) + , m_client(client) +{ + if (localSocket) + QObject::connect(localSocket, &QIODevice::readyRead, [this]() { + BaseServerProxy::readMessages(); + }); +} + BaseServerProxy::BaseServerProxy(IpcClientInterface *client, QIODevice *ioDevice) - : m_writeMessageBlock(ioDevice), - m_readMessageBlock(ioDevice), - m_client(client) + : m_writeMessageBlock(ioDevice) + , m_readMessageBlock(ioDevice) + , m_client(client) { if (ioDevice) QObject::connect(ioDevice, &QIODevice::readyRead, [this] () { BaseServerProxy::readMessages(); }); @@ -51,11 +62,13 @@ void BaseServerProxy::resetState() m_readMessageBlock.resetState(); } -void BaseServerProxy::setIoDevice(QIODevice *ioDevice) +void BaseServerProxy::setLocalSocket(QLocalSocket *localSocket) { - QObject::connect(ioDevice, &QIODevice::readyRead, [this] () { BaseServerProxy::readMessages(); }); - m_writeMessageBlock.setIoDevice(ioDevice); - m_readMessageBlock.setIoDevice(ioDevice); + QObject::connect(localSocket, &QIODevice::readyRead, [this]() { + BaseServerProxy::readMessages(); + }); + m_writeMessageBlock.setLocalSocket(localSocket); + m_readMessageBlock.setIoDevice(localSocket); } } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/baseserverproxy.h b/src/libs/clangsupport/baseserverproxy.h index 246f0604ecf..797f02999dc 100644 --- a/src/libs/clangsupport/baseserverproxy.h +++ b/src/libs/clangsupport/baseserverproxy.h @@ -37,13 +37,14 @@ class CLANGSUPPORT_EXPORT BaseServerProxy BaseServerProxy &operator=(const BaseServerProxy&) = delete; public: + BaseServerProxy(IpcClientInterface *client, QLocalSocket *localSocket); BaseServerProxy(IpcClientInterface *client, QIODevice *ioDevice); void readMessages(); void resetState(); - void setIoDevice(QIODevice *ioDevice); + void setLocalSocket(QLocalSocket *localSocket); protected: ~BaseServerProxy() = default; diff --git a/src/libs/clangsupport/clangcodemodelclientproxy.cpp b/src/libs/clangsupport/clangcodemodelclientproxy.cpp index 538677e6c1c..cf3e699e217 100644 --- a/src/libs/clangsupport/clangcodemodelclientproxy.cpp +++ b/src/libs/clangsupport/clangcodemodelclientproxy.cpp @@ -31,19 +31,34 @@ #include "messageenvelop.h" #include <QDebug> -#include <QIODevice> +#include <QLocalSocket> #include <QVariant> #include <QVector> namespace ClangBackEnd { -ClangCodeModelClientProxy::ClangCodeModelClientProxy(ClangCodeModelServerInterface *server, QIODevice *ioDevice) - : m_writeMessageBlock(ioDevice), - m_readMessageBlock(ioDevice), - m_server(server), - m_ioDevice(ioDevice) +ClangCodeModelClientProxy::ClangCodeModelClientProxy(ClangCodeModelServerInterface *server, + QLocalSocket *localSocket) + : m_writeMessageBlock(localSocket) + , m_readMessageBlock(localSocket) + , m_server(server) + , m_ioDevice(localSocket) { - QObject::connect(m_ioDevice, &QIODevice::readyRead, [this] () {ClangCodeModelClientProxy::readMessages();}); + QObject::connect(m_ioDevice, &QIODevice::readyRead, [this]() { + ClangCodeModelClientProxy::readMessages(); + }); +} + +ClangCodeModelClientProxy::ClangCodeModelClientProxy(ClangCodeModelServerInterface *server, + QIODevice *ioDevice) + : m_writeMessageBlock(ioDevice) + , m_readMessageBlock(ioDevice) + , m_server(server) + , m_ioDevice(ioDevice) +{ + QObject::connect(m_ioDevice, &QIODevice::readyRead, [this]() { + ClangCodeModelClientProxy::readMessages(); + }); } ClangCodeModelClientProxy::ClangCodeModelClientProxy(ClangCodeModelClientProxy &&other) @@ -106,9 +121,9 @@ void ClangCodeModelClientProxy::readMessages() m_server->dispatch(message); } -bool ClangCodeModelClientProxy::isUsingThatIoDevice(QIODevice *m_ioDevice) const +bool ClangCodeModelClientProxy::isUsingThatIoDevice(QIODevice *ioDevice) const { - return this->m_ioDevice == m_ioDevice; + return m_ioDevice == ioDevice; } } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/clangcodemodelclientproxy.h b/src/libs/clangsupport/clangcodemodelclientproxy.h index 480cbe646e1..4b0e1f9d2a5 100644 --- a/src/libs/clangsupport/clangcodemodelclientproxy.h +++ b/src/libs/clangsupport/clangcodemodelclientproxy.h @@ -36,6 +36,7 @@ QT_BEGIN_NAMESPACE class QLocalServer; +class QLocalSocket; class QIODevice; QT_END_NAMESPACE @@ -44,6 +45,8 @@ namespace ClangBackEnd { class CLANGSUPPORT_EXPORT ClangCodeModelClientProxy : public ClangCodeModelClientInterface { public: + explicit ClangCodeModelClientProxy(ClangCodeModelServerInterface *server, + QLocalSocket *localSocket); explicit ClangCodeModelClientProxy(ClangCodeModelServerInterface *server, QIODevice *ioDevice); ClangCodeModelClientProxy(const ClangCodeModelClientProxy&) = delete; const ClangCodeModelClientProxy &operator=(const ClangCodeModelClientProxy&) = delete; diff --git a/src/libs/clangsupport/clangcodemodelconnectionclient.cpp b/src/libs/clangsupport/clangcodemodelconnectionclient.cpp index 56186e24dc6..618782d1d82 100644 --- a/src/libs/clangsupport/clangcodemodelconnectionclient.cpp +++ b/src/libs/clangsupport/clangcodemodelconnectionclient.cpp @@ -41,12 +41,10 @@ QString currentProcessId() } -ClangCodeModelConnectionClient::ClangCodeModelConnectionClient( - ClangCodeModelClientInterface *client) +ClangCodeModelConnectionClient::ClangCodeModelConnectionClient(ClangCodeModelClientInterface *client) : ConnectionClient(Utils::TemporaryDirectory::masterDirectoryPath() - + QStringLiteral("/ClangBackEnd-") - + currentProcessId()), - m_serverProxy(client, nullptr) + + QStringLiteral("/ClangBackEnd-") + currentProcessId()) + , m_serverProxy(client) { m_processCreator.setTemporaryDirectoryPattern("clangbackend-XXXXXX"); m_processCreator.setArguments({connectionName()}); @@ -85,9 +83,9 @@ QString ClangCodeModelConnectionClient::outputName() const return QStringLiteral("ClangCodeModelConnectionClient"); } -void ClangCodeModelConnectionClient::newConnectedServer(QIODevice *ioDevice) +void ClangCodeModelConnectionClient::newConnectedServer(QLocalSocket *localSocket) { - m_serverProxy.setIoDevice(ioDevice); + m_serverProxy.setLocalSocket(localSocket); } } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/clangcodemodelconnectionclient.h b/src/libs/clangsupport/clangcodemodelconnectionclient.h index c1618b06d95..9b0e49ae5b3 100644 --- a/src/libs/clangsupport/clangcodemodelconnectionclient.h +++ b/src/libs/clangsupport/clangcodemodelconnectionclient.h @@ -41,7 +41,7 @@ protected: void sendEndCommand() override; void resetState() override; QString outputName() const override; - void newConnectedServer(QIODevice *ioDevice) override; + void newConnectedServer(QLocalSocket *localSocket) override; private: ClangCodeModelServerProxy m_serverProxy; diff --git a/src/libs/clangsupport/clangcodemodelserverproxy.cpp b/src/libs/clangsupport/clangcodemodelserverproxy.cpp index 6d90f20016a..d77e27bffd0 100644 --- a/src/libs/clangsupport/clangcodemodelserverproxy.cpp +++ b/src/libs/clangsupport/clangcodemodelserverproxy.cpp @@ -32,6 +32,11 @@ namespace ClangBackEnd { ClangCodeModelServerProxy::ClangCodeModelServerProxy(ClangCodeModelClientInterface *client, + QLocalSocket *localSocket) + : BaseServerProxy(client, localSocket) +{} + +ClangCodeModelServerProxy::ClangCodeModelServerProxy(ClangCodeModelClientInterface *client, QIODevice *ioDevice) : BaseServerProxy(client, ioDevice) { diff --git a/src/libs/clangsupport/clangcodemodelserverproxy.h b/src/libs/clangsupport/clangcodemodelserverproxy.h index e18fd37402d..0ea4b016729 100644 --- a/src/libs/clangsupport/clangcodemodelserverproxy.h +++ b/src/libs/clangsupport/clangcodemodelserverproxy.h @@ -46,6 +46,7 @@ class CLANGSUPPORT_EXPORT ClangCodeModelServerProxy : public BaseServerProxy, public ClangCodeModelServerInterface { public: + ClangCodeModelServerProxy(ClangCodeModelClientInterface *client, QLocalSocket *localSocket = {}); ClangCodeModelServerProxy(ClangCodeModelClientInterface *client, QIODevice *ioDevice); void end() override; diff --git a/src/libs/clangsupport/connectionclient.h b/src/libs/clangsupport/connectionclient.h index 8fbc73a06c9..c3ded380293 100644 --- a/src/libs/clangsupport/connectionclient.h +++ b/src/libs/clangsupport/connectionclient.h @@ -100,7 +100,7 @@ protected: QString connectionName() const; bool event(QEvent* event); - virtual void newConnectedServer(QIODevice *ioDevice) = 0; + virtual void newConnectedServer(QLocalSocket *localSocket) = 0; private: static bool isProcessRunning(QProcess *process); diff --git a/src/libs/clangsupport/pchmanagerclientproxy.cpp b/src/libs/clangsupport/pchmanagerclientproxy.cpp index 595187d155b..a18ac166d2f 100644 --- a/src/libs/clangsupport/pchmanagerclientproxy.cpp +++ b/src/libs/clangsupport/pchmanagerclientproxy.cpp @@ -32,35 +32,29 @@ #include "progressmessage.h" #include <QDebug> -#include <QIODevice> +#include <QLocalSocket> namespace ClangBackEnd { -PchManagerClientProxy::PchManagerClientProxy(PchManagerServerInterface *server, QIODevice *ioDevice) - : writeMessageBlock(ioDevice), - readMessageBlock(ioDevice), - server(server), - ioDevice(ioDevice) -{ - QObject::connect(ioDevice, &QIODevice::readyRead, [this] () {PchManagerClientProxy::readMessages();}); -} - -PchManagerClientProxy::PchManagerClientProxy(PchManagerClientProxy &&other) - : writeMessageBlock(std::move(other.writeMessageBlock)), - readMessageBlock(std::move(other.readMessageBlock)), - server(std::move(other.server)), - ioDevice(std::move(other.ioDevice)) +PchManagerClientProxy::PchManagerClientProxy(PchManagerServerInterface *server, + QLocalSocket *localSocket) + : writeMessageBlock(localSocket) + , readMessageBlock(localSocket) + , server(server) { + QObject::connect(localSocket, &QIODevice::readyRead, [this]() { + PchManagerClientProxy::readMessages(); + }); } -PchManagerClientProxy &PchManagerClientProxy::operator=(PchManagerClientProxy &&other) +PchManagerClientProxy::PchManagerClientProxy(PchManagerServerInterface *server, QIODevice *ioDevice) + : writeMessageBlock(ioDevice) + , readMessageBlock(ioDevice) + , server(server) { - writeMessageBlock = std::move(other.writeMessageBlock); - readMessageBlock = std::move(other.readMessageBlock); - server = std::move(other.server); - ioDevice = std::move(other.ioDevice); - - return *this; + QObject::connect(ioDevice, &QIODevice::readyRead, [this]() { + PchManagerClientProxy::readMessages(); + }); } void PchManagerClientProxy::readMessages() diff --git a/src/libs/clangsupport/pchmanagerclientproxy.h b/src/libs/clangsupport/pchmanagerclientproxy.h index 8efacf504f0..516b2e3a86f 100644 --- a/src/libs/clangsupport/pchmanagerclientproxy.h +++ b/src/libs/clangsupport/pchmanagerclientproxy.h @@ -34,15 +34,16 @@ namespace ClangBackEnd { class PchManagerServerInterface; -class CLANGSUPPORT_EXPORT PchManagerClientProxy : public PchManagerClientInterface +class CLANGSUPPORT_EXPORT PchManagerClientProxy final : public PchManagerClientInterface { public: + explicit PchManagerClientProxy(PchManagerServerInterface *server, QLocalSocket *localSocket); explicit PchManagerClientProxy(PchManagerServerInterface *server, QIODevice *ioDevice); PchManagerClientProxy(const PchManagerClientProxy&) = delete; const PchManagerClientProxy &operator=(const PchManagerClientProxy&) = delete; - PchManagerClientProxy(PchManagerClientProxy&&other); - PchManagerClientProxy &operator=(PchManagerClientProxy&&other); + PchManagerClientProxy(PchManagerClientProxy &&other) = default; + PchManagerClientProxy &operator=(PchManagerClientProxy &&other) = default; void readMessages(); @@ -54,7 +55,6 @@ private: ClangBackEnd::WriteMessageBlock writeMessageBlock; ClangBackEnd::ReadMessageBlock readMessageBlock; PchManagerServerInterface *server = nullptr; - QIODevice *ioDevice = nullptr; }; } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/pchmanagerserverproxy.cpp b/src/libs/clangsupport/pchmanagerserverproxy.cpp index dedbb23d50d..5f1fb03948a 100644 --- a/src/libs/clangsupport/pchmanagerserverproxy.cpp +++ b/src/libs/clangsupport/pchmanagerserverproxy.cpp @@ -38,6 +38,11 @@ namespace ClangBackEnd { +PchManagerServerProxy::PchManagerServerProxy(PchManagerClientInterface *client, + QLocalSocket *localSocket) + : BaseServerProxy(client, localSocket) +{} + PchManagerServerProxy::PchManagerServerProxy(PchManagerClientInterface *client, QIODevice *ioDevice) : BaseServerProxy(client, ioDevice) { diff --git a/src/libs/clangsupport/pchmanagerserverproxy.h b/src/libs/clangsupport/pchmanagerserverproxy.h index 570de91a03a..d13d88ee8e8 100644 --- a/src/libs/clangsupport/pchmanagerserverproxy.h +++ b/src/libs/clangsupport/pchmanagerserverproxy.h @@ -47,6 +47,7 @@ class CLANGSUPPORT_EXPORT PchManagerServerProxy final : public BaseServerProxy, public PchManagerServerInterface { public: + explicit PchManagerServerProxy(PchManagerClientInterface *client, QLocalSocket *localSocket); explicit PchManagerServerProxy(PchManagerClientInterface *client, QIODevice *ioDevice); void end() override; diff --git a/src/libs/clangsupport/progresscounter.h b/src/libs/clangsupport/progresscounter.h index 449754f9149..21a8e13b777 100644 --- a/src/libs/clangsupport/progresscounter.h +++ b/src/libs/clangsupport/progresscounter.h @@ -84,7 +84,7 @@ public: { Lock lock(m_mutex); - return m_total; + return m_progress; } private: diff --git a/src/libs/clangsupport/refactoringclientproxy.cpp b/src/libs/clangsupport/refactoringclientproxy.cpp index c2076418440..646cb0e161f 100644 --- a/src/libs/clangsupport/refactoringclientproxy.cpp +++ b/src/libs/clangsupport/refactoringclientproxy.cpp @@ -31,36 +31,28 @@ #include "clangrefactoringclientmessages.h" #include <QDebug> -#include <QIODevice> +#include <QLocalSocket> namespace ClangBackEnd { -RefactoringClientProxy::RefactoringClientProxy(RefactoringServerInterface *server, QIODevice *ioDevice) - : writeMessageBlock(ioDevice), - readMessageBlock(ioDevice), - server(server), - ioDevice(ioDevice) +RefactoringClientProxy::RefactoringClientProxy(RefactoringServerInterface *server, + QLocalSocket *localSocket) + : writeMessageBlock(localSocket) + , readMessageBlock(localSocket) + , server(server) { - QObject::connect(ioDevice, &QIODevice::readyRead, [this] () {RefactoringClientProxy::readMessages();}); + QObject::connect(localSocket, &QIODevice::readyRead, [this]() { + RefactoringClientProxy::readMessages(); + }); } -RefactoringClientProxy::RefactoringClientProxy(RefactoringClientProxy &&other) - : writeMessageBlock(std::move(other.writeMessageBlock)), - readMessageBlock(std::move(other.readMessageBlock)), - server(std::move(other.server)), - ioDevice(std::move(other.ioDevice)) +RefactoringClientProxy::RefactoringClientProxy(RefactoringServerInterface *server, + QIODevice *ioDevice) + : writeMessageBlock(ioDevice) + , readMessageBlock(ioDevice) + , server(server) { - -} - -RefactoringClientProxy &RefactoringClientProxy::operator=(RefactoringClientProxy &&other) -{ - writeMessageBlock = std::move(other.writeMessageBlock); - readMessageBlock = std::move(other.readMessageBlock); - server = std::move(other.server); - ioDevice = std::move(other.ioDevice); - - return *this; + QObject::connect(ioDevice, &QIODevice::readyRead, [this] () {RefactoringClientProxy::readMessages();}); } void RefactoringClientProxy::readMessages() diff --git a/src/libs/clangsupport/refactoringclientproxy.h b/src/libs/clangsupport/refactoringclientproxy.h index 45ce029120c..07cba05e8d6 100644 --- a/src/libs/clangsupport/refactoringclientproxy.h +++ b/src/libs/clangsupport/refactoringclientproxy.h @@ -39,12 +39,13 @@ class RefactoringServerInterface; class CLANGSUPPORT_EXPORT RefactoringClientProxy : public RefactoringClientInterface { public: + explicit RefactoringClientProxy(RefactoringServerInterface *server, QLocalSocket *localSocket); explicit RefactoringClientProxy(RefactoringServerInterface *server, QIODevice *ioDevice); RefactoringClientProxy(const RefactoringClientProxy&) = delete; const RefactoringClientProxy &operator=(const RefactoringClientProxy&) = delete; - RefactoringClientProxy(RefactoringClientProxy&&other); - RefactoringClientProxy &operator=(RefactoringClientProxy&&other); + RefactoringClientProxy(RefactoringClientProxy &&other) = default; + RefactoringClientProxy &operator=(RefactoringClientProxy &&other) = default; void readMessages(); @@ -60,7 +61,6 @@ private: ClangBackEnd::WriteMessageBlock writeMessageBlock; ClangBackEnd::ReadMessageBlock readMessageBlock; RefactoringServerInterface *server = nullptr; - QIODevice *ioDevice = nullptr; }; } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/refactoringserverproxy.cpp b/src/libs/clangsupport/refactoringserverproxy.cpp index 3bc8fe20af5..2208f3a0ce3 100644 --- a/src/libs/clangsupport/refactoringserverproxy.cpp +++ b/src/libs/clangsupport/refactoringserverproxy.cpp @@ -34,7 +34,13 @@ namespace ClangBackEnd { -RefactoringServerProxy::RefactoringServerProxy(RefactoringClientInterface *client, QIODevice *ioDevice) +RefactoringServerProxy::RefactoringServerProxy(RefactoringClientInterface *client, + QLocalSocket *localSocket) + : BaseServerProxy(client, localSocket) +{} + +RefactoringServerProxy::RefactoringServerProxy(RefactoringClientInterface *client, + QIODevice *ioDevice) : BaseServerProxy(client, ioDevice) { } diff --git a/src/libs/clangsupport/refactoringserverproxy.h b/src/libs/clangsupport/refactoringserverproxy.h index 55ae20d4416..34861767d85 100644 --- a/src/libs/clangsupport/refactoringserverproxy.h +++ b/src/libs/clangsupport/refactoringserverproxy.h @@ -47,6 +47,8 @@ class CLANGSUPPORT_EXPORT RefactoringServerProxy final : public BaseServerProxy, public RefactoringServerInterface { public: + explicit RefactoringServerProxy(RefactoringClientInterface *client, + QLocalSocket *localSocket = {}); explicit RefactoringServerProxy(RefactoringClientInterface *client, QIODevice *ioDevice); void end() override; diff --git a/src/libs/clangsupport/writemessageblock.cpp b/src/libs/clangsupport/writemessageblock.cpp index 999c63e9b1f..b3fe4a51edb 100644 --- a/src/libs/clangsupport/writemessageblock.cpp +++ b/src/libs/clangsupport/writemessageblock.cpp @@ -29,16 +29,19 @@ #include <QDataStream> #include <QDebug> -#include <QIODevice> +#include <QLocalSocket> #include <QVariant> namespace ClangBackEnd { WriteMessageBlock::WriteMessageBlock(QIODevice *ioDevice) - : m_messageCounter(0), - m_ioDevice(ioDevice) -{ -} + : m_ioDevice(ioDevice) +{} + +WriteMessageBlock::WriteMessageBlock(QLocalSocket *localSocket) + : m_ioDevice(localSocket) + , m_localSocket(localSocket) +{} void WriteMessageBlock::write(const MessageEnvelop &message) { @@ -74,10 +77,19 @@ void WriteMessageBlock::resetState() void WriteMessageBlock::setIoDevice(QIODevice *ioDevice) { m_ioDevice = ioDevice; + if (m_localSocket != ioDevice) + m_localSocket = nullptr; flushBlock(); } +void WriteMessageBlock::setLocalSocket(QLocalSocket *localSocket) +{ + m_localSocket = localSocket; + + setIoDevice(localSocket); +} + void WriteMessageBlock::flushBlock() { if (m_ioDevice) { @@ -85,6 +97,8 @@ void WriteMessageBlock::flushBlock() m_block.clear(); if (bytesWritten == -1) qWarning() << "Failed to write data:" << m_ioDevice->errorString(); + if (m_localSocket) + m_localSocket->flush(); } } diff --git a/src/libs/clangsupport/writemessageblock.h b/src/libs/clangsupport/writemessageblock.h index b75f0ce2944..8a126fed36e 100644 --- a/src/libs/clangsupport/writemessageblock.h +++ b/src/libs/clangsupport/writemessageblock.h @@ -32,6 +32,7 @@ QT_BEGIN_NAMESPACE class QVariant; class QDataStream; class QIODevice; +class QLocalSocket; QT_END_NAMESPACE namespace ClangBackEnd { @@ -42,6 +43,7 @@ class WriteMessageBlock { public: WriteMessageBlock(QIODevice *ioDevice = nullptr); + WriteMessageBlock(QLocalSocket *localSocket); void write(const MessageEnvelop &message); @@ -50,13 +52,15 @@ public: void resetState(); void setIoDevice(QIODevice *ioDevice); + void setLocalSocket(QLocalSocket *localSocket); void flushBlock(); private: QByteArray m_block; - qint64 m_messageCounter; - QIODevice *m_ioDevice; + qint64 m_messageCounter = 0; + QIODevice *m_ioDevice = {}; + QLocalSocket *m_localSocket = {}; }; } // namespace ClangBackEnd diff --git a/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp b/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp index 812445610e6..6db0db09745 100644 --- a/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp +++ b/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp @@ -87,9 +87,9 @@ QString PchManagerConnectionClient::outputName() const return QStringLiteral("PchManagerConnectionClient"); } -void PchManagerConnectionClient::newConnectedServer(QIODevice *ioDevice) +void PchManagerConnectionClient::newConnectedServer(QLocalSocket *localSocket) { - m_serverProxy.setIoDevice(ioDevice); + m_serverProxy.setLocalSocket(localSocket); } } // namespace ClangPchManager diff --git a/src/plugins/clangpchmanager/pchmanagerconnectionclient.h b/src/plugins/clangpchmanager/pchmanagerconnectionclient.h index 672b6ef7cff..7189c83c0b8 100644 --- a/src/plugins/clangpchmanager/pchmanagerconnectionclient.h +++ b/src/plugins/clangpchmanager/pchmanagerconnectionclient.h @@ -42,7 +42,7 @@ protected: void sendEndCommand() override; void resetState() override; QString outputName() const override; - void newConnectedServer(QIODevice *ioDevice) override; + void newConnectedServer(QLocalSocket *localSocket) override; private: ClangBackEnd::PchManagerServerProxy m_serverProxy; diff --git a/src/plugins/clangpchmanager/progressmanager.h b/src/plugins/clangpchmanager/progressmanager.h index cc6ab1946cb..0fdf94c2196 100644 --- a/src/plugins/clangpchmanager/progressmanager.h +++ b/src/plugins/clangpchmanager/progressmanager.h @@ -53,6 +53,8 @@ public: initialize(); m_promise->setExpectedResultCount(maximumProgress); + if (m_promise->expectedResultCount() != maximumProgress) + m_promise->setExpectedResultCount(maximumProgress); m_promise->setProgressValue(currentProgress); if (currentProgress >= maximumProgress) diff --git a/src/plugins/clangrefactoring/refactoringconnectionclient.cpp b/src/plugins/clangrefactoring/refactoringconnectionclient.cpp index 865c9d53d13..ff66ec20cbf 100644 --- a/src/plugins/clangrefactoring/refactoringconnectionclient.cpp +++ b/src/plugins/clangrefactoring/refactoringconnectionclient.cpp @@ -44,9 +44,8 @@ QString currentProcessId() RefactoringConnectionClient::RefactoringConnectionClient(RefactoringClientInterface *client) : ConnectionClient(Utils::TemporaryDirectory::masterDirectoryPath() - + QStringLiteral("/ClangRefactoringBackEnd-") - + currentProcessId()), - m_serverProxy(client, nullptr) + + QStringLiteral("/ClangRefactoringBackEnd-") + currentProcessId()) + , m_serverProxy(client) { m_processCreator.setTemporaryDirectoryPattern("clangrefactoringbackend-XXXXXX"); m_processCreator.setArguments({connectionName(), @@ -81,9 +80,9 @@ QString RefactoringConnectionClient::outputName() const return QStringLiteral("RefactoringConnectionClient"); } -void RefactoringConnectionClient::newConnectedServer(QIODevice *ioDevice) +void RefactoringConnectionClient::newConnectedServer(QLocalSocket *localSocket) { - m_serverProxy.setIoDevice(ioDevice); + m_serverProxy.setLocalSocket(localSocket); } } // namespace ClangBackEnd diff --git a/src/plugins/clangrefactoring/refactoringconnectionclient.h b/src/plugins/clangrefactoring/refactoringconnectionclient.h index 16734f7ed97..3db871e6a21 100644 --- a/src/plugins/clangrefactoring/refactoringconnectionclient.h +++ b/src/plugins/clangrefactoring/refactoringconnectionclient.h @@ -44,7 +44,7 @@ protected: void sendEndCommand() override; void resetState() override; QString outputName() const override; - void newConnectedServer(QIODevice *ioDevice) override; + void newConnectedServer(QLocalSocket *localSocket) override; private: RefactoringServerProxy m_serverProxy; diff --git a/tests/unit/unittest/readandwritemessageblock-test.cpp b/tests/unit/unittest/readandwritemessageblock-test.cpp index 1cedd2b5a40..a13def699d0 100644 --- a/tests/unit/unittest/readandwritemessageblock-test.cpp +++ b/tests/unit/unittest/readandwritemessageblock-test.cpp @@ -138,7 +138,7 @@ TEST_F(ReadAndWriteMessageBlock, WriteMessagesToWriteBlockWithoutIoDeviceAndSetI writeMessageBlock.write(ClangBackEnd::EndMessage()); writeMessageBlock.write(ClangBackEnd::EndMessage()); - writeMessageBlock.setIoDevice(nullptr); + writeMessageBlock.setLocalSocket(nullptr); buffer.seek(0); ASSERT_THAT(readMessageBlock.readAll(), IsEmpty()); |