aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2011-10-04 10:42:37 +1000
committerQt by Nokia <qt-info@nokia.com>2011-10-04 08:11:12 +0200
commit0cf34bc8a232220a33932efda748cea8917a855d (patch)
treeeb3ee7fab583fb97a4dfbd77dc55bcb63488494b /src
parent01a60f8771ba273d164042710364b7fd88168dcc (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.cpp29
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();
+ }
+ }
+ }
+
}
/*!