public QQmlIncubationController
{
public:
- PeriodicIncubationController() {
- incubated = false;
- startTimer(16);
- }
+ PeriodicIncubationController() : incubated(false) {}
+
+ void start() { startTimer(20); }
bool incubated;
QFETCH(QUrl, qmlFile);
QFETCH(QStringList, expectedWarnings);
- if (!engine.incubationController())
- engine.setIncubationController(new PeriodicIncubationController);
- PeriodicIncubationController *controller = static_cast<PeriodicIncubationController*>(engine.incubationController());
- controller->incubated = false;
+ PeriodicIncubationController *controller = new PeriodicIncubationController;
+ QQmlIncubationController *previous = engine.incubationController();
+ engine.setIncubationController(controller);
+ delete previous;
+
QQmlComponent component(&engine, testFileUrl("asynchronous.qml"));
QQuickItem *root = qobject_cast<QQuickItem*>(component.create());
QVERIFY(root);
if (expectedWarnings.isEmpty()) {
QCOMPARE(loader->status(), QQuickLoader::Loading);
+
+ controller->start();
QVERIFY(!controller->incubated); // asynchronous compilation means not immediately compiled/incubating.
QTRY_VERIFY(controller->incubated); // but should start incubating once compilation is complete.
QTRY_VERIFY(loader->item());
void tst_QQuickLoader::asynchronous_clear()
{
- if (!engine.incubationController())
- engine.setIncubationController(new PeriodicIncubationController);
+ PeriodicIncubationController *controller = new PeriodicIncubationController;
+ QQmlIncubationController *previous = engine.incubationController();
+ engine.setIncubationController(controller);
+ delete previous;
+
QQmlComponent component(&engine, testFileUrl("asynchronous.qml"));
QQuickItem *root = qobject_cast<QQuickItem*>(component.create());
QVERIFY(root);
QMetaObject::invokeMethod(root, "loadComponent");
QVERIFY(!loader->item());
+ controller->start();
QCOMPARE(loader->status(), QQuickLoader::Loading);
QTRY_COMPARE(engine.incubationController()->incubatingObjectCount(), 1);
void tst_QQuickLoader::simultaneousSyncAsync()
{
- if (!engine.incubationController())
- engine.setIncubationController(new PeriodicIncubationController);
- PeriodicIncubationController *controller = static_cast<PeriodicIncubationController*>(engine.incubationController());
- controller->incubated = false;
+ PeriodicIncubationController *controller = new PeriodicIncubationController;
+ QQmlIncubationController *previous = engine.incubationController();
+ engine.setIncubationController(controller);
+ delete previous;
+
QQmlComponent component(&engine, testFileUrl("simultaneous.qml"));
QQuickItem *root = qobject_cast<QQuickItem*>(component.create());
QVERIFY(root);
QVERIFY(!asyncLoader->item());
QVERIFY(syncLoader->item());
+ controller->start();
QCOMPARE(asyncLoader->status(), QQuickLoader::Loading);
QVERIFY(!controller->incubated); // asynchronous compilation means not immediately compiled/incubating.
QTRY_VERIFY(controller->incubated); // but should start incubating once compilation is complete.