aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorCharles Yin <charles.yin@nokia.com>2011-10-27 13:06:57 +1000
committerQt by Nokia <qt-info@nokia.com>2011-10-28 22:31:32 +0200
commit1bc655b46738811268b50b318a3f3cd03ff02aff (patch)
tree4bd5d7f5659033b51d7039f90e5237614d826594 /src
parent4e644d592655c806bacbce051eb4b7d1f8aacd67 (diff)
Fix PaintedItem redraw bug
1) After QQuickItem::update() being called (means item's content is dirty), the paint() function should always been called, so the contentsDirty and geometryDirty flags are not needed. 2) Update the smile example to validate the above changes Task-number:QTBUG-22250 Change-Id: I5a72f18e6982bdb3ba23e78a253c2876aca2e8cb Reviewed-by: Michael Brasser <michael.brasser@nokia.com> Reviewed-by: Yoann Lopes <yoann.lopes@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/declarative/items/qquickpainteditem.cpp18
-rw-r--r--src/declarative/items/qquickpainteditem.h1
-rw-r--r--src/declarative/items/qquickpainteditem_p.h2
-rw-r--r--src/declarative/scenegraph/util/qsgpainternode.cpp4
-rw-r--r--src/declarative/scenegraph/util/qsgpainternode_p.h2
5 files changed, 4 insertions, 23 deletions
diff --git a/src/declarative/items/qquickpainteditem.cpp b/src/declarative/items/qquickpainteditem.cpp
index ac67f6a8d0..4d96da2e1a 100644
--- a/src/declarative/items/qquickpainteditem.cpp
+++ b/src/declarative/items/qquickpainteditem.cpp
@@ -123,8 +123,6 @@ QQuickPaintedItemPrivate::QQuickPaintedItemPrivate()
, fillColor(Qt::transparent)
, renderTarget(QQuickPaintedItem::Image)
, performanceHints(0)
- , geometryDirty(false)
- , contentsDirty(false)
, opaquePainting(false)
, antialiasing(false)
, mipmap(false)
@@ -171,7 +169,6 @@ QQuickPaintedItem::~QQuickPaintedItem()
void QQuickPaintedItem::update(const QRect &rect)
{
Q_D(QQuickPaintedItem);
- d->contentsDirty = true;
if (rect.isNull() && !d->dirtyRect.isNull())
d->dirtyRect = contentsBoundingRect().toAlignedRect();
@@ -492,17 +489,6 @@ void QQuickPaintedItem::setRenderTarget(RenderTarget target)
*/
/*!
- This function is called after the item's geometry has changed.
-*/
-void QQuickPaintedItem::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
-{
- Q_D(QQuickPaintedItem);
- d->geometryDirty = true;
- QQuickItem::geometryChanged(newGeometry, oldGeometry);
-}
-
-
-/*!
This function is called when the Scene Graph node associated to the item needs to
be updated.
*/
@@ -531,11 +517,9 @@ QSGNode *QQuickPaintedItem::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeDat
node->setOpaquePainting(d->opaquePainting);
node->setFillColor(d->fillColor);
node->setContentsScale(d->contentsScale);
- node->setDirty(d->contentsDirty || d->geometryDirty, d->dirtyRect);
+ node->setDirty(d->dirtyRect);
node->update();
- d->contentsDirty = false;
- d->geometryDirty = false;
d->dirtyRect = QRect();
return node;
diff --git a/src/declarative/items/qquickpainteditem.h b/src/declarative/items/qquickpainteditem.h
index 1ddfa25c5e..b2da9e6c7a 100644
--- a/src/declarative/items/qquickpainteditem.h
+++ b/src/declarative/items/qquickpainteditem.h
@@ -114,7 +114,6 @@ Q_SIGNALS:
protected:
QQuickPaintedItem(QQuickPaintedItemPrivate &dd, QQuickItem *parent = 0);
- virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);
virtual QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *);
private:
diff --git a/src/declarative/items/qquickpainteditem_p.h b/src/declarative/items/qquickpainteditem_p.h
index 00061d9977..b847b0a4ef 100644
--- a/src/declarative/items/qquickpainteditem_p.h
+++ b/src/declarative/items/qquickpainteditem_p.h
@@ -61,8 +61,6 @@ public:
QRect dirtyRect;
- bool geometryDirty : 1;
- bool contentsDirty : 1;
bool opaquePainting: 1;
bool antialiasing: 1;
bool mipmap: 1;
diff --git a/src/declarative/scenegraph/util/qsgpainternode.cpp b/src/declarative/scenegraph/util/qsgpainternode.cpp
index a89dd75bac..f3e5202241 100644
--- a/src/declarative/scenegraph/util/qsgpainternode.cpp
+++ b/src/declarative/scenegraph/util/qsgpainternode.cpp
@@ -378,9 +378,9 @@ void QSGPainterNode::setSize(const QSize &size)
m_dirtyTexture = true;
}
-void QSGPainterNode::setDirty(bool d, const QRect &dirtyRect)
+void QSGPainterNode::setDirty(const QRect &dirtyRect)
{
- m_dirtyContents = d;
+ m_dirtyContents = true;
m_dirtyRect = dirtyRect;
if (m_mipmapping)
diff --git a/src/declarative/scenegraph/util/qsgpainternode_p.h b/src/declarative/scenegraph/util/qsgpainternode_p.h
index c838ed1a0c..8e95107efc 100644
--- a/src/declarative/scenegraph/util/qsgpainternode_p.h
+++ b/src/declarative/scenegraph/util/qsgpainternode_p.h
@@ -83,7 +83,7 @@ public:
void setSize(const QSize &size);
QSize size() const { return m_size; }
- void setDirty(bool d, const QRect &dirtyRect = QRect());
+ void setDirty(const QRect &dirtyRect = QRect());
void setOpaquePainting(bool opaque);
bool opaquePainting() const { return m_opaquePainting; }