OpenCoverage

qsgabstractsoftwarerenderer.cpp

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/quick/scenegraph/adaptations/software/qsgabstractsoftwarerenderer.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5const QLoggingCategory &lc2DRender() { static const QLoggingCategory category("qt.scenegraph.softwarecontext.abstractrenderer"); return
executed 88 times by 1 test: return category;
Executed by:
  • tst_qquickshape
category;
executed 88 times by 1 test: return category;
Executed by:
  • tst_qquickshape
}
88
6-
7-
8-
9QSGAbstractSoftwareRenderer::QSGAbstractSoftwareRenderer(QSGRenderContext *context)-
10 : QSGRenderer(context)-
11 , m_background(new QSGSimpleRectNode)-
12 , m_nodeUpdater(new QSGSoftwareRenderableNodeUpdater(this))-
13{-
14-
15 auto backgroundRenderable = new QSGSoftwareRenderableNode(QSGSoftwareRenderableNode::SimpleRect, m_background);-
16 addNodeMapping(m_background, backgroundRenderable);-
17}
executed 8 times by 1 test: end of block
Executed by:
  • tst_qquickshape
8
18-
19QSGAbstractSoftwareRenderer::~QSGAbstractSoftwareRenderer()-
20{-
21-
22 delete m_background;-
23-
24 qDeleteAll(m_nodes);-
25-
26 delete m_nodeUpdater;-
27}
executed 8 times by 1 test: end of block
Executed by:
  • tst_qquickshape
8
28-
29QSGSoftwareRenderableNode *QSGAbstractSoftwareRenderer::renderableNode(QSGNode *node) const-
30{-
31 return
executed 104 times by 1 test: return m_nodes.value(node, nullptr);
Executed by:
  • tst_qquickshape
m_nodes.value(node, nullptr);
executed 104 times by 1 test: return m_nodes.value(node, nullptr);
Executed by:
  • tst_qquickshape
104
32}-
33-
34const QLinkedList<QSGSoftwareRenderableNode*> &QSGAbstractSoftwareRenderer::renderableNodes() const-
35{-
36 return
never executed: return m_renderableNodes;
m_renderableNodes;
never executed: return m_renderableNodes;
0
37}-
38-
39void QSGAbstractSoftwareRenderer::addNodeMapping(QSGNode *node, QSGSoftwareRenderableNode *renderableNode)-
40{-
41 m_nodes.insert(node, renderableNode);-
42}
executed 16 times by 1 test: end of block
Executed by:
  • tst_qquickshape
16
43-
44void QSGAbstractSoftwareRenderer::appendRenderableNode(QSGSoftwareRenderableNode *node)-
45{-
46 m_renderableNodes.append(node);-
47}
executed 24 times by 1 test: end of block
Executed by:
  • tst_qquickshape
