summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qdeclarativeworkerscript.cpp
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-04-30 11:43:12 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-04-30 11:43:12 (GMT)
commit6103c282707bac2d585473d45900d69d475cf0c2 (patch)
treec36bd5818b85bcdc62226b6f430576f08c303e1c /src/declarative/qml/qdeclarativeworkerscript.cpp
parent3e6a12e90d05d24bca68128d60215c207a416ef6 (diff)
parent0b7a84684e0b2065208172d7145e838c7a653b83 (diff)
downloadQt-6103c282707bac2d585473d45900d69d475cf0c2.zip
Qt-6103c282707bac2d585473d45900d69d475cf0c2.tar.gz
Qt-6103c282707bac2d585473d45900d69d475cf0c2.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-qml: (68 commits) Don't create an anchors element so that we can check that there aren't any Ensure eval and Function are in the correct scope Add availableFonts.qml for fonts examples. Add Qt.fontFamilies() method Avoid regenerating PathView delegates needlessly When a model delegate is released, remove it from the scene immediately. Fix assignment of value types to javascript var. More doc fixes Make QDeclarativeParserStatus method pure virtual to encourage right code. Doc fixes Fix error string Add QML value types for math3d types Fix assert in qdeclarativepathview Avoid divisions by zero in qdeclarativetimeline Initialize variable. Doc: mention that size of delegate affects flicking performance. buffer new items on initialization. Compile with QT_NO_GRAPHICSEFFECT. Fix translation context when qsTr is used in PropertyChanges. missed files ...
Diffstat (limited to 'src/declarative/qml/qdeclarativeworkerscript.cpp')
-rw-r--r--src/declarative/qml/qdeclarativeworkerscript.cpp29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp
index 138d979..c55998f 100644
--- a/src/declarative/qml/qdeclarativeworkerscript.cpp
+++ b/src/declarative/qml/qdeclarativeworkerscript.cpp
@@ -538,7 +538,7 @@ void QDeclarativeWorkerScriptEngine::run()
by the \tt onMessage() handler of \tt myWorker.
*/
QDeclarativeWorkerScript::QDeclarativeWorkerScript(QObject *parent)
-: QObject(parent), m_engine(0), m_scriptId(-1)
+: QObject(parent), m_engine(0), m_scriptId(-1), m_componentComplete(true)
{
}
@@ -565,7 +565,7 @@ void QDeclarativeWorkerScript::setSource(const QUrl &source)
m_source = source;
- if (m_engine)
+ if (engine())
m_engine->executeUrl(m_scriptId, m_source);
emit sourceChanged();
@@ -580,7 +580,7 @@ void QDeclarativeWorkerScript::setSource(const QUrl &source)
*/
void QDeclarativeWorkerScript::sendMessage(const QScriptValue &message)
{
- if (!m_engine) {
+ if (!engine()) {
qWarning("QDeclarativeWorkerScript: Attempt to send message before WorkerScript establishment");
return;
}
@@ -588,13 +588,19 @@ void QDeclarativeWorkerScript::sendMessage(const QScriptValue &message)
m_engine->sendMessage(m_scriptId, QDeclarativeWorkerScriptEnginePrivate::scriptValueToVariant(message));
}
-void QDeclarativeWorkerScript::componentComplete()
+void QDeclarativeWorkerScript::classBegin()
{
- if (!m_engine) {
+ m_componentComplete = false;
+}
+
+QDeclarativeWorkerScriptEngine *QDeclarativeWorkerScript::engine()
+{
+ if (m_engine) return m_engine;
+ if (m_componentComplete) {
QDeclarativeEngine *engine = qmlEngine(this);
if (!engine) {
- qWarning("QDeclarativeWorkerScript: componentComplete() called without qmlEngine() set");
- return;
+ qWarning("QDeclarativeWorkerScript: engine() called without qmlEngine() set");
+ return 0;
}
m_engine = QDeclarativeEnginePrivate::get(engine)->getWorkerScriptEngine();
@@ -602,7 +608,16 @@ void QDeclarativeWorkerScript::componentComplete()
if (m_source.isValid())
m_engine->executeUrl(m_scriptId, m_source);
+
+ return m_engine;
}
+ return 0;
+}
+
+void QDeclarativeWorkerScript::componentComplete()
+{
+ m_componentComplete = true;
+ engine(); // Get it started now.
}
/*!