From 6f682d4876b82716729dbc0f16cccd0d8fda94fd Mon Sep 17 00:00:00 2001 From: Alex Trotsenko Date: Mon, 19 Jul 2021 19:28:14 +0300 Subject: QLocalSocket: always open outer QIODevice in unbuffered mode The actual buffering is performed either in the inner socket (Unix), or in the pipeReader (Windows). To avoid unnecessary copying of data between buffers, enforce unbuffered mode for all implementations, which slightly improves read performance. Change-Id: Idb2a09f35823b9945c71231710290be12d9930f7 Reviewed-by: Thiago Macieira Reviewed-by: Oswald Buddenhagen --- src/network/socket/qlocalsocket.cpp | 2 ++ src/network/socket/qlocalsocket_unix.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/network/socket/qlocalsocket.cpp b/src/network/socket/qlocalsocket.cpp index a42b70546c..001f585fa7 100644 --- a/src/network/socket/qlocalsocket.cpp +++ b/src/network/socket/qlocalsocket.cpp @@ -396,6 +396,8 @@ QLocalSocket::QLocalSocket(QObject * parent) : QIODevice(*new QLocalSocketPrivate, parent) { Q_D(QLocalSocket); + + d->readBufferChunkSize = 0; // force QIODevice unbuffered mode d->init(); } diff --git a/src/network/socket/qlocalsocket_unix.cpp b/src/network/socket/qlocalsocket_unix.cpp index d10ab36821..8f5da60553 100644 --- a/src/network/socket/qlocalsocket_unix.cpp +++ b/src/network/socket/qlocalsocket_unix.cpp @@ -357,7 +357,7 @@ void QLocalSocketPrivate::_q_connectToSocket() fullServerName = connectingPathName; if (unixSocket.setSocketDescriptor(connectingSocket, QAbstractSocket::ConnectedState, connectingOpenMode)) { - q->QIODevice::open(connectingOpenMode | QIODevice::Unbuffered); + q->QIODevice::open(connectingOpenMode); q->emit connected(); } else { QString function = QLatin1String("QLocalSocket::connectToServer"); -- cgit v1.2.3