core/lazyloader: add LazyLoader

Also fixes qml incubation in general, which was completely broken,
meaning the native qml Loader type should also work now.
This commit is contained in:
outfoxxed 2024-03-19 05:35:44 -07:00
parent 8d742e315e
commit 518977932d
Signed by: outfoxxed
GPG key ID: 4C88A185FB89301E
11 changed files with 499 additions and 0 deletions

View file

@ -1,9 +1,12 @@
#pragma once
#include <qcontainerfwd.h>
#include <qfilesystemwatcher.h>
#include <qobject.h>
#include <qqmlincubator.h>
#include <qtclasshelpermacros.h>
#include "incubator.hpp"
#include "qsintercept.hpp"
#include "scan.hpp"
#include "shell.hpp"
@ -21,6 +24,8 @@ public:
void onReload(EngineGeneration* old);
void setWatchingFiles(bool watching);
void registerIncubationController(QQmlIncubationController* controller);
static EngineGeneration* findObjectGeneration(QObject* object);
QmlScanner scanner;
@ -29,7 +34,15 @@ public:
ShellRoot* root = nullptr;
SingletonRegistry singletonRegistry;
QFileSystemWatcher* watcher = nullptr;
DelayedQmlIncubationController delayedIncubationController;
signals:
void filesChanged();
private slots:
void incubationControllerDestroyed();
private:
void assignIncubationController();
QVector<QQmlIncubationController*> incubationControllers;
};