diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2011-09-05 17:31:41 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-09-29 06:12:49 +0200 |
commit | 703c808a5649169dd6b9605af273374cd62951d1 (patch) | |
tree | 7248cc72bfa632a51c814d6622f0b12a7f2bd443 /src/declarative/qml/qdeclarativecomponent_p.h | |
parent | 600e56ad053362dd5d4150f5dec6b93c2fee575b (diff) |
Asynchronous component instantiation
This introduces two main:
* the QML compiler executes in a separate thread
* item instantiation can be interrupted and resumed to
allow it to be split across multiple frames.
Task-number: QTBUG-21151
Change-Id: I9631c62bb77da3a2e0c37f0da3719533fdce4fef
Reviewed-on: http://codereview.qt-project.org/5676
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src/declarative/qml/qdeclarativecomponent_p.h')
-rw-r--r-- | src/declarative/qml/qdeclarativecomponent_p.h | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/src/declarative/qml/qdeclarativecomponent_p.h b/src/declarative/qml/qdeclarativecomponent_p.h index ba937491b7..7e6f9c2d30 100644 --- a/src/declarative/qml/qdeclarativecomponent_p.h +++ b/src/declarative/qml/qdeclarativecomponent_p.h @@ -59,6 +59,7 @@ #include "private/qdeclarativeengine_p.h" #include "private/qdeclarativetypeloader_p.h" #include "private/qbitfield_p.h" +#include "private/qdeclarativevme_p.h" #include "qdeclarativeerror.h" #include "qdeclarative.h" @@ -84,9 +85,8 @@ class Q_AUTOTEST_EXPORT QDeclarativeComponentPrivate : public QObjectPrivate, pu public: QDeclarativeComponentPrivate() : typeData(0), progress(0.), start(-1), cc(0), engine(0), creationContext(0) {} - QObject *beginCreate(QDeclarativeContextData *, const QBitField &); + QObject *beginCreate(QDeclarativeContextData *); void completeCreate(); - QObject *createObjectWithInitialProperties(v8::Handle<v8::Object> qmlGlobal, v8::Handle<v8::Object> valuemap, QObject *parentObject); QObject *completeCreateObjectWithInitialProperties(v8::Handle<v8::Object> qmlGlobal, v8::Handle<v8::Object> valuemap, QObject *toCreate); QDeclarativeTypeData *typeData; @@ -102,25 +102,18 @@ public: QDeclarativeCompiledData *cc; struct ConstructionState { - ConstructionState() : componentAttached(0), completePending(false) {} - QList<QDeclarativeEnginePrivate::SimpleList<QDeclarativeAbstractBinding> > bindValues; - QList<QDeclarativeEnginePrivate::SimpleList<QDeclarativeParserStatus> > parserStatus; - QList<QPair<QDeclarativeGuard<QObject>, int> > finalizedParserStatus; - QDeclarativeComponentAttached *componentAttached; + ConstructionState() : completePending(false) {} + + QDeclarativeVME vme; QList<QDeclarativeError> errors; bool completePending; }; ConstructionState state; - static QObject *begin(QDeclarativeContextData *parentContext, QDeclarativeContextData *componentCreationContext, - QDeclarativeCompiledData *component, int start, - ConstructionState *state, QList<QDeclarativeError> *errors, - const QBitField &bindings = QBitField()); static void beginDeferred(QDeclarativeEnginePrivate *enginePriv, QObject *object, ConstructionState *state); static void complete(QDeclarativeEnginePrivate *enginePriv, ConstructionState *state); - QDeclarativeEngine *engine; QDeclarativeGuardedContextData creationContext; @@ -155,8 +148,8 @@ Q_SIGNALS: void destruction(); private: + friend class QDeclarativeVME; friend class QDeclarativeContextData; - friend class QDeclarativeComponentPrivate; }; QT_END_NAMESPACE |