diff options
author | Richard Weickelt <richard@weickelt.de> | 2020-08-03 14:34:50 +0200 |
---|---|---|
committer | Richard Weickelt <richard@weickelt.de> | 2020-08-03 14:35:02 +0200 |
commit | b4df38c531499da7a95954c0c4326167f09ead43 (patch) | |
tree | 6fc40341c73c32fdc19053c3928c933565f52d8d /src | |
parent | 4c53f2a980c9016f4b7f289e38eb917581490151 (diff) | |
parent | 04fe878f70fc1294ca55802bf090ed8ea7580aa0 (diff) |
Merge branch '1.17' into master
Change-Id: I20a6b02ee34719636f9996e02cff9e29cf160dd7
Diffstat (limited to 'src')
-rw-r--r-- | src/app/qbs-setup-toolchains/xcodeprobe.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/tools/launcherinterface.cpp | 3 | ||||
-rw-r--r-- | src/lib/corelib/tools/launchersocket.cpp | 31 | ||||
-rw-r--r-- | src/lib/corelib/tools/launchersocket.h | 4 |
4 files changed, 22 insertions, 18 deletions
diff --git a/src/app/qbs-setup-toolchains/xcodeprobe.cpp b/src/app/qbs-setup-toolchains/xcodeprobe.cpp index 67dafa91c..6c3d8a1b3 100644 --- a/src/app/qbs-setup-toolchains/xcodeprobe.cpp +++ b/src/app/qbs-setup-toolchains/xcodeprobe.cpp @@ -95,6 +95,8 @@ static QStringList archList(const QString &applePlatformName) archs << QStringLiteral("x86"); if (applePlatformName != QStringLiteral("watchsimulator")) archs << QStringLiteral("x86_64"); + if (applePlatformName == QStringLiteral("macosx")) + archs << QStringLiteral("arm64"); } else if (applePlatformName == QStringLiteral("iphoneos") || applePlatformName == QStringLiteral("appletvos")) { if (applePlatformName != QStringLiteral("appletvos")) diff --git a/src/lib/corelib/tools/launcherinterface.cpp b/src/lib/corelib/tools/launcherinterface.cpp index 50ac659a9..d2cdf44df 100644 --- a/src/lib/corelib/tools/launcherinterface.cpp +++ b/src/lib/corelib/tools/launcherinterface.cpp @@ -128,8 +128,7 @@ void LauncherInterface::doStop() if (!m_process) return; m_process->disconnect(); - if (m_socket->isReady()) - m_socket->shutdown(); + m_socket->shutdown(); m_process->waitForFinished(3000); m_process->deleteLater(); m_process = nullptr; diff --git a/src/lib/corelib/tools/launchersocket.cpp b/src/lib/corelib/tools/launchersocket.cpp index c7cfb27cf..1489af1e9 100644 --- a/src/lib/corelib/tools/launchersocket.cpp +++ b/src/lib/corelib/tools/launchersocket.cpp @@ -68,18 +68,19 @@ void LauncherSocket::sendData(const QByteArray &data) void LauncherSocket::shutdown() { - QBS_ASSERT(m_socket, return); - m_socket->disconnect(); - m_socket->write(ShutdownPacket().serialize()); - m_socket->waitForBytesWritten(1000); - m_socket->deleteLater(); - m_socket = nullptr; + const auto socket = m_socket.exchange(nullptr); + if (!socket) + return; + socket->disconnect(); + socket->write(ShutdownPacket().serialize()); + socket->waitForBytesWritten(1000); + socket->deleteLater(); } void LauncherSocket::setSocket(QLocalSocket *socket) { QBS_ASSERT(!m_socket, return); - m_socket = socket; + m_socket.store(socket); m_packetParser.setDevice(m_socket); connect(m_socket, #if (QT_VERSION < QT_VERSION_CHECK(5, 15, 0)) @@ -97,8 +98,9 @@ void LauncherSocket::setSocket(QLocalSocket *socket) void LauncherSocket::handleSocketError() { - if (m_socket->error() != QLocalSocket::PeerClosedError) - handleError(Tr::tr("Socket error: %1").arg(m_socket->errorString())); + auto socket = m_socket.load(); + if (socket->error() != QLocalSocket::PeerClosedError) + handleError(Tr::tr("Socket error: %1").arg(socket->errorString())); } void LauncherSocket::handleSocketDataAvailable() @@ -131,18 +133,19 @@ void LauncherSocket::handleSocketDisconnected() void LauncherSocket::handleError(const QString &error) { - m_socket->disconnect(); - m_socket->deleteLater(); - m_socket = nullptr; + const auto socket = m_socket.exchange(nullptr); + socket->disconnect(); + socket->deleteLater(); emit errorOccurred(error); } void LauncherSocket::handleRequests() { - QBS_ASSERT(isReady(), return); + const auto socket = m_socket.load(); + QBS_ASSERT(socket, return); std::lock_guard<std::mutex> locker(m_requestsMutex); for (const QByteArray &request : qAsConst(m_requests)) - m_socket->write(request); + socket->write(request); m_requests.clear(); } diff --git a/src/lib/corelib/tools/launchersocket.h b/src/lib/corelib/tools/launchersocket.h index a9a1af800..2eb2c3f63 100644 --- a/src/lib/corelib/tools/launchersocket.h +++ b/src/lib/corelib/tools/launchersocket.h @@ -60,7 +60,7 @@ class LauncherSocket : public QObject Q_OBJECT friend class LauncherInterface; public: - bool isReady() const { return m_socket; } + bool isReady() const { return m_socket.load(); } void sendData(const QByteArray &data); signals: @@ -81,7 +81,7 @@ private: void handleError(const QString &error); void handleRequests(); - QLocalSocket *m_socket = nullptr; + std::atomic<QLocalSocket *> m_socket{nullptr}; PacketParser m_packetParser; std::vector<QByteArray> m_requests; std::mutex m_requestsMutex; |