aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items')
-rw-r--r--src/quick/items/context2d/qquickcontext2d.cpp8
-rw-r--r--src/quick/items/qquickanimatedsprite.cpp4
-rw-r--r--src/quick/items/qquickborderimage.cpp8
-rw-r--r--src/quick/items/qquickflickable.cpp13
-rw-r--r--src/quick/items/qquickimage.cpp1
-rw-r--r--src/quick/items/qquickitem.cpp52
-rw-r--r--src/quick/items/qquickitem_p.h6
-rw-r--r--src/quick/items/qquickpathview.cpp8
-rw-r--r--src/quick/items/qquickpositioners.cpp2
-rw-r--r--src/quick/items/qquickspritesequence.cpp4
10 files changed, 28 insertions, 78 deletions
diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp
index 6f7cd77486..2fb6cb9f63 100644
--- a/src/quick/items/context2d/qquickcontext2d.cpp
+++ b/src/quick/items/context2d/qquickcontext2d.cpp
@@ -545,6 +545,9 @@ public:
QQuickJSContext2DPrototype(QV4::ExecutionEngine *engine)
: QV4::Object(engine)
{
+ QV4::Scope scope(engine);
+ QV4::ScopedObject protectThis(scope, this);
+
defineDefaultProperty(QStringLiteral("quadraticCurveTo"), method_quadraticCurveTo, 0);
defineDefaultProperty(QStringLiteral("restore"), method_restore, 0);
defineDefaultProperty(QStringLiteral("moveTo"), method_moveTo, 0);
@@ -868,6 +871,7 @@ struct QQuickJSContext2DPixelData : public QV4::Object
: QV4::Object(engine)
{
vtbl = &static_vtbl;
+ flags &= ~SimpleArray;
}
static void destroy(QV4::Managed *that) {
@@ -890,6 +894,10 @@ struct QQuickJSContext2DImageData : public QV4::Object
: QV4::Object(engine)
{
vtbl = &static_vtbl;
+ pixelData = QV4::Primitive::undefinedValue();
+
+ QV4::Scope scope(engine);
+ QV4::ScopedObject protectThis(scope, this);
defineAccessorProperty(QStringLiteral("width"), method_get_width, 0);
defineAccessorProperty(QStringLiteral("height"), method_get_height, 0);
diff --git a/src/quick/items/qquickanimatedsprite.cpp b/src/quick/items/qquickanimatedsprite.cpp
index 3a32169447..846de15581 100644
--- a/src/quick/items/qquickanimatedsprite.cpp
+++ b/src/quick/items/qquickanimatedsprite.cpp
@@ -80,14 +80,14 @@ static const char vertexShaderCode[] =
"}\n";
static const char fragmentShaderCode[] =
- "uniform sampler2D texture;\n"
+ "uniform sampler2D _qt_texture;\n"
"uniform lowp float qt_Opacity;\n"
"\n"
"varying highp vec4 fTexS;\n"
"varying lowp float progress;\n"
"\n"
"void main() {\n"
- " gl_FragColor = mix(texture2D(texture, fTexS.xy), texture2D(texture, fTexS.zw), progress) * qt_Opacity;\n"
+ " gl_FragColor = mix(texture2D(_qt_texture, fTexS.xy), texture2D(_qt_texture, fTexS.zw), progress) * qt_Opacity;\n"
"}\n";
class QQuickAnimatedSpriteMaterial : public QSGMaterial
diff --git a/src/quick/items/qquickborderimage.cpp b/src/quick/items/qquickborderimage.cpp
index 3cbcf1937f..9fc9752707 100644
--- a/src/quick/items/qquickborderimage.cpp
+++ b/src/quick/items/qquickborderimage.cpp
@@ -560,10 +560,14 @@ QSGNode *QQuickBorderImage::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeDat
QSGImageNode *node = static_cast<QSGImageNode *>(oldNode);
- if (!node)
+ bool updatePixmap = d->pixmapChanged;
+ if (!node) {
node = d->sceneGraphContext()->createImageNode();
+ updatePixmap = true;
+ }
- node->setTexture(texture);
+ if (updatePixmap)
+ node->setTexture(texture);
// Don't implicitly create the scalegrid in the rendering thread...
QRectF innerSourceRect(0, 0, 1, 1);
diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp
index b94d8dd4b0..f0a68b184a 100644
--- a/src/quick/items/qquickflickable.cpp
+++ b/src/quick/items/qquickflickable.cpp
@@ -948,16 +948,15 @@ void QQuickFlickable::setPixelAligned(bool align)
qint64 QQuickFlickablePrivate::computeCurrentTime(QInputEvent *event)
{
- if (0 != event->timestamp() && QQuickItemPrivate::consistentTime == -1)
+ if (0 != event->timestamp())
return event->timestamp();
-
- return QQuickItemPrivate::elapsed(timer);
+ return timer.elapsed();
}
void QQuickFlickablePrivate::handleMousePressEvent(QMouseEvent *event)
{
Q_Q(QQuickFlickable);
- QQuickItemPrivate::start(timer);
+ timer.start();
if (interactive && timeline.isActive()
&& ((qAbs(hData.smoothVelocity.value()) > RetainGrabVelocity && !hData.fixingUp && !hData.inOvershoot)
|| (qAbs(vData.smoothVelocity.value()) > RetainGrabVelocity && !vData.fixingUp && !vData.inOvershoot))) {
@@ -1016,8 +1015,8 @@ void QQuickFlickablePrivate::handleMousePressEvent(QMouseEvent *event)
if (wasFlicking)
emit q->flickingChanged();
lastPosTime = lastPressTime = computeCurrentTime(event);
- QQuickItemPrivate::start(vData.velocityTime);
- QQuickItemPrivate::start(hData.velocityTime);
+ vData.velocityTime.start();
+ hData.velocityTime.start();
}
void QQuickFlickablePrivate::handleMouseMoveEvent(QMouseEvent *event)
@@ -1466,7 +1465,7 @@ void QQuickFlickablePrivate::viewportAxisMoved(AxisData &data, qreal minExtent,
QQuickTimeLineCallback::Callback fixupCallback)
{
if (pressed || calcVelocity) {
- int elapsed = QQuickItemPrivate::restart(data.velocityTime);
+ int elapsed = data.velocityTime.restart();
if (elapsed > 0) {
qreal velocity = (data.lastPos - data.move.value()) * 1000 / elapsed;
if (qAbs(velocity) > 0) {
diff --git a/src/quick/items/qquickimage.cpp b/src/quick/items/qquickimage.cpp
index 3a8fd99a66..d6be13f3c0 100644
--- a/src/quick/items/qquickimage.cpp
+++ b/src/quick/items/qquickimage.cpp
@@ -666,7 +666,6 @@ QSGNode *QQuickImage::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
if (d->pixmapChanged) {
// force update the texture in the node to trigger reconstruction of
// geometry and the likes when a atlas segment has changed.
- node->setTexture(0);
if (texture->isAtlasTexture() && (hWrap == QSGTexture::Repeat || vWrap == QSGTexture::Repeat))
node->setTexture(texture->removedFromAtlas());
else
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
index 73bca67a1e..c3b221b2c8 100644
--- a/src/quick/items/qquickitem.cpp
+++ b/src/quick/items/qquickitem.cpp
@@ -7030,58 +7030,6 @@ QDebug operator<<(QDebug debug, QQuickItem *item)
}
#endif
-qint64 QQuickItemPrivate::consistentTime = -1;
-void QQuickItemPrivate::setConsistentTime(qint64 t)
-{
- consistentTime = t;
-}
-
-class QElapsedTimerConsistentTimeHack
-{
-public:
- void start() {
- t1 = QQuickItemPrivate::consistentTime;
- t2 = 0;
- }
- qint64 elapsed() {
- return QQuickItemPrivate::consistentTime - t1;
- }
- qint64 restart() {
- qint64 val = QQuickItemPrivate::consistentTime - t1;
- t1 = QQuickItemPrivate::consistentTime;
- t2 = 0;
- return val;
- }
-
-private:
- qint64 t1;
- qint64 t2;
-};
-
-void QQuickItemPrivate::start(QElapsedTimer &t)
-{
- if (QQuickItemPrivate::consistentTime == -1)
- t.start();
- else
- ((QElapsedTimerConsistentTimeHack*)&t)->start();
-}
-
-qint64 QQuickItemPrivate::elapsed(QElapsedTimer &t)
-{
- if (QQuickItemPrivate::consistentTime == -1)
- return t.elapsed();
- else
- return ((QElapsedTimerConsistentTimeHack*)&t)->elapsed();
-}
-
-qint64 QQuickItemPrivate::restart(QElapsedTimer &t)
-{
- if (QQuickItemPrivate::consistentTime == -1)
- return t.restart();
- else
- return ((QElapsedTimerConsistentTimeHack*)&t)->restart();
-}
-
/*!
\fn bool QQuickItem::isTextureProvider() const
diff --git a/src/quick/items/qquickitem_p.h b/src/quick/items/qquickitem_p.h
index b1e63e6535..f731acabbb 100644
--- a/src/quick/items/qquickitem_p.h
+++ b/src/quick/items/qquickitem_p.h
@@ -587,12 +587,6 @@ public:
virtual void mirrorChange() {}
- static qint64 consistentTime;
- static void setConsistentTime(qint64 t);
- static void start(QElapsedTimer &);
- static qint64 elapsed(QElapsedTimer &);
- static qint64 restart(QElapsedTimer &);
-
void incrementCursorCount(int delta);
};
diff --git a/src/quick/items/qquickpathview.cpp b/src/quick/items/qquickpathview.cpp
index ff31d9de4e..d8132bdd12 100644
--- a/src/quick/items/qquickpathview.cpp
+++ b/src/quick/items/qquickpathview.cpp
@@ -1568,11 +1568,9 @@ qreal QQuickPathViewPrivate::calcVelocity() const
qint64 QQuickPathViewPrivate::computeCurrentTime(QInputEvent *event)
{
- if (0 != event->timestamp() && QQuickItemPrivate::consistentTime == -1) {
+ if (0 != event->timestamp())
return event->timestamp();
- }
-
- return QQuickItemPrivate::elapsed(timer);
+ return timer.elapsed();
}
void QQuickPathView::mousePressEvent(QMouseEvent *event)
@@ -1613,7 +1611,7 @@ void QQuickPathViewPrivate::handleMousePressEvent(QMouseEvent *event)
else
stealMouse = false;
- QQuickItemPrivate::start(timer);
+ timer.start();
lastPosTime = computeCurrentTime(event);
tl.clear();
}
diff --git a/src/quick/items/qquickpositioners.cpp b/src/quick/items/qquickpositioners.cpp
index fc2b9772d7..c72c2276e0 100644
--- a/src/quick/items/qquickpositioners.cpp
+++ b/src/quick/items/qquickpositioners.cpp
@@ -1288,7 +1288,7 @@ Qt::LayoutDirection QQuickGrid::effectiveLayoutDirection() const
}
/*!
- \qmlproperty enumeration QtQuick::Grid::horizontalItmeAlignment
+ \qmlproperty enumeration QtQuick::Grid::horizontalItemAlignment
\qmlproperty enumeration QtQuick::Grid::verticalItemAlignment
\qmlproperty enumeration QtQuick::Grid::effectiveHorizontalItemAlignment
diff --git a/src/quick/items/qquickspritesequence.cpp b/src/quick/items/qquickspritesequence.cpp
index 3b2b3269e2..3c1492e0b3 100644
--- a/src/quick/items/qquickspritesequence.cpp
+++ b/src/quick/items/qquickspritesequence.cpp
@@ -79,14 +79,14 @@ static const char vertexShaderCode[] =
"}\n";
static const char fragmentShaderCode[] =
- "uniform sampler2D texture;\n"
+ "uniform sampler2D _qt_texture;\n"
"uniform lowp float qt_Opacity;\n"
"\n"
"varying highp vec4 fTexS;\n"
"varying lowp float progress;\n"
"\n"
"void main() {\n"
- " gl_FragColor = mix(texture2D(texture, fTexS.xy), texture2D(texture, fTexS.zw), progress) * qt_Opacity;\n"
+ " gl_FragColor = mix(texture2D(_qt_texture, fTexS.xy), texture2D(_qt_texture, fTexS.zw), progress) * qt_Opacity;\n"
"}\n";
class QQuickSpriteSequenceMaterial : public QSGMaterial