QNetworkReply: hold QAtomicInt in shared_ptr, not QSharedPointer

Ditto QNetworkAccessAuthenticationManager.

QSharedPointer performs twice as many atomic operations per pointer
copy as std::shared_ptr, and this is private API, we're not bound by
BC constraints, so we can port to the more efficient version.

Change-Id: I59dc09ff4eb3b4acf5d7a68695752a9a7110d8d3
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
Marc Mutz 2021-07-10 23:17:04 +02:00
parent 017eb5627b
commit 99f0db695a
5 changed files with 11 additions and 11 deletions

View File

@ -97,13 +97,13 @@ public:
qint64 readBufferMaxSize;
qint64 bytesEmitted;
// From backend, modified by us for signal compression
QSharedPointer<QAtomicInt> pendingDownloadData;
QSharedPointer<QAtomicInt> pendingDownloadProgress;
std::shared_ptr<QAtomicInt> pendingDownloadData;
std::shared_ptr<QAtomicInt> pendingDownloadProgress;
#ifndef QT_NO_NETWORKPROXY
QNetworkProxy cacheProxy;
QNetworkProxy transparentProxy;
#endif
QSharedPointer<QNetworkAccessAuthenticationManager> authenticationManager;
std::shared_ptr<QNetworkAccessAuthenticationManager> authenticationManager;
bool synchronous;
qint64 connectionCacheExpiryTimeoutSeconds;

View File

@ -86,7 +86,7 @@ public:
cookieJarCreated(false),
defaultAccessControl(true),
redirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy),
authenticationManager(QSharedPointer<QNetworkAccessAuthenticationManager>::create())
authenticationManager(std::make_shared<QNetworkAccessAuthenticationManager>())
{
}
~QNetworkAccessManagerPrivate();
@ -150,7 +150,7 @@ public:
QNetworkRequest::RedirectPolicy redirectPolicy = QNetworkRequest::NoLessSafeRedirectPolicy;
// The cache with authorization data:
QSharedPointer<QNetworkAccessAuthenticationManager> authenticationManager;
std::shared_ptr<QNetworkAccessAuthenticationManager> authenticationManager;
// this cache can be used by individual backends to cache e.g. their TCP connections to a server
// and use the connections for multiple requests.

View File

@ -478,8 +478,8 @@ QNetworkReplyHttpImplPrivate::QNetworkReplyHttpImplPrivate()
, downloadBufferReadPosition(0)
, downloadBufferCurrentSize(0)
, downloadZerocopyBuffer(nullptr)
, pendingDownloadDataEmissions(QSharedPointer<QAtomicInt>::create())
, pendingDownloadProgressEmissions(QSharedPointer<QAtomicInt>::create())
, pendingDownloadDataEmissions(std::make_shared<QAtomicInt>())
, pendingDownloadProgressEmissions(std::make_shared<QAtomicInt>())
#ifndef QT_NO_SSL
, pendingIgnoreAllSslErrors(false)
#endif

View File

@ -247,8 +247,8 @@ public:
char* downloadZerocopyBuffer;
// Will be increased by HTTP thread:
QSharedPointer<QAtomicInt> pendingDownloadDataEmissions;
QSharedPointer<QAtomicInt> pendingDownloadProgressEmissions;
std::shared_ptr<QAtomicInt> pendingDownloadDataEmissions;
std::shared_ptr<QAtomicInt> pendingDownloadProgressEmissions;
#ifndef QT_NO_SSL

View File

@ -123,8 +123,8 @@ public:
void _q_bufferOutgoingData();
void _q_bufferOutgoingDataFinished();
QSharedPointer<QAtomicInt> pendingDownloadData;
QSharedPointer<QAtomicInt> pendingDownloadProgress;
std::shared_ptr<QAtomicInt> pendingDownloadData;
std::shared_ptr<QAtomicInt> pendingDownloadProgress;
qint64 bytesDownloaded;
qint64 bytesBuffered;