24
48-
49void QSGAbstractSoftwareRenderer::nodeChanged(QSGNode *node, QSGNode::DirtyState state)-
50{-
51 if (state & QSGNode::DirtyGeometry
state & QSGNode::DirtyGeometryDescription
TRUEnever evaluated
FALSEevaluated 72 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
0-72
52 nodeGeometryUpdated(node);-
53 }
never executed: end of block
0
54 if (state & QSGNode::DirtyMaterial
state & QSGNode::DirtyMaterialDescription
TRUEnever evaluated
FALSEevaluated 72 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
0-72
55 nodeMaterialUpdated(node);-
56 }
never executed: end of block
0
57 if (state & QSGNode::DirtyMatrix
state & QSGNode::DirtyMatrixDescription
TRUEevaluated 16 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 56 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
16-56
58 nodeMatrixUpdated(node);-
59 }
executed 16 times by 1 test: end of block
Executed by:
  • tst_qquickshape
16
60 if (state & QSGNode::DirtyNodeAdded
state & QSGNod...DirtyNodeAddedDescription
TRUEevaluated 32 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 40 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
32-40
61 nodeAdded(node);-
62 }
executed 32 times by 1 test: end of block
Executed by:
  • tst_qquickshape
32
63 if (state & QSGNode::DirtyNodeRemoved
state & QSGNod...rtyNodeRemovedDescription
TRUEevaluated 24 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 48 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
24-48
64 nodeRemoved(node);-
65 }
executed 24 times by 1 test: end of block
Executed by:
  • tst_qquickshape
24
66 if (state & QSGNode::DirtyOpacity
state & QSGNode::DirtyOpacityDescription
TRUEnever evaluated
FALSEevaluated 72 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
0-72
67 nodeOpacityUpdated(node);-
68 }
never executed: end of block
0
69 if (state & QSGNode::DirtySubtreeBlocked
state & QSGNod...SubtreeBlockedDescription
TRUEnever evaluated
FALSEevaluated 72 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
0-72
70 m_nodeUpdater->updateNodes(node);-
71 }
never executed: end of block
0
72 if (state & QSGNode::DirtyForceUpdate
state & QSGNod...rtyForceUpdateDescription
TRUEnever evaluated
FALSEevaluated 72 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
0-72
73 m_nodeUpdater->updateNodes(node);-
74 }
never executed: end of block
0
75 QSGRenderer::nodeChanged(node, state);-
76}
executed 72 times by 1 test: end of block
Executed by:
  • tst_qquickshape
72
77-
78QRegion QSGAbstractSoftwareRenderer::renderNodes(QPainter *painter)-
79{-
80 QRegion dirtyRegion;-
81-
82 if (m_renderableNodes.isEmpty()
m_renderableNodes.isEmpty()Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_qquickshape
)
0-24
83 return
never executed: return dirtyRegion;
dirtyRegion;
never executed: return dirtyRegion;
0
84-
85 auto iterator = m_renderableNodes.begin();-
86-
87 auto backgroundNode = *iterator;-
88 dirtyRegion += backgroundNode->renderNode(painter, true);-
89 iterator++;-
90-
91 for (; iterator != m_renderableNodes.end()
iterator != m_...bleNodes.end()Description
TRUEevaluated 24 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_qquickshape
; ++iterator) {
24
92 auto node = *iterator;-
93 dirtyRegion += node->renderNode(painter);-
94 }
executed 24 times by 1 test: end of block
Executed by:
  • tst_qquickshape
24
95-
96 return
executed 24 times by 1 test: return dirtyRegion;
Executed by:
  • tst_qquickshape
dirtyRegion;
executed 24 times by 1 test: return dirtyRegion;
Executed by:
  • tst_qquickshape
24
97}-
98-
99void QSGAbstractSoftwareRenderer::buildRenderList()-
100{-
101-
102 m_renderableNodes.clear();-
103-
104 m_renderableNodes.append(renderableNode(m_background));-
105-
106 QSGSoftwareRenderListBuilder(this).visitChildren(rootNode());-
107}
executed 24 times by 1 test: end of block
Executed by:
  • tst_qquickshape
