diff options
author | Alex Trotsenko <[email protected]> | 2021-07-19 19:28:14 +0300 |
---|---|---|
committer | Alex Trotsenko <[email protected]> | 2021-08-01 21:06:45 +0300 |
commit | 6f682d4876b82716729dbc0f16cccd0d8fda94fd (patch) | |
tree | 789f7f0fa8710eea6679d73a1585035c1b166439 | |
parent | 3bc976c2bda1516066de1eeb706826d26b098952 (diff) |
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 <[email protected]>
Reviewed-by: Oswald Buddenhagen <[email protected]>
-rw-r--r-- | src/network/socket/qlocalsocket.cpp | 2 | ||||
-rw-r--r-- | src/network/socket/qlocalsocket_unix.cpp | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/network/socket/qlocalsocket.cpp b/src/network/socket/qlocalsocket.cpp index a42b70546cd..001f585fa75 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 d10ab368210..8f5da60553f 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"); |