QNetworkAccessBackend: emit readyRead less often

Once per iteration of the loop wouldn't theoretically be so bad if there
was no overhead to emitting signals or reading from buffers.

Change-Id: I0e424264fcc95eb2e2e5f8f908cf9ae3a7cc4b7e
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
bb10
Mårten Nordheim 2021-08-23 16:51:32 +02:00
parent d806ce6fc5
commit 0e9b75eab2
1 changed files with 4 additions and 1 deletions

View File

@ -734,6 +734,7 @@ void QNetworkReplyImplPrivate::readFromBackend()
if (backend->bytesAvailable())
emit q->readyRead();
} else {
bool anyBytesRead = false;
while (backend->bytesAvailable()
&& (!readBufferMaxSize || buffer.size() < readBufferMaxSize)) {
qint64 toRead = qMin(nextDownstreamBlockSize(), backend->bytesAvailable());
@ -743,8 +744,10 @@ void QNetworkReplyImplPrivate::readFromBackend()
qint64 bytesRead = backend->read(data, toRead);
Q_ASSERT(bytesRead <= toRead);
buffer.chop(toRead - bytesRead);
emit q->readyRead();
anyBytesRead |= bytesRead > 0;
}
if (anyBytesRead)
emit q->readyRead();
}
}