aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/context2d
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/quick/items/context2d
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/quick/items/context2d')
-rw-r--r--src/quick/items/context2d/qquickcanvasitem.cpp6
-rw-r--r--src/quick/items/context2d/qquickcontext2d.cpp45
2 files changed, 30 insertions, 21 deletions
diff --git a/src/quick/items/context2d/qquickcanvasitem.cpp b/src/quick/items/context2d/qquickcanvasitem.cpp
index f21abdab67..78369eb404 100644
--- a/src/quick/items/context2d/qquickcanvasitem.cpp
+++ b/src/quick/items/context2d/qquickcanvasitem.cpp
@@ -666,7 +666,7 @@ void QQuickCanvasItem::updatePolish()
callData->thisObject = QV4::Value::fromReturnedValue(QV4::QObjectWrapper::wrap(v4, this));
foreach (int key, animationCallbacks.keys()) {
- QV4::FunctionObject *f = animationCallbacks.value(key).value().asFunctionObject();
+ QV4::ScopedFunctionObject f(scope, animationCallbacks.value(key).value());
callData->args[0] = QV4::Value::fromUInt32(QDateTime::currentDateTimeUtc().toTime_t());
f->call(callData);
}
@@ -789,7 +789,9 @@ void QQuickCanvasItem::requestAnimationFrame(QQmlV4Function *args)
static int id = 0;
- d->animationCallbacks.insert(++id, QV4::PersistentValue((*args)[0]));
+ QV4::Scope scope(QV8Engine::getV4(args->engine()));
+ QV4::ScopedValue v(scope, (*args)[0]);
+ d->animationCallbacks.insert(++id, QV4::PersistentValue(v));
if (isVisible())
polish();
diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp
index 1930fb69c9..ea3bd77509 100644
--- a/src/quick/items/context2d/qquickcontext2d.cpp
+++ b/src/quick/items/context2d/qquickcontext2d.cpp
@@ -915,8 +915,10 @@ static QV4::Value qt_create_image_data(qreal w, qreal h, QV8Engine* engine, cons
{
QQuickContext2DEngineData *ed = engineData(engine);
QV4::ExecutionEngine *v4 = QV8Engine::getV4(engine);
- QQuickJSContext2DPixelData *pixelData = new (v4->memoryManager) QQuickJSContext2DPixelData(v4);
- pixelData->setPrototype(ed->pixelArrayProto.value().asObject());
+ QV4::Scope scope(v4);
+ QV4::Scoped<QQuickJSContext2DPixelData> pixelData(scope, new (v4->memoryManager) QQuickJSContext2DPixelData(v4));
+ QV4::ScopedObject p(scope, ed->pixelArrayProto.value());
+ pixelData->setPrototype(p.getPointer());
if (image.isNull()) {
pixelData->image = QImage(w, h, QImage::Format_ARGB32);
@@ -927,7 +929,7 @@ static QV4::Value qt_create_image_data(qreal w, qreal h, QV8Engine* engine, cons
}
QQuickJSContext2DImageData *imageData = new (v4->memoryManager) QQuickJSContext2DImageData(v4);
- imageData->pixelData = QV4::Value::fromObject(pixelData);
+ imageData->pixelData = pixelData.asValue();
return QV4::Value::fromObject(imageData);
}
@@ -1362,7 +1364,7 @@ QV4::ReturnedValue QQuickJSContext2D::method_get_fillStyle(QV4::SimpleCallContex
QString str = QString::fromLatin1("rgba(%1, %2, %3, %4)").arg(color.red()).arg(color.green()).arg(color.blue()).arg(alphaString);
return QV4::Value::fromString(ctx->engine->newString(str)).asReturnedValue();
}
- return r->context->m_fillStyle.value().asReturnedValue();
+ return r->context->m_fillStyle.value();
}
QV4::ReturnedValue QQuickJSContext2D::method_set_fillStyle(QV4::SimpleCallContext *ctx)
@@ -1477,7 +1479,7 @@ QV4::ReturnedValue QQuickJSContext2D::method_get_strokeStyle(QV4::SimpleCallCont
QString str = QString::fromLatin1("rgba(%1, %2, %3, %4)").arg(color.red()).arg(color.green()).arg(color.blue()).arg(alphaString);
return QV4::Value::fromString(ctx->engine->newString(str)).asReturnedValue();
}
- return r->context->m_strokeStyle.value().asReturnedValue();
+ return r->context->m_strokeStyle.value();
}
QV4::ReturnedValue QQuickJSContext2D::method_set_strokeStyle(QV4::SimpleCallContext *ctx)
@@ -1559,10 +1561,11 @@ QV4::ReturnedValue QQuickJSContext2DPrototype::method_createLinearGradient(QV4::
}
QQuickContext2DEngineData *ed = engineData(engine);
- QQuickContext2DStyle *gradient = new (v4->memoryManager) QQuickContext2DStyle(v4);
- gradient->setPrototype(ed->gradientProto.value().asObject());
+ QV4::Scoped<QQuickContext2DStyle> gradient(scope, new (v4->memoryManager) QQuickContext2DStyle(v4));
+ QV4::ScopedObject p(scope, ed->gradientProto.value());
+ gradient->setPrototype(p.getPointer());
gradient->brush = QLinearGradient(x0, y0, x1, y1);
- return QV4::Value::fromObject(gradient).asReturnedValue();
+ return gradient.asReturnedValue();
}
return ctx->thisObject.asReturnedValue();
@@ -1613,10 +1616,11 @@ QV4::ReturnedValue QQuickJSContext2DPrototype::method_createRadialGradient(QV4::
QQuickContext2DEngineData *ed = engineData(engine);
- QQuickContext2DStyle *gradient = new (v4->memoryManager) QQuickContext2DStyle(v4);
- gradient->setPrototype(ed->gradientProto.value().asObject());
+ QV4::Scoped<QQuickContext2DStyle> gradient(scope, new (v4->memoryManager) QQuickContext2DStyle(v4));
+ QV4::ScopedObject p(scope, ed->gradientProto.value());
+ gradient->setPrototype(p.getPointer());
gradient->brush = QRadialGradient(QPointF(x1, y1), r0+r1, QPointF(x0, y0));
- return QV4::Value::fromObject(gradient).asReturnedValue();
+ return gradient.asReturnedValue();
}
return ctx->thisObject.asReturnedValue();
@@ -1659,10 +1663,11 @@ QV4::ReturnedValue QQuickJSContext2DPrototype::method_createConicalGradient(QV4:
QQuickContext2DEngineData *ed = engineData(engine);
- QQuickContext2DStyle *gradient = new (v4->memoryManager) QQuickContext2DStyle(v4);
- gradient->setPrototype(ed->gradientProto.value().asObject());
+ QV4::Scoped<QQuickContext2DStyle> gradient(scope, new (v4->memoryManager) QQuickContext2DStyle(v4));
+ QV4::ScopedObject p(scope, ed->gradientProto.value());
+ gradient->setPrototype(p.getPointer());
gradient->brush = QConicalGradient(x, y, angle);
- return QV4::Value::fromObject(gradient).asReturnedValue();
+ return gradient.asReturnedValue();
}
return ctx->thisObject.asReturnedValue();
@@ -2080,7 +2085,7 @@ QV4::ReturnedValue QQuickJSContext2D::method_get_path(QV4::SimpleCallContext *ct
QQuickJSContext2D *r = ctx->thisObject.as<QQuickJSContext2D>();
CHECK_CONTEXT(r)
- return r->context->m_v4path.value().asReturnedValue();
+ return r->context->m_v4path.value();
}
QV4::ReturnedValue QQuickJSContext2D::method_set_path(QV4::SimpleCallContext *ctx)
@@ -4041,7 +4046,7 @@ QQuickContext2D::~QQuickContext2D()
QV4::Value QQuickContext2D::v4value() const
{
- return m_v4value.value();
+ return QV4::Value::fromReturnedValue(m_v4value.value());
}
QStringList QQuickContext2D::contextNames() const
@@ -4278,10 +4283,12 @@ void QQuickContext2D::setV8Engine(QV8Engine *engine)
QQuickContext2DEngineData *ed = engineData(engine);
QV4::ExecutionEngine *v4Engine = QV8Engine::getV4(engine);
- QQuickJSContext2D *wrapper = new (v4Engine->memoryManager) QQuickJSContext2D(v4Engine);
- wrapper->setPrototype(ed->contextPrototype.value().asObject());
+ QV4::Scope scope(v4Engine);
+ QV4::Scoped<QQuickJSContext2D> wrapper(scope, new (v4Engine->memoryManager) QQuickJSContext2D(v4Engine));
+ QV4::ScopedObject p(scope, ed->contextPrototype.value());
+ wrapper->setPrototype(p.getPointer());
wrapper->context = this;
- m_v4value = QV4::Value::fromObject(wrapper);
+ m_v4value = wrapper;
}
}