diff options
author | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-04-10 15:17:36 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-04-16 17:14:20 +0000 |
commit | 61f218b4e772c1d97e32ef8031de0043473ebbef (patch) | |
tree | 3e3cb0fb11c338bef3595de027a31eb95a73f545 /src/qml/qml/qqmlcontext.cpp | |
parent | 496ddbfd1fe27bdddf5c15cd0ea70df452a3ec04 (diff) |
Speed up object creation
Avoid copying url and file name twice into the context every time we
instantiate an object.
Change-Id: I1c76b80b9c44f95512af5899d760151f6dcd7bb5
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/qml/qqmlcontext.cpp')
-rw-r--r-- | src/qml/qml/qqmlcontext.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/qml/qml/qqmlcontext.cpp b/src/qml/qml/qqmlcontext.cpp index e641226b90..3e6ca6667e 100644 --- a/src/qml/qml/qqmlcontext.cpp +++ b/src/qml/qml/qqmlcontext.cpp @@ -426,14 +426,14 @@ QUrl QQmlContextData::resolvedUrl(const QUrl &src) if (src.isRelative() && !src.isEmpty()) { if (ctxt) { while(ctxt) { - if(ctxt->url.isValid()) + if (ctxt->url().isValid()) break; else ctxt = ctxt->parent; } if (ctxt) - resolved = ctxt->url.resolved(src); + resolved = ctxt->url().resolved(src); else if (engine) resolved = engine->baseUrl().resolved(src); } @@ -462,8 +462,8 @@ void QQmlContext::setBaseUrl(const QUrl &baseUrl) { Q_D(QQmlContext); - d->data->url = baseUrl; - d->data->urlString = baseUrl.toString(); + d->data->baseUrl = baseUrl; + d->data->baseUrlString = baseUrl.toString(); } /*! @@ -474,11 +474,11 @@ QUrl QQmlContext::baseUrl() const { Q_D(const QQmlContext); const QQmlContextData* data = d->data; - while (data && data->url.isEmpty()) + while (data && data->url().isEmpty()) data = data->parent; if (data) - return data->url; + return data->url(); else return QUrl(); } @@ -816,4 +816,18 @@ QV4::IdentifierHash<int> &QQmlContextData::propertyNames() const return propertyNameCache; } +QUrl QQmlContextData::url() const +{ + if (typeCompilationUnit) + return typeCompilationUnit->url(); + return baseUrl; +} + +QString QQmlContextData::urlString() const +{ + if (typeCompilationUnit) + return typeCompilationUnit->fileName(); + return baseUrlString; +} + QT_END_NAMESPACE |