aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/types/qquickworkerscript.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-23 15:52:10 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-26 09:05:16 +0200
commit12fd2ccd3fa2dc0133b5a3fb89f9fdf5cf721232 (patch)
tree880acb9c7c0d8289185b6aebe4339f439c707a0e /src/qml/types/qquickworkerscript.cpp
parent2e4f66caa8a5f9e887dbdb4e3f2ae5c9be9a7005 (diff)
Fix Persistent/WeakValue API
Don't use unprotected Values in the API anymore. Change-Id: I8851628227fca374de24701bc8ee0908b5ae3923 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/types/qquickworkerscript.cpp')
-rw-r--r--src/qml/types/qquickworkerscript.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/qml/types/qquickworkerscript.cpp b/src/qml/types/qquickworkerscript.cpp
index ef23a34db8..b955555a82 100644
--- a/src/qml/types/qquickworkerscript.cpp
+++ b/src/qml/types/qquickworkerscript.cpp
@@ -244,9 +244,13 @@ void QQuickWorkerScriptEnginePrivate::WorkerEngine::init()
// Requires handle and context scope
QV4::ReturnedValue QQuickWorkerScriptEnginePrivate::WorkerEngine::sendFunction(int id)
{
- QV4::FunctionObject *f = createsend.value().asFunctionObject();
- QV4::ExecutionContext *ctx = f->engine()->current;
- QV4::Scope scope(ctx->engine);
+ QV4::ExecutionEngine *v4 = createsend.engine();
+ if (!v4)
+ return QV4::Encode::undefined();
+
+ QV4::Scope scope(v4);
+ QV4::ScopedFunctionObject f(scope, createsend.value());
+ QV4::ExecutionContext *ctx = v4->current;
QV4::ScopedValue v(scope);
try {
@@ -315,12 +319,12 @@ QV4::ReturnedValue QQuickWorkerScriptEnginePrivate::getWorker(WorkerScript *scri
QV4::Scoped<QV4::Object> api(scope, v4->newObject());
api->put(QV4::ScopedString(scope, v4->newString("sendMessage")), QV4::ScopedValue(scope, workerEngine->sendFunction(script->id)));
- script->object.value().asObject()->put(QV4::ScopedString(scope, v4->newString("WorkerScript")), api);
+ w->QV4::Object::put(QV4::ScopedString(scope, v4->newString("WorkerScript")), api);
w->setReadOnly(true);
}
- return script->object.value().asReturnedValue();
+ return script->object.value();
}
bool QQuickWorkerScriptEnginePrivate::event(QEvent *event)
@@ -351,9 +355,10 @@ void QQuickWorkerScriptEnginePrivate::processMessage(int id, const QByteArray &d
if (!script)
return;
- QV4::FunctionObject *f = workerEngine->onmessage.value().asFunctionObject();
- QV4::ExecutionContext *ctx = f->internalClass->engine->current;
- QV4::Scope scope(ctx);
+ QV4::ExecutionEngine *v4 = QV8Engine::getV4(workerEngine);
+ QV4::Scope scope(v4);
+ QV4::ScopedFunctionObject f(scope, workerEngine->onmessage.value());
+ QV4::ExecutionContext *ctx = v4->current;
QV4::ScopedValue value(scope, QV4::Serialize::deserialize(data, workerEngine));
@@ -396,7 +401,7 @@ void QQuickWorkerScriptEnginePrivate::processLoad(int id, const QUrl &url)
if (!activation)
return;
- QV4::Script program(v4, activation.getPointer(), sourceCode, url.toString());
+ QV4::Script program(v4, activation, sourceCode, url.toString());
QV4::ExecutionContext *ctx = v4->current;
try {