aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/adaptations/software
diff options
context:
space:
mode:
authorJiDe Zhang <[email protected]>2024-01-17 10:38:17 +0800
committerJiDe Zhang <[email protected]>2024-09-05 17:43:51 +0800
commit73c207c48d0b3608dac1bf85c744c2a632204946 (patch)
treefb2ff7ab9e1d79d8682e998154fdde0438ee0628 /src/quick/scenegraph/adaptations/software
parent8d874a1b3ca3f5f6db48a526ca62215464f97ef5 (diff)
Allows skip clear color before render on software renderer
Fixes: QTBUG-120061 Change-Id: I28b32b042abd8cb34a4d1ce3959cdbab49bfbeca Reviewed-by: Laszlo Agocs <[email protected]>
Diffstat (limited to 'src/quick/scenegraph/adaptations/software')
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer.cpp16
-rw-r--r--src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer_p.h4
2 files changed, 18 insertions, 2 deletions
diff --git a/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer.cpp b/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer.cpp
index 0c2af5e23b..50caeff85d 100644
--- a/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer.cpp
+++ b/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer.cpp
@@ -95,8 +95,10 @@ QRegion QSGAbstractSoftwareRenderer::renderNodes(QPainter *painter)
auto iterator = m_renderableNodes.begin();
// First node is the background and needs to painted without blending
- auto backgroundNode = *iterator;
- dirtyRegion += backgroundNode->renderNode(painter, /*force opaque painting*/ true);
+ if (m_clearColorEnabled) {
+ auto backgroundNode = *iterator;
+ dirtyRegion += backgroundNode->renderNode(painter, /*force opaque painting*/ true);
+ }
iterator++;
for (; iterator != m_renderableNodes.end(); ++iterator) {
@@ -306,4 +308,14 @@ void QSGAbstractSoftwareRenderer::markDirty()
m_dirtyRegion = QRegion(m_background->rect().toRect());
}
+void QSGAbstractSoftwareRenderer::setClearColorEnabled(bool enable)
+{
+ m_clearColorEnabled = enable;
+}
+
+bool QSGAbstractSoftwareRenderer::clearColorEnabled() const
+{
+ return m_clearColorEnabled;
+}
+
QT_END_NAMESPACE
diff --git a/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer_p.h b/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer_p.h
index b0426a0b37..89a39abcc1 100644
--- a/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer_p.h
+++ b/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer_p.h
@@ -40,6 +40,9 @@ public:
void markDirty();
+ void setClearColorEnabled(bool enable);
+ bool clearColorEnabled() const;
+
protected:
QRegion renderNodes(QPainter *painter);
void buildRenderList();
@@ -70,6 +73,7 @@ private:
QRegion m_obscuredRegion;
qreal m_devicePixelRatio = 1;
bool m_isOpaque = false;
+ bool m_clearColorEnabled = true;
QSGSoftwareRenderableNodeUpdater *m_nodeUpdater;
};