aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenode.cpp
diff options
context:
space:
mode:
authorAndy Nichols <andy.nichols@theqtcompany.com>2016-04-13 15:30:09 +0200
committerAndy Nichols <andy.nichols@theqtcompany.com>2016-04-13 14:18:07 +0000
commitbdfd88d097c56871decf4a5ff3e7053290b067aa (patch)
tree02e57d4f87d0af1bcfbbb75d69a8bdd6e1bd3f9a /src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenode.cpp
parent49f715f9f0b777d47de89f600199fe297c89a9c6 (diff)
2DRenderer: Mark all regions of deleted node as dirty
Previous behavior was to always subtract the current bounding rect of items when calculating the previous dirty region. When you remove a node though, there is no current bounding rect because the item no longer exists. The last valid boundingRect was use instead, which led to the previous bounding rect to not get marked as dirty when the node was removed. Change-Id: Ic1a4f872d4d46125b06e2588aae695b8ff67d0fd Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Diffstat (limited to 'src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenode.cpp')
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenode.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenode.cpp b/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenode.cpp
index 65cce805a4..063242c63b 100644
--- a/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenode.cpp
+++ b/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenode.cpp
@@ -310,8 +310,13 @@ void QSGSoftwareRenderableNode::subtractDirtyRegion(const QRegion &dirtyRegion)
qCDebug(lcRenderable) << "subtractDirtyRegion: " << dirtyRegion << "old dirtyRegion" << prev << "new dirtyRegion: " << m_dirtyRegion;
}
-QRegion QSGSoftwareRenderableNode::previousDirtyRegion() const
+QRegion QSGSoftwareRenderableNode::previousDirtyRegion(bool wasRemoved) const
{
+ // When removing a node, the boundingRect shouldn't be subtracted
+ // because a deleted node has no valid boundingRect
+ if (wasRemoved)
+ return m_previousDirtyRegion;
+
return m_previousDirtyRegion.subtracted(QRegion(m_boundingRect));
}