24
108-
109QRegion QSGAbstractSoftwareRenderer::optimizeRenderList()-
110{-
111-
112-
113 for (auto i = m_renderableNodes.rbegin(); i != m_renderableNodes.rend()
i != m_renderableNodes.rend()Description
TRUEevaluated 48 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_qquickshape
; ++i) {
24-48
114 auto node = *i;-
115 if (!m_dirtyRegion.isEmpty()
!m_dirtyRegion.isEmpty()Description
TRUEevaluated 16 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 32 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
16-32
116-
117 node->addDirtyRegion(m_dirtyRegion, true);-
118 }
executed 16 times by 1 test: end of block
Executed by:
  • tst_qquickshape
16
119-
120 if (!m_obscuredRegion.isEmpty()
!m_obscuredRegion.isEmpty()Description
TRUEnever evaluated
FALSEevaluated 48 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
0-48
121-
122 node->subtractDirtyRegion(m_obscuredRegion);-
123 }
never executed: end of block
0
124-
125-
126 if (node->isOpaque()
node->isOpaque()Description
TRUEevaluated 24 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
24
127 m_obscuredRegion += node->boundingRectMin();-
128 }
executed 24 times by 1 test: end of block
Executed by:
  • tst_qquickshape
24
129-
130 if (node->isDirty()
node->isDirty()Description
TRUEevaluated 16 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 32 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
16-32
131-
132 if (!m_background->rect().toRect().contains(node->boundingRectMax(), true)
!m_background-...ctMax(), true)Description
TRUEevaluated 10 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 6 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
6-10
133-
134 QRegion renderArea(m_background->rect().toRect());-
135 QRegion outsideRegions = node->dirtyRegion().subtracted(renderArea);-
136 if (!outsideRegions.isEmpty()
!outsideRegions.isEmpty()Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_qquickshape
)
2-8
137 node->subtractDirtyRegion(outsideRegions);
executed 2 times by 1 test: node->subtractDirtyRegion(outsideRegions);
Executed by:
  • tst_qquickshape
2
138 }
executed 10 times by 1 test: end of block
Executed by:
  • tst_qquickshape
10
139-
140-
141 if (node->isOpaque()
node->isOpaque()Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
8
142-
143 m_dirtyRegion -= node->boundingRectMin();-
144 }
executed 8 times by 1 test: end of block
Executed by:
  • tst_qquickshape
else {
8
145-
146 m_dirtyRegion += node->dirtyRegion();-
147 }
executed 8 times by 1 test: end of block
Executed by:
  • tst_qquickshape
8
148-
149 QRegion prevDirty = node->previousDirtyRegion();-
150 if (!prevDirty.isNull()
!prevDirty.isNull()Description
TRUEnever evaluated
FALSEevaluated 16 times by 1 test
Evaluated by:
  • tst_qquickshape
)
0-16
151 m_dirtyRegion += prevDirty;
never executed: m_dirtyRegion += prevDirty;
0
152 }
executed 16 times by 1 test: end of block
Executed by:
  • tst_qquickshape
16
153 }
executed 48 times by 1 test: end of block
Executed by:
  • tst_qquickshape
48
154-
155 if (m_obscuredRegion.contains(m_background->rect().toAlignedRect())
m_obscuredRegi...AlignedRect())Description
TRUEevaluated 24 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEnever evaluated
) {
0-24
156 m_isOpaque = true;-
157 }
executed 24 times by 1 test: end of block
Executed by:
  • tst_qquickshape
else {
24
158 m_isOpaque = false;-
159 }
never executed: end of block
0
160-
161-
162 m_dirtyRegion = QRegion();-
163 m_obscuredRegion = QRegion();-
164-
165-
166-
167 for (auto j = m_renderableNodes.begin(); j != m_renderableNodes.end()
j != m_renderableNodes.end()Description
TRUEevaluated 48 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_qquickshape
; ++j) {
24-48
168 auto node = *j;-
169-
170 if (!node->isOpaque()
!node->isOpaque()Description
TRUEevaluated 24 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 24 times by 1 test
Evaluated by:
  • tst_qquickshape
&& !m_dirtyRegion.isEmpty()
!m_dirtyRegion.isEmpty()Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 16 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
8-24
171-
172 node->addDirtyRegion(m_dirtyRegion, true);-
173 }
executed 8 times by 1 test: end of block
Executed by:
  • tst_qquickshape
8
174-
175 m_dirtyRegion += node->dirtyRegion();-
176 }
executed 48 times by 1 test: end of block
Executed by:
  • tst_qquickshape
48
177-
178 QRegion updateRegion = m_dirtyRegion;-
179-
180-
181 m_dirtyRegion = QRegion();-
182 m_obscuredRegion = QRegion();-
183-
184 return
executed 24 times by 1 test: return updateRegion;
Executed by:
  • tst_qquickshape
