diff options
author | JiDe Zhang <[email protected]> | 2024-01-17 10:38:17 +0800 |
---|---|---|
committer | JiDe Zhang <[email protected]> | 2024-09-05 17:43:51 +0800 |
commit | 73c207c48d0b3608dac1bf85c744c2a632204946 (patch) | |
tree | fb2ff7ab9e1d79d8682e998154fdde0438ee0628 /src/quick/scenegraph/adaptations/software | |
parent | 8d874a1b3ca3f5f6db48a526ca62215464f97ef5 (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.cpp | 16 | ||||
-rw-r--r-- | src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer_p.h | 4 |
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; }; |