diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2011-10-04 10:42:37 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-04 08:11:12 +0200 |
commit | 0cf34bc8a232220a33932efda748cea8917a855d (patch) | |
tree | eb3ee7fab583fb97a4dfbd77dc55bcb63488494b /src | |
parent | 01a60f8771ba273d164042710364b7fd88168dcc (diff) |
QDeclarativeIncubator autotests
Change-Id: Ib1b70903c5aa82fc1112c17db1b676b4740ea685
Task-number: QTBUG-21151
Reviewed-on: http://codereview.qt-project.org/5940
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/declarative/qml/qdeclarativeincubator.cpp | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/declarative/qml/qdeclarativeincubator.cpp b/src/declarative/qml/qdeclarativeincubator.cpp index b6eb4e478a..ff0712d3bb 100644 --- a/src/declarative/qml/qdeclarativeincubator.cpp +++ b/src/declarative/qml/qdeclarativeincubator.cpp @@ -56,6 +56,9 @@ void QDeclarativeEnginePrivate::incubate(QDeclarativeIncubator &i, QDeclarativeC QDeclarativeIncubator::IncubationMode mode = i.incubationMode(); + if (!incubationController) + mode = QDeclarativeIncubator::Synchronous; + if (mode == QDeclarativeIncubator::AsynchronousIfNested) { mode = QDeclarativeIncubator::Synchronous; @@ -77,11 +80,12 @@ void QDeclarativeEnginePrivate::incubate(QDeclarativeIncubator &i, QDeclarativeC } } + inProgressCreations++; + if (mode == QDeclarativeIncubator::Synchronous) { QDeclarativeVME::Interrupt i; p->incubate(i); } else { - inProgressCreations++; incubatorList.insert(p); incubatorCount++; @@ -132,11 +136,13 @@ void QDeclarativeIncubatorPrivate::clear() QDeclarativeEnginePrivate *enginePriv = QDeclarativeEnginePrivate::get(component->engine); component->release(); component = 0; - enginePriv->incubatorCount--; QDeclarativeIncubationController *controller = enginePriv->incubationController; if (controller) controller->incubatingObjectCountChanged(enginePriv->incubatorCount); + } else if (component) { + component->release(); + component = 0; } if (nextWaitingFor.isInList()) { @@ -476,6 +482,12 @@ void QDeclarativeIncubator::clear() if (s == Null) return; + QDeclarativeEnginePrivate *enginePriv = 0; + if (s == Loading) { + Q_ASSERT(d->component); + enginePriv = QDeclarativeEnginePrivate::get(d->component->engine); + } + d->clear(); d->vme.reset(); @@ -489,6 +501,19 @@ void QDeclarativeIncubator::clear() d->errors.clear(); d->progress = QDeclarativeIncubatorPrivate::Execute; d->result = 0; + + if (s == Loading) { + Q_ASSERT(enginePriv); + + enginePriv->inProgressCreations--; + if (0 == enginePriv->inProgressCreations) { + while (enginePriv->erroredBindings) { + enginePriv->warning(enginePriv->erroredBindings->error); + enginePriv->erroredBindings->removeError(); + } + } + } + } /*! |