summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qmlengine.cpp
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2010-02-03 08:00:53 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2010-02-03 08:00:53 (GMT)
commit8003041739f2ec101bf8198f6a53375ce0112eb1 (patch)
tree4e0975ec444c87e37cb0b874ca1dfde965ef6185 /src/declarative/qml/qmlengine.cpp
parent142dc7e75faaf76894633851c25a907bd7e8b9b8 (diff)
downloadQt-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.cpp42
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();
}
/*!