updateRegion;
executed 24 times by 1 test: return updateRegion;
Executed by:
  • tst_qquickshape
24
185}-
186-
187void QSGAbstractSoftwareRenderer::setBackgroundColor(const QColor &color)-
188{-
189 if (m_background->color() == color
m_background->color() == colorDescription
TRUEevaluated 24 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEnever evaluated
)
0-24
190 return;
executed 24 times by 1 test: return;
Executed by:
  • tst_qquickshape
24
191 m_background->setColor(color);-
192 renderableNode(m_background)->markMaterialDirty();-
193}
never executed: end of block
0
194-
195void QSGAbstractSoftwareRenderer::setBackgroundRect(const QRect &rect)-
196{-
197 if (m_background->rect().toRect() == rect
m_background->...Rect() == rectDescription
TRUEevaluated 16 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_qquickshape
)
8-16
198 return;
executed 16 times by 1 test: return;
Executed by:
  • tst_qquickshape
16
199 m_background->setRect(rect);-
200 renderableNode(m_background)->markGeometryDirty();-
201-
202 markDirty();-
203}
executed 8 times by 1 test: end of block
Executed by:
  • tst_qquickshape
8
204-
205QColor QSGAbstractSoftwareRenderer::backgroundColor()-
206{-
207 return
never executed: return m_background->color();
m_background->color();
never executed: return m_background->color();
0
208}-
209-
210QRect QSGAbstractSoftwareRenderer::backgroundRect()-
211{-
212 return
never executed: return m_background->rect().toRect();
m_background->rect().toRect();
never executed: return m_background->rect().toRect();
0
213}-
214-
215void QSGAbstractSoftwareRenderer::nodeAdded(QSGNode *node)-
216{-
217 for (bool qt_category_enabled = lc2DRender().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEevaluated 32 times by 1 test
Evaluated by:
  • tst_qquickshape
; qt_category_enabled = false) QMessageLogger(__FILE__, 263, __PRETTY_FUNCTION__, lc2DRender().categoryName()).debug("nodeAdded %p", (void*)node);
never executed: QMessageLogger(__FILE__, 263, __PRETTY_FUNCTION__, lc2DRender().categoryName()).debug("nodeAdded %p", (void*)node);
0-32
218-
219 m_nodeUpdater->updateNodes(node);-
220}
executed 32 times by 1 test: end of block
Executed by:
  • tst_qquickshape
32
221-
222void QSGAbstractSoftwareRenderer::nodeRemoved(QSGNode *node)-
223{-
224 for (bool qt_category_enabled = lc2DRender().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEevaluated 40 times by 1 test
Evaluated by:
  • tst_qquickshape
; qt_category_enabled = false) QMessageLogger(__FILE__, 270, __PRETTY_FUNCTION__, lc2DRender().categoryName()).debug("nodeRemoved %p", (void*)node);
never executed: QMessageLogger(__FILE__, 270, __PRETTY_FUNCTION__, lc2DRender().categoryName()).debug("nodeRemoved %p", (void*)node);
0-40
225-
226 auto renderable = renderableNode(node);-
227-
228 if (renderable != nullptr
renderable != nullptrDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 32 times by 1 test
Evaluated by:
  • tst_qquickshape
) {
8-32
229-
230 QRegion dirtyRegion = renderable->previousDirtyRegion(true);-
231 if (dirtyRegion.isEmpty()
dirtyRegion.isEmpty()Description
TRUEnever evaluated
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_qquickshape
)
0-8
232 dirtyRegion = renderable->boundingRectMax();
never executed: dirtyRegion = renderable->boundingRectMax();
0
233 m_dirtyRegion += dirtyRegion;-
234 m_nodes.remove(node);-
235 delete renderable;-
236 }
executed 8 times by 1 test: end of block
Executed by:
  • tst_qquickshape
8
237-
238-
239 for (QSGNode *child = node->firstChild(); child
childDescription
TRUEevaluated 16 times by 1 test
Evaluated by:
  • tst_qquickshape
FALSEevaluated 40 times by 1 test
Evaluated by:
  • tst_qquickshape
; child = child->nextSibling()) {
16-40
240 nodeRemoved(child);-
241 }
executed 16 times by 1 test: end of block
Executed by:
  • tst_qquickshape
16
242-
243 m_nodeUpdater->updateNodes(node, true);-
244}
executed 40 times by 1 test: end of block
Executed by:
  • tst_qquickshape
