diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2010-02-03 08:00:53 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2010-02-03 08:00:53 (GMT) |
commit | 8003041739f2ec101bf8198f6a53375ce0112eb1 (patch) | |
tree | 4e0975ec444c87e37cb0b874ca1dfde965ef6185 /src/declarative/qml/qmlengine.cpp | |
parent | 142dc7e75faaf76894633851c25a907bd7e8b9b8 (diff) | |
download | Qt-8003041739f2ec101bf8198f6a53375ce0112eb1.zip Qt-8003041739f2ec101bf8198f6a53375ce0112eb1.tar.gz Qt-8003041739f2ec101bf8198f6a53375ce0112eb1.tar.bz2 |
Don't create one QNetworkAccessManager per XMLHttpRequest
Diffstat (limited to 'src/declarative/qml/qmlengine.cpp')
-rw-r--r-- | src/declarative/qml/qmlengine.cpp | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp index a33aea7..04274ba 100644 --- a/src/declarative/qml/qmlengine.cpp +++ b/src/declarative/qml/qmlengine.cpp @@ -221,6 +221,11 @@ QScriptValue QmlScriptEngine::resolvedUrl(QScriptContext *ctxt, QScriptEngine *e return QScriptValue(r.toString()); } +QNetworkAccessManager *QmlScriptEngine::networkAccessManager() +{ + return p->getNetworkAccessManager(); +} + QmlEnginePrivate::~QmlEnginePrivate() { while (cleanup) { @@ -418,6 +423,27 @@ void QmlEngine::namInvalidated() d->accessManagerValid = false; } +QNetworkAccessManager *QmlEnginePrivate::getNetworkAccessManager() const +{ + Q_Q(const QmlEngine); + + if (!accessManagerValid) { + delete networkAccessManagerFactory; + networkAccessManagerFactory = 0; + } + if (!networkAccessManager) { + if (networkAccessManagerFactory) { + QObject::connect(networkAccessManagerFactory, SIGNAL(invalidated()), + q, SLOT(namInvalidated()), Qt::UniqueConnection); + networkAccessManager = networkAccessManagerFactory->create(const_cast<QmlEngine*>(q)); + } else { + networkAccessManager = new QNetworkAccessManager(const_cast<QmlEngine*>(q)); + } + accessManagerValid = true; + } + return networkAccessManager; +} + /*! Returns a common QNetworkAccessManager which can be used by any QML element instantiated by this engine. @@ -432,21 +458,7 @@ void QmlEngine::namInvalidated() QNetworkAccessManager *QmlEngine::networkAccessManager() const { Q_D(const QmlEngine); - if (!d->accessManagerValid) { - delete d->networkAccessManagerFactory; - d->networkAccessManagerFactory = 0; - } - if (!d->networkAccessManager) { - if (d->networkAccessManagerFactory) { - connect(d->networkAccessManagerFactory, SIGNAL(invalidated()) - , this, SLOT(namInvalidated()), Qt::UniqueConnection); - d->networkAccessManager = d->networkAccessManagerFactory->create(const_cast<QmlEngine*>(this)); - } else { - d->networkAccessManager = new QNetworkAccessManager(const_cast<QmlEngine*>(this)); - } - d->accessManagerValid = true; - } - return d->networkAccessManager; + return d->getNetworkAccessManager(); } /*! |