diff options
author | Alex Trotsenko <alex1973tr@gmail.com> | 2021-05-07 18:16:17 +0300 |
---|---|---|
committer | Alex Trotsenko <alex1973tr@gmail.com> | 2021-06-09 20:29:04 +0300 |
commit | 5b78d7fdcf9b758f117eaa65dc5eeddd0d4557e0 (patch) | |
tree | 8461b6d21a8c146a5e9e10d5d51385e1d790abff /src/corelib/io/qwindowspipewriter_p.h | |
parent | c6c6e01e893b211f51511929b4258f789cdfd428 (diff) |
QLocalSocket/Win: avoid double buffering on write
As QWindowsPipeWriter now maintains a chunk queue, there is no need to
use the internal QIODevice buffer and wait for the previous operation
to complete.
Change-Id: Id4d54edfe920aeb4a534980cb0cc85a56c067a70
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Diffstat (limited to 'src/corelib/io/qwindowspipewriter_p.h')
-rw-r--r-- | src/corelib/io/qwindowspipewriter_p.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/corelib/io/qwindowspipewriter_p.h b/src/corelib/io/qwindowspipewriter_p.h index cb78195a85..f8cabb225d 100644 --- a/src/corelib/io/qwindowspipewriter_p.h +++ b/src/corelib/io/qwindowspipewriter_p.h @@ -69,6 +69,7 @@ public: ~QWindowsPipeWriter(); bool write(const QByteArray &ba); + bool write(const char *data, qint64 size); void stop(); bool waitForWrite(int msecs); bool checkForWrite() { return consumePendingAndEmit(false); } @@ -83,6 +84,10 @@ protected: bool event(QEvent *e) override; private: + template <typename... Args> + inline bool writeImpl(Args... args); + bool writeImplTail(QMutexLocker<QMutex> *locker); + void startAsyncWriteLocked(); static void CALLBACK waitCallback(PTP_CALLBACK_INSTANCE instance, PVOID context, PTP_WAIT wait, TP_WAIT_RESULT waitResult); |