40
245-
246void QSGAbstractSoftwareRenderer::nodeGeometryUpdated(QSGNode *node)-
247{-
248 for (bool qt_category_enabled = lc2DRender().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 294, __PRETTY_FUNCTION__, lc2DRender().categoryName()).debug("nodeGeometryUpdated");
never executed: QMessageLogger(__FILE__, 294, __PRETTY_FUNCTION__, lc2DRender().categoryName()).debug("nodeGeometryUpdated");
0
249-
250-
251 auto renderable = renderableNode(node);-
252 if (renderable != nullptr
renderable != nullptrDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
253 renderable->markGeometryDirty();-
254 }
never executed: end of block
else {
0
255 m_nodeUpdater->updateNodes(node);-
256 }
never executed: end of block
0
257}-
258-
259void QSGAbstractSoftwareRenderer::nodeMaterialUpdated(QSGNode *node)-
260{-
261 for (bool qt_category_enabled = lc2DRender().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 307, __PRETTY_FUNCTION__, lc2DRender().categoryName()).debug("nodeMaterialUpdated");
never executed: QMessageLogger(__FILE__, 307, __PRETTY_FUNCTION__, lc2DRender().categoryName()).debug("nodeMaterialUpdated");
0
262-
263-
264 auto renderable = renderableNode(node);-
265 if (renderable != nullptr
renderable != nullptrDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
266 renderable->markMaterialDirty();-
267 }
never executed: end of block
else {
0
268 m_nodeUpdater->updateNodes(node);-
269 }
never executed: end of block
0
270}-
271-
272void QSGAbstractSoftwareRenderer::nodeMatrixUpdated(QSGNode *node)-
273{-
274 for (bool qt_category_enabled = lc2DRender().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEevaluated 16 times by 1 test
Evaluated by:
  • tst_qquickshape
; qt_category_enabled = false) QMessageLogger(__FILE__, 320, __PRETTY_FUNCTION__, lc2DRender().categoryName()).debug("nodeMaterialUpdated");
never executed: QMessageLogger(__FILE__, 320, __PRETTY_FUNCTION__, lc2DRender().categoryName()).debug("nodeMaterialUpdated");
0-16
275-
276-
277 m_nodeUpdater->updateNodes(node);-
278}
executed 16 times by 1 test: end of block
Executed by:
  • tst_qquickshape
16
279-
280void QSGAbstractSoftwareRenderer::nodeOpacityUpdated(QSGNode *node)-
281{-
282 for (bool qt_category_enabled = lc2DRender().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 328, __PRETTY_FUNCTION__, lc2DRender().categoryName()).debug("nodeOpacityUpdated");
never executed: QMessageLogger(__FILE__, 328, __PRETTY_FUNCTION__, lc2DRender().categoryName()).debug("nodeOpacityUpdated");
0
283-
284-
285 m_nodeUpdater->updateNodes(node);-
286}
never executed: end of block
0
287-
288void QSGAbstractSoftwareRenderer::markDirty()-
289{-
290 m_dirtyRegion = QRegion(m_background->rect().toRect());-
291}
executed 8 times by 1 test: end of block
Executed by:
  • tst_qquickshape
8
292-
293-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.0