From 79b742b7e01ba5fa46b45578660d0e1f9ce0dae6 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 20 Jul 2012 10:56:54 +0200 Subject: QtNetwork: use nullary version of qRegisterMetaType("T") Using the nullary version has the advantage that multiple calls during a program run are much more efficient, since an inlined atomic is used to store the result. It also ensures that Q_DECLARE_METATYPE(T) has been used, whereas qRegisterMetaType("T") will happily register anything. So I've added the macro where it was missing, or moved it to a central place when it existed hidden. In tst_qnetworkreply, this became a bit tricky, because a private header is conditionally included, so moved the Q_DECLARE_METATYPE() into a conditional section, too. Change-Id: I71484523e4277f4697b7d4b2ddc3505375162727 Reviewed-by: Stephen Kelly --- src/network/access/qhttpnetworkconnectionchannel.cpp | 2 +- src/network/access/qhttpnetworkrequest_p.h | 2 ++ src/network/access/qnetworkaccessmanager.cpp | 16 ++++++++-------- src/network/access/qnetworkreply.h | 2 ++ src/network/access/qnetworkreplyhttpimpl.cpp | 2 -- src/network/access/qnetworkreplyimpl.cpp | 4 +--- src/network/access/qnetworkreplyimpl_p.h | 2 ++ src/network/bearer/qnetworkconfigmanager_p.cpp | 4 ++-- src/network/bearer/qnetworkconfiguration.h | 3 +++ src/network/bearer/qnetworkconfiguration_p.h | 2 ++ src/network/kernel/qhostinfo.cpp | 2 +- src/network/kernel/qhostinfo.h | 2 ++ src/network/kernel/qnetworkproxy.h | 2 ++ src/network/socket/qabstractsocket.h | 3 +++ src/network/ssl/qsslcertificate.h | 2 ++ src/network/ssl/qsslconfiguration.h | 2 ++ src/network/ssl/qsslsocket_openssl.cpp | 4 ---- src/plugins/bearer/qbearerengine_impl.h | 2 ++ src/plugins/bearer/qnetworksession_impl.cpp | 4 ++-- 19 files changed, 39 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index 9cbdcd65bd..be2be048bc 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -125,7 +125,7 @@ void QHttpNetworkConnectionChannel::init() // will then emit a signal to the user of QNetworkReply // but cannot be caught because the user did not have a chance yet // to connect to QNetworkReply's signals. - qRegisterMetaType("QAbstractSocket::SocketError"); + qRegisterMetaType(); QObject::connect(socket, SIGNAL(disconnected()), this, SLOT(_q_disconnected()), Qt::QueuedConnection); diff --git a/src/network/access/qhttpnetworkrequest_p.h b/src/network/access/qhttpnetworkrequest_p.h index d6d9c69bea..1ae6015d8d 100644 --- a/src/network/access/qhttpnetworkrequest_p.h +++ b/src/network/access/qhttpnetworkrequest_p.h @@ -155,6 +155,8 @@ public: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QHttpNetworkRequest) + #endif // QT_NO_HTTP diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index d5b4eec0ed..dd7bfe1bfc 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -407,20 +407,20 @@ QNetworkAccessManager::QNetworkAccessManager(QObject *parent) { ensureInitialized(); - qRegisterMetaType("QNetworkReply::NetworkError"); + qRegisterMetaType(); #ifndef QT_NO_NETWORKPROXY - qRegisterMetaType("QNetworkProxy"); + qRegisterMetaType(); #endif #ifndef QT_NO_SSL - qRegisterMetaType >("QList"); - qRegisterMetaType("QSslConfiguration"); + qRegisterMetaType >(); + qRegisterMetaType(); #endif - qRegisterMetaType > >("QList >"); + qRegisterMetaType > >(); #ifndef QT_NO_HTTP - qRegisterMetaType("QHttpNetworkRequest"); + qRegisterMetaType(); #endif - qRegisterMetaType("QNetworkReply::NetworkError"); - qRegisterMetaType >("QSharedPointer"); + qRegisterMetaType(); + qRegisterMetaType >(); } /*! diff --git a/src/network/access/qnetworkreply.h b/src/network/access/qnetworkreply.h index cc3a41af4e..f6327fd012 100644 --- a/src/network/access/qnetworkreply.h +++ b/src/network/access/qnetworkreply.h @@ -180,6 +180,8 @@ private: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QNetworkReply::NetworkError) + QT_END_HEADER #endif diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp index 088442d62d..44129c6bb2 100644 --- a/src/network/access/qnetworkreplyhttpimpl.cpp +++ b/src/network/access/qnetworkreplyhttpimpl.cpp @@ -63,8 +63,6 @@ #include // for strchr -Q_DECLARE_METATYPE(QSharedPointer) - QT_BEGIN_NAMESPACE class QNetworkProxy; diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp index d0393475de..6d5c9b2ce3 100644 --- a/src/network/access/qnetworkreplyimpl.cpp +++ b/src/network/access/qnetworkreplyimpl.cpp @@ -52,8 +52,6 @@ #include -Q_DECLARE_METATYPE(QSharedPointer) - QT_BEGIN_NAMESPACE inline QNetworkReplyImplPrivate::QNetworkReplyImplPrivate() @@ -1134,7 +1132,7 @@ QDisabledNetworkReply::QDisabledNetworkReply(QObject *parent, setUrl(req.url()); setOperation(op); - qRegisterMetaType("QNetworkReply::NetworkError"); + qRegisterMetaType(); QString msg = QCoreApplication::translate("QNetworkAccessManager", "Network access is disabled."); diff --git a/src/network/access/qnetworkreplyimpl_p.h b/src/network/access/qnetworkreplyimpl_p.h index a4c1f73b06..a3705f72d3 100644 --- a/src/network/access/qnetworkreplyimpl_p.h +++ b/src/network/access/qnetworkreplyimpl_p.h @@ -239,4 +239,6 @@ protected: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QSharedPointer) + #endif diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp index e44b6897ed..c501280014 100644 --- a/src/network/bearer/qnetworkconfigmanager_p.cpp +++ b/src/network/bearer/qnetworkconfigmanager_p.cpp @@ -62,8 +62,8 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, QNetworkConfigurationManagerPrivate::QNetworkConfigurationManagerPrivate() : QObject(), pollTimer(0), mutex(QMutex::Recursive), forcedPolling(0), firstUpdate(true) { - qRegisterMetaType("QNetworkConfiguration"); - qRegisterMetaType("QNetworkConfigurationPrivatePointer"); + qRegisterMetaType(); + qRegisterMetaType(); } void QNetworkConfigurationManagerPrivate::initialize() diff --git a/src/network/bearer/qnetworkconfiguration.h b/src/network/bearer/qnetworkconfiguration.h index 807589cf45..207b50379b 100644 --- a/src/network/bearer/qnetworkconfiguration.h +++ b/src/network/bearer/qnetworkconfiguration.h @@ -47,6 +47,7 @@ #include #include #include +#include QT_BEGIN_HEADER @@ -125,6 +126,8 @@ private: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QNetworkConfiguration) + QT_END_HEADER #endif // QNETWORKCONFIGURATION_H diff --git a/src/network/bearer/qnetworkconfiguration_p.h b/src/network/bearer/qnetworkconfiguration_p.h index 47174a1eab..e47ef613e5 100644 --- a/src/network/bearer/qnetworkconfiguration_p.h +++ b/src/network/bearer/qnetworkconfiguration_p.h @@ -99,4 +99,6 @@ private: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QNetworkConfigurationPrivatePointer) + #endif // QNETWORKCONFIGURATIONPRIVATE_H diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index 32cf90145c..21ce2bac9a 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -159,7 +159,7 @@ int QHostInfo::lookupHost(const QString &name, QObject *receiver, return -1; } - qRegisterMetaType("QHostInfo"); + qRegisterMetaType(); int id = theIdCounter.fetchAndAddRelaxed(1); // generate unique ID diff --git a/src/network/kernel/qhostinfo.h b/src/network/kernel/qhostinfo.h index 2fc87f3bdc..602d4dad75 100644 --- a/src/network/kernel/qhostinfo.h +++ b/src/network/kernel/qhostinfo.h @@ -96,6 +96,8 @@ private: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QHostInfo) + QT_END_HEADER #endif // QHOSTINFO_H diff --git a/src/network/kernel/qnetworkproxy.h b/src/network/kernel/qnetworkproxy.h index 5287546849..2954ad3d71 100644 --- a/src/network/kernel/qnetworkproxy.h +++ b/src/network/kernel/qnetworkproxy.h @@ -215,6 +215,8 @@ Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QNetworkProxy &proxy); QT_END_NAMESPACE +Q_DECLARE_METATYPE(QNetworkProxy) + QT_END_HEADER #endif // QT_NO_NETWORKPROXY diff --git a/src/network/socket/qabstractsocket.h b/src/network/socket/qabstractsocket.h index dedde9649a..c384336b11 100644 --- a/src/network/socket/qabstractsocket.h +++ b/src/network/socket/qabstractsocket.h @@ -238,6 +238,9 @@ Q_NETWORK_EXPORT QDebug operator<<(QDebug, QAbstractSocket::SocketState); QT_END_NAMESPACE +Q_DECLARE_METATYPE(QAbstractSocket::SocketState) +Q_DECLARE_METATYPE(QAbstractSocket::SocketError) + QT_END_HEADER #endif // QABSTRACTSOCKET_H diff --git a/src/network/ssl/qsslcertificate.h b/src/network/ssl/qsslcertificate.h index a0ec195b6a..08df58bae8 100644 --- a/src/network/ssl/qsslcertificate.h +++ b/src/network/ssl/qsslcertificate.h @@ -158,6 +158,8 @@ Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, QSslCertificate::SubjectInfo in QT_END_NAMESPACE +Q_DECLARE_METATYPE(QSslCertificate) + QT_END_HEADER #endif diff --git a/src/network/ssl/qsslconfiguration.h b/src/network/ssl/qsslconfiguration.h index d57ba38561..dea32f837c 100644 --- a/src/network/ssl/qsslconfiguration.h +++ b/src/network/ssl/qsslconfiguration.h @@ -138,6 +138,8 @@ private: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QSslConfiguration) + QT_END_HEADER #endif diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 83071f2c7a..a23e3fa377 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -60,10 +60,6 @@ #include #include // for loading the security lib for the CA store -#ifdef Q_OS_WIN -Q_DECLARE_METATYPE(QSslCertificate); -#endif - QT_BEGIN_NAMESPACE #if defined(Q_OS_MAC) && !defined(Q_OS_IOS) diff --git a/src/plugins/bearer/qbearerengine_impl.h b/src/plugins/bearer/qbearerengine_impl.h index aa4433115e..7c17d8d090 100644 --- a/src/plugins/bearer/qbearerengine_impl.h +++ b/src/plugins/bearer/qbearerengine_impl.h @@ -80,6 +80,8 @@ Q_SIGNALS: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QBearerEngineImpl::ConnectionError) + #endif // QT_NO_BEARERMANAGEMENT #endif // QBEARERENGINE_IMPL_H diff --git a/src/plugins/bearer/qnetworksession_impl.cpp b/src/plugins/bearer/qnetworksession_impl.cpp index 31cea0bfc3..bea881fa25 100644 --- a/src/plugins/bearer/qnetworksession_impl.cpp +++ b/src/plugins/bearer/qnetworksession_impl.cpp @@ -96,14 +96,14 @@ void QNetworkSessionPrivateImpl::syncStateWithInterface() state = QNetworkSession::Invalid; lastError = QNetworkSession::UnknownSessionError; - qRegisterMetaType("QBearerEngineImpl::ConnectionError"); + qRegisterMetaType(); switch (publicConfig.type()) { case QNetworkConfiguration::InternetAccessPoint: activeConfig = publicConfig; engine = getEngineFromId(activeConfig.identifier()); if (engine) { - qRegisterMetaType("QNetworkConfigurationPrivatePointer"); + qRegisterMetaType(); connect(engine, SIGNAL(configurationChanged(QNetworkConfigurationPrivatePointer)), this, SLOT(configurationChanged(QNetworkConfigurationPrivatePointer)), Qt::QueuedConnection); -- cgit v1.2.3