OpenCoverage

qsgsoftwarethreadedrenderloop.cpp

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9const QEvent::Type WM_Obscure = QEvent::Type(QEvent::User + 1);-
10-
11-
12const QEvent::Type WM_RequestSync = QEvent::Type(QEvent::User + 2);-
13-
14-
15-
16const QEvent::Type WM_RequestRepaint = QEvent::Type(QEvent::User + 3);-
17-
18-
19-
20const QEvent::Type WM_TryRelease = QEvent::Type(QEvent::User + 4);-
21-
22-
23const QEvent::Type WM_Grab = QEvent::Type(QEvent::User + 5);-
24-
25-
26const QEvent::Type WM_PostJob = QEvent::Type(QEvent::User + 6);-
27-
28class QSGSoftwareWindowEvent : public QEvent-
29{-
30public:-
31 QSGSoftwareWindowEvent(QQuickWindow *c, QEvent::Type type) : QEvent(type), window(c) { }
never executed: end of block
0
32 QQuickWindow *window;-
33};-
34-
35class QSGSoftwareTryReleaseEvent : public QSGSoftwareWindowEvent-
36{-
37public:-
38 QSGSoftwareTryReleaseEvent(QQuickWindow *win, bool destroy)-
39 : QSGSoftwareWindowEvent(win, WM_TryRelease), destroying(destroy) { }
never executed: end of block
0
40 bool destroying;-
41};-
42-
43class QSGSoftwareSyncEvent : public QSGSoftwareWindowEvent-
44{-
45public:-
46 QSGSoftwareSyncEvent(QQuickWindow *c, bool inExpose, bool force)-
47 : QSGSoftwareWindowEvent(c, WM_RequestSync)-
48 , size(c->size())-
49 , dpr(c->effectiveDevicePixelRatio())-
50 , syncInExpose(inExpose)-
51 , forceRenderPass(force) { }
never executed: end of block
0
52 QSize size;-
53 float dpr;-
54 bool syncInExpose;-
55 bool forceRenderPass;-
56};-
57-
58class QSGSoftwareGrabEvent : public QSGSoftwareWindowEvent-
59{-
60public:-
61 QSGSoftwareGrabEvent(QQuickWindow *c, QImage *result)-
62 : QSGSoftwareWindowEvent(c, WM_Grab), image(result) { }
never executed: end of block
0
63 QImage *image;-
64};-
65-
66class QSGSoftwareJobEvent : public QSGSoftwareWindowEvent-
67{-
68public:-
69 QSGSoftwareJobEvent(QQuickWindow *c, QRunnable *postedJob)-
70 : QSGSoftwareWindowEvent(c, WM_PostJob), job(postedJob) { }
never executed: end of block
0
71 ~QSGSoftwareJobEvent() { delete job; }
never executed: end of block
0
72 QRunnable *job;-
73};-
74-
75class QSGSoftwareEventQueue : public QQueue<QEvent *>-
76{-
77public:-
78 void addEvent(QEvent *e) {-
79 mutex.lock();-
80 enqueue(e);-
81 if (waiting
waitingDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
82 condition.wakeOne();
never executed: condition.wakeOne();
0
83 mutex.unlock();-
84 }
never executed: end of block
0
85-
86 QEvent *takeEvent(bool wait) {-
87 mutex.lock();-
88 if (isEmpty()
isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
&& wait
waitDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
89 waiting = true;-
90 condition.wait(&mutex);-
91 waiting = false;-
92 }
never executed: end of block
0
93 QEvent *e = dequeue();-
94 mutex.unlock();-
95 return
never executed: return e;
e;
never executed: return e;
0
96 }-
97-
98 bool hasMoreEvents() {-
99 mutex.lock();-
100 bool has = !isEmpty();-
101 mutex.unlock();-
102 return
never executed: return has;
has;
never executed: return has;
0
103 }-
104-
105private:-
106 QMutex mutex;-
107 QWaitCondition condition;-
108 bool waiting = false;-
109};-
110-
111static inline int qsgrl_animation_interval()-
112{-
113 const qreal refreshRate = QGuiApplication::primaryScreen()
QGuiApplicatio...rimaryScreen()Description
TRUEnever evaluated
FALSEnever evaluated
? QGuiApplication::primaryScreen()->refreshRate() : 0;
0
114 return
never executed: return refreshRate < 1 ? 16 : int(1000 / refreshRate);
refreshRate < 1 ? 16 : int(1000 / refreshRate);
never executed: return refreshRate < 1 ? 16 : int(1000 / refreshRate);
0
115}-
116-
117class QSGSoftwareRenderThread : public QThread-
118{-
119 public:-
120#pragma GCC diagnostic push-
121 -
122#pragma GCC diagnostic ignored "-Wsuggest-override"-
123 static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); virtual int qt_metacall(QMetaObject::Call, int, void **); static inline QString tr(const char *s, const char *c = nullptr, int n = -1) { return staticMetaObject.tr(s, c, n); } __attribute__ ((__deprecated__)) static inline QString trUtf8(const char *s, const char *c = nullptr, int n = -1) { return staticMetaObject.tr(s, c, n); } private:-
124#pragma GCC diagnostic ignored "-Wattributes"-
125 __attribute__((visibility("hidden"))) static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **);-
126#pragma GCC diagnostic pop-
127 struct QPrivateSignal {};-
128public:-
129 QSGSoftwareRenderThread(QSGSoftwareThreadedRenderLoop *rl, QSGRenderContext *renderContext)-
130 : renderLoop(rl)-
131 {-
132 rc = static_cast<QSGSoftwareRenderContext *>(renderContext);-
133 vsyncDelta = qsgrl_animation_interval();-
134 }
never executed: end of block
0
135-
136 ~QSGSoftwareRenderThread()-
137 {-
138 delete rc;-
139 }
never executed: end of block
0
140-
141 bool event(QEvent *e) override;-
142 void run() override;-
143-
144 void syncAndRender();-
145 void sync(bool inExpose);-
146-
147 void requestRepaint()-
148 {-
149 if (sleeping
sleepingDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
150 stopEventProcessing = true;
never executed: stopEventProcessing = true;
0
151 if (exposedWindow
exposedWindowDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
152 pendingUpdate |= RepaintRequest;
never executed: pendingUpdate |= RepaintRequest;
0
153 }
never executed: end of block
0
154-
155 void processEventsAndWaitForMore();-
156 void processEvents();-
157 void postEvent(QEvent *e);-
158-
159 enum UpdateRequest {-
160 SyncRequest = 0x01,-
161 RepaintRequest = 0x02,-
162 ExposeRequest = 0x04 | RepaintRequest | SyncRequest-
163 };-
164-
165 QSGSoftwareThreadedRenderLoop *renderLoop;-
166 QSGSoftwareRenderContext *rc;-
167 QAnimationDriver *rtAnim = nullptr;-
168 volatile bool active = false;-
169 uint pendingUpdate = 0;-
170 bool sleeping = false;-
171 bool syncResultedInChanges = false;-
172 float vsyncDelta;-
173 QMutex mutex;-
174 QWaitCondition waitCondition;-
175 QQuickWindow *exposedWindow = nullptr;-
176 QBackingStore *backingStore = nullptr;-
177 bool stopEventProcessing = false;-
178 QSGSoftwareEventQueue eventQueue;-
179 QElapsedTimer renderThrottleTimer;-
180 qint64 syncTime;-
181 qint64 renderTime;-
182 qint64 sinceLastTime;-
183-
184public :-
185 void onSceneGraphChanged() {-
186 syncResultedInChanges = true;-
187 }
never executed: end of block
0
188};-
189-
190bool QSGSoftwareRenderThread::event(QEvent *e)-
191{-
192 switch ((int)e->type()) {-
193-
194 case
never executed: case WM_Obscure:
WM_Obscure:
never executed: case WM_Obscure:
0
195 ((!exposedWindow || exposedWindow == static_cast<QSGSoftwareWindowEvent *>(e)->window) ? static_cast<void>(0) : qt_assert("!exposedWindow || exposedWindow == static_cast<QSGSoftwareWindowEvent *>(e)->window", __FILE__, 245));-
196 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 246, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "RT - WM_Obscure" << exposedWindow;
never executed: QMessageLogger(__FILE__, 246, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "RT - WM_Obscure" << exposedWindow;
0
197 mutex.lock();-
198 if (exposedWindow
exposedWindowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
199 QQuickWindowPrivate::get(exposedWindow)->fireAboutToStop();-
200 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 250, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_Obscure - window removed");
never executed: QMessageLogger(__FILE__, 250, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_Obscure - window removed");
0
201 exposedWindow = nullptr;-
202 delete backingStore;-
203 backingStore = nullptr;-
204 }
never executed: end of block
0
205 waitCondition.wakeOne();-
206 mutex.unlock();-
207 return
never executed: return true;
true;
never executed: return true;
0
208-
209 case
never executed: case WM_RequestSync:
WM_RequestSync:
never executed: case WM_RequestSync:
{
0
210 QSGSoftwareSyncEvent *wme = static_cast<QSGSoftwareSyncEvent *>(e);-
211 if (sleeping
sleepingDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
212 stopEventProcessing = true;
never executed: stopEventProcessing = true;
0
213 exposedWindow = wme->window;-
214 if (backingStore == nullptr
backingStore == nullptrDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
215 backingStore = new QBackingStore(exposedWindow);
never executed: backingStore = new QBackingStore(exposedWindow);
0
216 if (backingStore->size() != exposedWindow->size()
backingStore->...Window->size()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
217 backingStore->resize(exposedWindow->size());
never executed: backingStore->resize(exposedWindow->size());
0
218 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 268, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "RT - WM_RequestSync" << exposedWindow;
never executed: QMessageLogger(__FILE__, 268, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "RT - WM_RequestSync" << exposedWindow;
0
219 pendingUpdate |= SyncRequest;-
220 if (wme->syncInExpose
wme->syncInExposeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
221 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 271, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_RequestSync - triggered from expose");
never executed: QMessageLogger(__FILE__, 271, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_RequestSync - triggered from expose");
0
222 pendingUpdate |= ExposeRequest;-
223 }
never executed: end of block
0
224 if (wme->forceRenderPass
wme->forceRenderPassDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
225 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 275, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_RequestSync - repaint regardless");
never executed: QMessageLogger(__FILE__, 275, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_RequestSync - repaint regardless");
0
226 pendingUpdate |= RepaintRequest;-
227 }
never executed: end of block
0
228 return
never executed: return true;
true;
never executed: return true;
0
229 }-
230-
231 case
never executed: case WM_TryRelease:
WM_TryRelease:
never executed: case WM_TryRelease:
{
0
232 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 282, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_TryRelease");
never executed: QMessageLogger(__FILE__, 282, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_TryRelease");
0
233 mutex.lock();-
234 renderLoop->lockedForSync = true;-
235 QSGSoftwareTryReleaseEvent *wme = static_cast<QSGSoftwareTryReleaseEvent *>(e);-
236-
237 if (!exposedWindow
!exposedWindowDescription
TRUEnever evaluated
FALSEnever evaluated
|| wme->destroying
wme->destroyingDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
238 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 288, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_TryRelease - invalidating rc");
never executed: QMessageLogger(__FILE__, 288, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_TryRelease - invalidating rc");
0
239 if (wme->window
wme->windowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
240 QQuickWindowPrivate *wd = QQuickWindowPrivate::get(wme->window);-
241 if (wme->destroying
wme->destroyingDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
242-
243 wd->cleanupNodesOnShutdown();-
244 }
never executed: end of block
0
245 rc->invalidate();-
246 QCoreApplication::processEvents();-
247 QCoreApplication::sendPostedEvents(nullptr, QEvent::DeferredDelete);-
248 if (wme->destroying
wme->destroyingDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
249 delete wd->animationController;
never executed: delete wd->animationController;
0
250 }
never executed: end of block
0
251 if (wme->destroying
wme->destroyingDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
252 active = false;
never executed: active = false;
0
253 if (sleeping
sleepingDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
254 stopEventProcessing = true;
never executed: stopEventProcessing = true;
0
255 }
never executed: end of block
else {
0
256 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 306, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_TryRelease - not releasing because window is still active");
never executed: QMessageLogger(__FILE__, 306, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_TryRelease - not releasing because window is still active");
0
257 }
never executed: end of block
0
258 waitCondition.wakeOne();-
259 renderLoop->lockedForSync = false;-
260 mutex.unlock();-
261 return
never executed: return true;
true;
never executed: return true;
0
262 }-
263-
264 case
never executed: case WM_Grab:
WM_Grab:
never executed: case WM_Grab:
{
0
265 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 315, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_Grab");
never executed: QMessageLogger(__FILE__, 315, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_Grab");
0
266 QSGSoftwareGrabEvent *wme = static_cast<QSGSoftwareGrabEvent *>(e);-
267 ((wme->window) ? static_cast<void>(0) : qt_assert("wme->window", __FILE__, 317));-
268 ((wme->window == exposedWindow || !exposedWindow) ? static_cast<void>(0) : qt_assert("wme->window == exposedWindow || !exposedWindow", __FILE__, 318));-
269 mutex.lock();-
270 if (wme->window
wme->windowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
271-
272-
273-
274-
275-
276-
277 QQuickWindowPrivate *wd = QQuickWindowPrivate::get(wme->window);-
278 auto softwareRenderer = static_cast<QSGSoftwareRenderer*>(wd->renderer);-
279 if (softwareRenderer
softwareRendererDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
280 softwareRenderer->setBackingStore(backingStore);
never executed: softwareRenderer->setBackingStore(backingStore);
0
281 rc->initialize(nullptr);-
282 wd->syncSceneGraph();-
283 rc->endSync();-
284 wd->renderSceneGraph(wme->window->size());-
285 *wme->image = backingStore->handle()->toImage();-
286 }
never executed: end of block
0
287 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 337, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_Grab - waking gui to handle result");
never executed: QMessageLogger(__FILE__, 337, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_Grab - waking gui to handle result");
0
288 waitCondition.wakeOne();-
289 mutex.unlock();-
290 return
never executed: return true;
true;
never executed: return true;
0
291 }-
292-
293 case
never executed: case WM_PostJob:
WM_PostJob:
never executed: case WM_PostJob:
{
0
294 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 344, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_PostJob");
never executed: QMessageLogger(__FILE__, 344, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_PostJob");
0
295 QSGSoftwareJobEvent *wme = static_cast<QSGSoftwareJobEvent *>(e);-
296 ((wme->window == exposedWindow) ? static_cast<void>(0) : qt_assert("wme->window == exposedWindow", __FILE__, 346));-
297 if (exposedWindow
exposedWindowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
298 wme->job->run();-
299 delete wme->job;-
300 wme->job = nullptr;-
301 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 351, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_PostJob - job done");
never executed: QMessageLogger(__FILE__, 351, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_PostJob - job done");
0
302 }
never executed: end of block
0
303 return
never executed: return true;
true;
never executed: return true;
0
304 }-
305-
306 case
never executed: case WM_RequestRepaint:
WM_RequestRepaint:
never executed: case WM_RequestRepaint:
0
307 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 357, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_RequestPaint");
never executed: QMessageLogger(__FILE__, 357, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - WM_RequestPaint");
0
308-
309-
310 pendingUpdate |= RepaintRequest;-
311 break;
never executed: break;
0
312-
313 default
never executed: default:
:
never executed: default:
0
314 break;
never executed: break;
0
315 }-
316-
317 return
never executed: return QThread::event(e);
QThread::event(e);
never executed: return QThread::event(e);
0
318}-
319-
320void QSGSoftwareRenderThread::postEvent(QEvent *e)-
321{-
322 eventQueue.addEvent(e);-
323}
never executed: end of block
0
324-
325void QSGSoftwareRenderThread::processEvents()-
326{-
327 while (eventQueue.hasMoreEvents()
eventQueue.hasMoreEvents()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
328 QEvent *e = eventQueue.takeEvent(false);-
329 event(e);-
330 delete e;-
331 }
never executed: end of block
0
332}
never executed: end of block
0
333-
334void QSGSoftwareRenderThread::processEventsAndWaitForMore()-
335{-
336 stopEventProcessing = false;-
337 while (!stopEventProcessing
!stopEventProcessingDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
338 QEvent *e = eventQueue.takeEvent(true);-
339 event(e);-
340 delete e;-
341 }
never executed: end of block
0
342}
never executed: end of block
0
343-
344void QSGSoftwareRenderThread::run()-
345{-
346 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 396, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - run()");
never executed: QMessageLogger(__FILE__, 396, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - run()");
0
347-
348 rtAnim = rc->sceneGraphContext()->createAnimationDriver(nullptr);-
349 rtAnim->install();-
350-
351 if (QQmlDebugConnector::service<QQmlProfilerService>()
QQmlDebugConne...ilerService>()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
352 QQuickProfiler::registerAnimationCallback();
never executed: QQuickProfiler::registerAnimationCallback();
0
353-
354 renderThrottleTimer.start();-
355-
356 while (active
activeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
357 if (exposedWindow
exposedWindowDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
358 syncAndRender();
never executed: syncAndRender();
0
359-
360 processEvents();-
361 QCoreApplication::processEvents();-
362-
363 if (pendingUpdate == 0
pendingUpdate == 0Description
TRUEnever evaluated
FALSEnever evaluated
|| !exposedWindow
!exposedWindowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
364 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 414, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - done drawing, sleep");
never executed: QMessageLogger(__FILE__, 414, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - done drawing, sleep");
0
365 sleeping = true;-
366 processEventsAndWaitForMore();-
367 sleeping = false;-
368 }
never executed: end of block
0
369 }
never executed: end of block
0
370-
371 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 421, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - run() exiting");
never executed: QMessageLogger(__FILE__, 421, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - run() exiting");
0
372-
373 delete rtAnim;-
374 rtAnim = nullptr;-
375-
376 rc->moveToThread(renderLoop->thread());-
377 moveToThread(renderLoop->thread());-
378}
never executed: end of block
0
379-
380void QSGSoftwareRenderThread::sync(bool inExpose)-
381{-
382 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 432, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - sync");
never executed: QMessageLogger(__FILE__, 432, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - sync");
0
383-
384 mutex.lock();-
385 ((renderLoop->lockedForSync) ? static_cast<void>(0) : qt_assert_x("QSGD3D12RenderThread::sync()", "sync triggered with gui not locked", __FILE__, 435));-
386-
387 if (exposedWindow
exposedWindowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
388 QQuickWindowPrivate *wd = QQuickWindowPrivate::get(exposedWindow);-
389 bool hadRenderer = wd->renderer != nullptr;-
390-
391-
392 if (wd->renderer
wd->rendererDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
393 wd->renderer->clearChangedFlag();
never executed: wd->renderer->clearChangedFlag();
0
394-
395 rc->initialize(nullptr);-
396 wd->syncSceneGraph();-
397 rc->endSync();-
398-
399 if (!hadRenderer
!hadRendererDescription
TRUEnever evaluated
FALSEnever evaluated
&& wd->renderer
wd->rendererDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
400 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 450, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - created renderer");
never executed: QMessageLogger(__FILE__, 450, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - created renderer");
0
401 syncResultedInChanges = true;-
402 connect(wd->renderer, &QSGRenderer::sceneGraphChanged, this,-
403 &QSGSoftwareRenderThread::onSceneGraphChanged, Qt::DirectConnection);-
404 }
never executed: end of block
0
405-
406-
407-
408-
409 QCoreApplication::sendPostedEvents(nullptr, QEvent::DeferredDelete);-
410 }
never executed: end of block
0
411-
412 if (!inExpose
!inExposeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
413 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 463, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - sync complete, waking gui");
never executed: QMessageLogger(__FILE__, 463, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - sync complete, waking gui");
0
414 waitCondition.wakeOne();-
415 mutex.unlock();-
416 }
never executed: end of block
0
417}
never executed: end of block
0
418-
419void QSGSoftwareRenderThread::syncAndRender()-
420{-
421 if (QQuickProfiler::featuresEnabled & (1 << QQuickProfiler::ProfileSceneGraph)
QQuickProfiler...ileSceneGraph)Description
TRUEnever evaluated
FALSEnever evaluated
) { (QQuickProfiler::startSceneGraphFrame<QQuickProfiler::SceneGraphRenderLoopFrame>()); }
never executed: end of block
else (
never executed: (void)0;
void)0;
never executed: (void)0;
0
422-
423 QElapsedTimer waitTimer;-
424 waitTimer.start();-
425-
426 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 476, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - syncAndRender()");
never executed: QMessageLogger(__FILE__, 476, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - syncAndRender()");
0
427-
428 syncResultedInChanges = false;-
429 QQuickWindowPrivate *wd = QQuickWindowPrivate::get(exposedWindow);-
430-
431 const bool repaintRequested = (
(pendingUpdate...epaintRequest)Description
TRUEnever evaluated
FALSEnever evaluated
pendingUpdate & RepaintRequest)
(pendingUpdate...epaintRequest)Description
TRUEnever evaluated
FALSEnever evaluated
|| wd->customRenderStage
wd->customRenderStageDescription
TRUEnever evaluated
FALSEnever evaluated
;
0
432 const bool syncRequested = pendingUpdate & SyncRequest;-
433 const bool exposeRequested = (pendingUpdate & ExposeRequest) == ExposeRequest;-
434 pendingUpdate = 0;-
435-
436 if (syncRequested
syncRequestedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
437 sync(exposeRequested);
never executed: sync(exposeRequested);
0
438-
439 if (QQuickProfiler::featuresEnabled & (1 << QQuickProfiler::ProfileSceneGraph)
QQuickProfiler...ileSceneGraph)Description
TRUEnever evaluated
FALSEnever evaluated
) { (QQuickProfiler::recordSceneGraphTimestamp<QQuickProfiler::SceneGraphRenderLoopFrame>(QQuickProfiler::SceneGraphRenderLoopSync)); }
never executed: end of block
else (
never executed: (void)0 ;
void)0
never executed: (void)0 ;
0
440 ;
never executed: (void)0 ;
0
441-
442 if (!syncResultedInChanges
!syncResultedInChangesDescription
TRUEnever evaluated
FALSEnever evaluated
&& !repaintRequested
!repaintRequestedDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
443 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 493, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - no changes, render aborted");
never executed: QMessageLogger(__FILE__, 493, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - no changes, render aborted");
0
444 int waitTime = vsyncDelta - (int) waitTimer.elapsed();-
445 if (waitTime > 0
waitTime > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
446 msleep(waitTime);
never executed: msleep(waitTime);
0
447 return;
never executed: return;
0
448 }-
449-
450 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 500, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - rendering started");
never executed: QMessageLogger(__FILE__, 500, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - rendering started");
0
451-
452 if (rtAnim->isRunning()
rtAnim->isRunning()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
453 wd->animationController->lock();-
454 rtAnim->advance();-
455 wd->animationController->unlock();-
456 }
never executed: end of block
0
457-
458 bool canRender = wd->renderer != nullptr;-
459-
460 if (canRender
canRenderDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
461 auto softwareRenderer = static_cast<QSGSoftwareRenderer*>(wd->renderer);-
462 if (softwareRenderer
softwareRendererDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
463 softwareRenderer->setBackingStore(backingStore);
never executed: softwareRenderer->setBackingStore(backingStore);
0
464 wd->renderSceneGraph(exposedWindow->size());-
465-
466 if (QQuickProfiler::featuresEnabled & (1 << QQuickProfiler::ProfileSceneGraph)
QQuickProfiler...ileSceneGraph)Description
TRUEnever evaluated
FALSEnever evaluated
) { (QQuickProfiler::recordSceneGraphTimestamp<QQuickProfiler::SceneGraphRenderLoopFrame>(QQuickProfiler::SceneGraphRenderLoopRender)); }
never executed: end of block
else (
never executed: (void)0 ;
void)0
never executed: (void)0 ;
0
467 ;
never executed: (void)0 ;
0
468-
469 if (softwareRenderer
softwareRendererDescription
TRUEnever evaluated
FALSEnever evaluated
&& (!wd->customRenderStage
!wd->customRenderStageDescription
TRUEnever evaluated
FALSEnever evaluated
|| !wd->customRenderStage->swap()
!wd->customRenderStage->swap()Description
TRUEnever evaluated
FALSEnever evaluated
))
0
470 backingStore->flush(softwareRenderer->flushRegion());
never executed: backingStore->flush(softwareRenderer->flushRegion());
0
471-
472-
473-
474 int blockTime = vsyncDelta - (int) renderThrottleTimer.elapsed();-
475 if (blockTime > 0
blockTime > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
476 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 526, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - blocking for %d ms", blockTime);
never executed: QMessageLogger(__FILE__, 526, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - blocking for %d ms", blockTime);
0
477 msleep(blockTime);-
478 }
never executed: end of block
0
479 renderThrottleTimer.restart();-
480-
481 wd->fireFrameSwapped();-
482 }
never executed: end of block
else {
0
483 if (QQuickProfiler::featuresEnabled & (1 << QQuickProfiler::ProfileSceneGraph)
QQuickProfiler...ileSceneGraph)Description
TRUEnever evaluated
FALSEnever evaluated
) { (QQuickProfiler::skipSceneGraphTimestamps<QQuickProfiler::SceneGraphRenderLoopFrame, 1>(QQuickProfiler::SceneGraphRenderLoopSync)); }
never executed: end of block
else (
never executed: (void)0 ;
void)0
never executed: (void)0 ;
0
484 ;
never executed: (void)0 ;
0
485 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 535, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - window not ready, skipping render");
never executed: QMessageLogger(__FILE__, 535, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - window not ready, skipping render");
0
486 }
never executed: end of block
0
487-
488 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 538, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - rendering done");
never executed: QMessageLogger(__FILE__, 538, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - rendering done");
0
489-
490 if (exposeRequested
exposeRequestedDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
491 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 541, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - wake gui after initial expose");
never executed: QMessageLogger(__FILE__, 541, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("RT - wake gui after initial expose");
0
492 waitCondition.wakeOne();-
493 mutex.unlock();-
494 }
never executed: end of block
0
495-
496 if (QQuickProfiler::featuresEnabled & (1 << QQuickProfiler::ProfileSceneGraph)
QQuickProfiler...ileSceneGraph)Description
TRUEnever evaluated
FALSEnever evaluated
) { (QQuickProfiler::reportSceneGraphFrame<QQuickProfiler::SceneGraphRenderLoopFrame, true>(QQuickProfiler::SceneGraphRenderLoopSwap)); }
never executed: end of block
else (
never executed: (void)0 ;
void)0
never executed: (void)0 ;
0
497 ;
never executed: (void)0 ;
0
498}-
499-
500template<class T> T *windowFor(const QVector<T> &list, QQuickWindow *window)-
501{-
502 for (const T &t : list) {-
503 if (t.window == window
t.window == windowDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
504 return
never executed: return const_cast<T *>(&t);
const_cast<T *>(&t);
never executed: return const_cast<T *>(&t);
0
505 }
never executed: end of block
0
506 return
never executed: return nullptr;
nullptr;
never executed: return nullptr;
0
507}-
508-
509-
510QSGSoftwareThreadedRenderLoop::QSGSoftwareThreadedRenderLoop()-
511{-
512 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 562, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("software threaded render loop constructor");
never executed: QMessageLogger(__FILE__, 562, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("software threaded render loop constructor");
0
513 m_sg = new QSGSoftwareContext;-
514 m_anim = m_sg->createAnimationDriver(this);-
515 connect(m_anim, &QAnimationDriver::started, this, &QSGSoftwareThreadedRenderLoop::onAnimationStarted);-
516 connect(m_anim, &QAnimationDriver::stopped, this, &QSGSoftwareThreadedRenderLoop::onAnimationStopped);-
517 m_anim->install();-
518}
never executed: end of block
0
519-
520QSGSoftwareThreadedRenderLoop::~QSGSoftwareThreadedRenderLoop()-
521{-
522 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 572, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("software threaded render loop destructor");
never executed: QMessageLogger(__FILE__, 572, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("software threaded render loop destructor");
0
523 delete m_sg;-
524}
never executed: end of block
0
525-
526void QSGSoftwareThreadedRenderLoop::show(QQuickWindow *window)-
527{-
528 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 578, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "show" << window;
never executed: QMessageLogger(__FILE__, 578, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "show" << window;
0
529}
never executed: end of block
0
530-
531void QSGSoftwareThreadedRenderLoop::hide(QQuickWindow *window)-
532{-
533 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 583, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "hide" << window;
never executed: QMessageLogger(__FILE__, 583, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "hide" << window;
0
534-
535 if (window->isExposed()
window->isExposed()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
536 handleObscurity(windowFor(m_windows, window));
never executed: handleObscurity(windowFor(m_windows, window));
0
537-
538 releaseResources(window);-
539}
never executed: end of block
0
540-
541void QSGSoftwareThreadedRenderLoop::resize(QQuickWindow *window)-
542{-
543 if (!window->isExposed()
!window->isExposed()Description
TRUEnever evaluated
FALSEnever evaluated
|| window->size().isEmpty()
window->size().isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
544 return;
never executed: return;
0
545-
546 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 596, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "resize" << window << window->size();
never executed: QMessageLogger(__FILE__, 596, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "resize" << window << window->size();
0
547}
never executed: end of block
0
548-
549void QSGSoftwareThreadedRenderLoop::windowDestroyed(QQuickWindow *window)-
550{-
551 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 601, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "window destroyed" << window;
never executed: QMessageLogger(__FILE__, 601, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "window destroyed" << window;
0
552-
553 WindowData *w = windowFor(m_windows, window);-
554 if (!w
!wDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
555 return;
never executed: return;
0
556-
557 handleObscurity(w);-
558 handleResourceRelease(w, true);-
559-
560 QSGSoftwareRenderThread *thread = w->thread;-
561 while (thread->isRunning()
thread->isRunning()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
562 QThread::yieldCurrentThread();
never executed: QThread::yieldCurrentThread();
0
563-
564 ((thread->thread() == QThread::currentThread()) ? static_cast<void>(0) : qt_assert("thread->thread() == QThread::currentThread()", __FILE__, 614));-
565 delete thread;-
566-
567 for (int i = 0; i < m_windows.size()
i < m_windows.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
568 if (m_windows.at(i).window == window
m_windows.at(i...ndow == windowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
569 m_windows.removeAt(i);-
570 break;
never executed: break;
0
571 }-
572 }
never executed: end of block
0
573-
574-
575-
576-
577 startOrStopAnimationTimer();-
578}
never executed: end of block
0
579-
580void QSGSoftwareThreadedRenderLoop::exposureChanged(QQuickWindow *window)-
581{-
582 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 632, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "exposure changed" << window;
never executed: QMessageLogger(__FILE__, 632, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "exposure changed" << window;
0
583-
584 if (window->isExposed()
window->isExposed()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
585 handleExposure(window);-
586 }
never executed: end of block
else {
0
587 WindowData *w = windowFor(m_windows, window);-
588 if (w
wDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
589 handleObscurity(w);
never executed: handleObscurity(w);
0
590 }
never executed: end of block
0
591}-
592-
593QImage QSGSoftwareThreadedRenderLoop::grab(QQuickWindow *window)-
594{-
595 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 645, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "grab" << window;
never executed: QMessageLogger(__FILE__, 645, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "grab" << window;
0
596-
597 WindowData *w = windowFor(m_windows, window);-
598-
599-
600 const bool tempExpose = !w;-
601 if (tempExpose
tempExposeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
602 handleExposure(window);-
603 w = windowFor(m_windows, window);-
604 ((w) ? static_cast<void>(0) : qt_assert("w", __FILE__, 654));-
605 }
never executed: end of block
0
606-
607 if (!w->thread->isRunning()
!w->thread->isRunning()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
608 return
never executed: return QImage();
QImage();
never executed: return QImage();
0
609-
610 if (!window->handle()
!window->handle()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
611 window->create();
never executed: window->create();
0
612-
613 QQuickWindowPrivate *wd = QQuickWindowPrivate::get(window);-
614 wd->polishItems();-
615-
616 QImage result;-
617 w->thread->mutex.lock();-
618 lockedForSync = true;-
619 w->thread->postEvent(new QSGSoftwareGrabEvent(window, &result));-
620 w->thread->waitCondition.wait(&w->thread->mutex);-
621 lockedForSync = false;-
622 w->thread->mutex.unlock();-
623-
624 result.setDevicePixelRatio(window->effectiveDevicePixelRatio());-
625-
626 if (tempExpose
tempExposeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
627 handleObscurity(w);
never executed: handleObscurity(w);
0
628-
629 return
never executed: return result;
result;
never executed: return result;
0
630}-
631-
632void QSGSoftwareThreadedRenderLoop::update(QQuickWindow *window)-
633{-
634 WindowData *w = windowFor(m_windows, window);-
635 if (!w
!wDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
636 return;
never executed: return;
0
637-
638 if (w->thread == QThread::currentThread()
w->thread == Q...urrentThread()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
639 w->thread->requestRepaint();-
640 return;
never executed: return;
0
641 }-
642-
643-
644-
645 w->forceRenderPass = true;-
646 scheduleUpdate(w);-
647}
never executed: end of block
0
648-
649void QSGSoftwareThreadedRenderLoop::maybeUpdate(QQuickWindow *window)-
650{-
651 WindowData *w = windowFor(m_windows, window);-
652 if (w
wDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
653 scheduleUpdate(w);
never executed: scheduleUpdate(w);
0
654}
never executed: end of block
0
655-
656void QSGSoftwareThreadedRenderLoop::handleUpdateRequest(QQuickWindow *window)-
657{-
658 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 708, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "handleUpdateRequest" << window;
never executed: QMessageLogger(__FILE__, 708, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "handleUpdateRequest" << window;
0
659-
660 WindowData *w = windowFor(m_windows, window);-
661 if (w
wDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
662 polishAndSync(w, false);
never executed: polishAndSync(w, false);
0
663}
never executed: end of block
0
664-
665QAnimationDriver *QSGSoftwareThreadedRenderLoop::animationDriver() const-
666{-
667 return
never executed: return m_anim;
m_anim;
never executed: return m_anim;
0
668}-
669-
670QSGContext *QSGSoftwareThreadedRenderLoop::sceneGraphContext() const-
671{-
672 return
never executed: return m_sg;
m_sg;
never executed: return m_sg;
0
673}-
674-
675QSGRenderContext *QSGSoftwareThreadedRenderLoop::createRenderContext(QSGContext *) const-
676{-
677 return
never executed: return m_sg->createRenderContext();
m_sg->createRenderContext();
never executed: return m_sg->createRenderContext();
0
678}-
679-
680void QSGSoftwareThreadedRenderLoop::releaseResources(QQuickWindow *window)-
681{-
682 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 732, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "releaseResources" << window;
never executed: QMessageLogger(__FILE__, 732, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "releaseResources" << window;
0
683-
684 WindowData *w = windowFor(m_windows, window);-
685 if (w
wDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
686 handleResourceRelease(w, false);
never executed: handleResourceRelease(w, false);
0
687}
never executed: end of block
0
688-
689void QSGSoftwareThreadedRenderLoop::postJob(QQuickWindow *window, QRunnable *job)-
690{-
691 WindowData *w = windowFor(m_windows, window);-
692 if (w
wDescription
TRUEnever evaluated
FALSEnever evaluated
&& w->thread
w->threadDescription
TRUEnever evaluated
FALSEnever evaluated
&& w->thread->exposedWindow
w->thread->exposedWindowDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
693 w->thread->postEvent(new QSGSoftwareJobEvent(window, job));
never executed: w->thread->postEvent(new QSGSoftwareJobEvent(window, job));
0
694 else-
695 delete job;
never executed: delete job;
0
696}-
697-
698QSurface::SurfaceType QSGSoftwareThreadedRenderLoop::windowSurfaceType() const-
699{-
700 return
never executed: return QSurface::RasterSurface;
QSurface::RasterSurface;
never executed: return QSurface::RasterSurface;
0
701}-
702-
703bool QSGSoftwareThreadedRenderLoop::interleaveIncubation() const-
704{-
705 bool somethingVisible = false;-
706 for (const WindowData &w : m_windows) {-
707 if (w.window->isVisible()
w.window->isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
&& w.window->isExposed()
w.window->isExposed()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
708 somethingVisible = true;-
709 break;
never executed: break;
0
710 }-
711 }
never executed: end of block
0
712 return
never executed: return somethingVisible && m_anim->isRunning();
somethingVisible && m_anim->isRunning();
never executed: return somethingVisible && m_anim->isRunning();
0
713}-
714-
715int QSGSoftwareThreadedRenderLoop::flags() const-
716{-
717 return
never executed: return SupportsGrabWithoutExpose;
SupportsGrabWithoutExpose;
never executed: return SupportsGrabWithoutExpose;
0
718}-
719-
720bool QSGSoftwareThreadedRenderLoop::event(QEvent *e)-
721{-
722 if (e->type() == QEvent::Timer
e->type() == QEvent::TimerDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
723 QTimerEvent *te = static_cast<QTimerEvent *>(e);-
724 if (te->timerId() == animationTimer
te->timerId() ...animationTimerDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
725 m_anim->advance();-
726 timeToIncubate();-
727 return
never executed: return true;
true;
never executed: return true;
0
728 }-
729 }
never executed: end of block
0
730-
731 return
never executed: return QObject::event(e);
QObject::event(e);
never executed: return QObject::event(e);
0
732}-
733-
734void QSGSoftwareThreadedRenderLoop::onAnimationStarted()-
735{-
736 startOrStopAnimationTimer();-
737-
738 for (const WindowData &w : qAsConst(m_windows))-
739 w.window->requestUpdate();
never executed: w.window->requestUpdate();
0
740}
never executed: end of block
0
741-
742void QSGSoftwareThreadedRenderLoop::onAnimationStopped()-
743{-
744 startOrStopAnimationTimer();-
745}
never executed: end of block
0
746-
747void QSGSoftwareThreadedRenderLoop::startOrStopAnimationTimer()-
748{-
749 int exposedWindowCount = 0;-
750 const WindowData *exposed = nullptr;-
751-
752 for (int i = 0; i < m_windows.size()
i < m_windows.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
753 const WindowData &w(m_windows[i]);-
754 if (w.window->isVisible()
w.window->isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
&& w.window->isExposed()
w.window->isExposed()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
755 ++exposedWindowCount;-
756 exposed = &w;-
757 }
never executed: end of block
0
758 }
never executed: end of block
0
759-
760 if (animationTimer
animationTimerDescription
TRUEnever evaluated
FALSEnever evaluated
&& (exposedWindowCount == 1
exposedWindowCount == 1Description
TRUEnever evaluated
FALSEnever evaluated
|| !m_anim->isRunning()
!m_anim->isRunning()Description
TRUEnever evaluated
FALSEnever evaluated
)) {
0
761 killTimer(animationTimer);-
762 animationTimer = 0;-
763-
764 if (m_anim->isRunning()
m_anim->isRunning()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
765 exposed->window->requestUpdate();
never executed: exposed->window->requestUpdate();
0
766 }
never executed: end of block
else if (!animationTimer
!animationTimerDescription
TRUEnever evaluated
FALSEnever evaluated
&& exposedWindowCount != 1
exposedWindowCount != 1Description
TRUEnever evaluated
FALSEnever evaluated
&& m_anim->isRunning()
m_anim->isRunning()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
767 animationTimer = startTimer(qsgrl_animation_interval());-
768 }
never executed: end of block
0
769}
never executed: end of block
0
770-
771void QSGSoftwareThreadedRenderLoop::handleExposure(QQuickWindow *window)-
772{-
773 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 823, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "handleExposure" << window;
never executed: QMessageLogger(__FILE__, 823, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "handleExposure" << window;
0
774-
775 WindowData *w = windowFor(m_windows, window);-
776 if (!w
!wDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
777 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 827, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("adding window to list");
never executed: QMessageLogger(__FILE__, 827, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("adding window to list");
0
778 WindowData win;-
779 win.window = window;-
780 QSGRenderContext *rc = QQuickWindowPrivate::get(window)->context;-
781 win.thread = new QSGSoftwareRenderThread(this, rc);-
782 win.updateDuringSync = false;-
783 win.forceRenderPass = true;-
784 m_windows.append(win);-
785 w = &m_windows.last();-
786 }
never executed: end of block
0
787-
788-
789-
790 w->thread->exposedWindow = window;-
791-
792 if (w->window->size().isEmpty()
w->window->size().isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
793 || (w->window->isTopLevel()
w->window->isTopLevel()Description
TRUEnever evaluated
FALSEnever evaluated
&& !w->window->geometry().intersects(w->window->screen()->availableGeometry())
!w->window->ge...bleGeometry())Description
TRUEnever evaluated
FALSEnever evaluated
)) {
0
794-
795 QMessageLogger(__FILE__, 845, __PRETTY_FUNCTION__).warning().noquote().nospace() << "QSGSotwareThreadedRenderLoop: expose event received for window "-
796 << w->window << " with invalid geometry: " << w->window->geometry()-
797 << " on " << w->window->screen();-
798-
799 }
never executed: end of block
0
800-
801 if (!w->window->handle()
!w->window->handle()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
802 w->window->create();
never executed: w->window->create();
0
803-
804-
805 if (!w->thread->isRunning()
!w->thread->isRunning()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
806 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 856, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("starting render thread");
never executed: QMessageLogger(__FILE__, 856, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("starting render thread");
0
807-
808 QQuickAnimatorController *controller = QQuickWindowPrivate::get(w->window)->animationController;-
809 if (controller->thread() != w->thread
controller->th...) != w->threadDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
810 controller->moveToThread(w->thread);
never executed: controller->moveToThread(w->thread);
0
811 if (w->thread->thread() == QThread::currentThread()
w->thread->thr...urrentThread()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
812 w->thread->rc->moveToThread(w->thread);-
813 w->thread->moveToThread(w->thread);-
814 }
never executed: end of block
0
815-
816 w->thread->active = true;-
817 w->thread->start();-
818-
819 if (!w->thread->isRunning()
!w->thread->isRunning()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
820 QMessageLogger(__FILE__, 870, __PRETTY_FUNCTION__).fatal("Render thread failed to start, aborting application.");
never executed: QMessageLogger(__FILE__, 870, __PRETTY_FUNCTION__).fatal("Render thread failed to start, aborting application.");
0
821 }
never executed: end of block
0
822-
823 polishAndSync(w, true);-
824-
825 startOrStopAnimationTimer();-
826}
never executed: end of block
0
827-
828void QSGSoftwareThreadedRenderLoop::handleObscurity(QSGSoftwareThreadedRenderLoop::WindowData *w)-
829{-
830 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 880, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "handleObscurity" << w->window;
never executed: QMessageLogger(__FILE__, 880, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "handleObscurity" << w->window;
0
831-
832 if (w->thread->isRunning()
w->thread->isRunning()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
833 w->thread->mutex.lock();-
834 w->thread->postEvent(new QSGSoftwareWindowEvent(w->window, WM_Obscure));-
835 w->thread->waitCondition.wait(&w->thread->mutex);-
836 w->thread->mutex.unlock();-
837 }
never executed: end of block
0
838-
839 startOrStopAnimationTimer();-
840}
never executed: end of block
0
841-
842void QSGSoftwareThreadedRenderLoop::scheduleUpdate(QSGSoftwareThreadedRenderLoop::WindowData *w)-
843{-
844 if (!QCoreApplication::instance()
!QCoreApplication::instance()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
845 return;
never executed: return;
0
846-
847 if (!w
!wDescription
TRUEnever evaluated
FALSEnever evaluated
|| !w->thread->isRunning()
!w->thread->isRunning()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
848 return;
never executed: return;
0
849-
850 QThread *current = QThread::currentThread();-
851 if (current != QCoreApplication::instance()->thread()
current != QCo...ce()->thread()Description
TRUEnever evaluated
FALSEnever evaluated
&& (current != w->thread
current != w->threadDescription
TRUEnever evaluated
FALSEnever evaluated
|| !lockedForSync
!lockedForSyncDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0
852 QMessageLogger(__FILE__, 902, __PRETTY_FUNCTION__).warning() << "Updates can only be scheduled from GUI thread or from QQuickItem::updatePaintNode()";-
853 return;
never executed: return;
0
854 }-
855-
856 if (current == w->thread
current == w->threadDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
857 w->updateDuringSync = true;-
858 return;
never executed: return;
0
859 }-
860-
861 w->window->requestUpdate();-
862}
never executed: end of block
0
863-
864void QSGSoftwareThreadedRenderLoop::handleResourceRelease(QSGSoftwareThreadedRenderLoop::WindowData *w, bool destroying)-
865{-
866 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 916, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "handleResourceRelease" << (destroying ? "destroying" : "hide/releaseResources") << w->window;
never executed: QMessageLogger(__FILE__, 916, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "handleResourceRelease" << (destroying ? "destroying" : "hide/releaseResources") << w->window;
0
867-
868 w->thread->mutex.lock();-
869 if (w->thread->isRunning()
w->thread->isRunning()Description
TRUEnever evaluated
FALSEnever evaluated
&& w->thread->active
w->thread->activeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
870 QQuickWindow *window = w->window;-
871-
872-
873-
874-
875-
876 w->thread->postEvent(new QSGSoftwareTryReleaseEvent(window, destroying));-
877 w->thread->waitCondition.wait(&w->thread->mutex);-
878-
879-
880-
881-
882-
883-
884-
885 if (!w->thread->active
!w->thread->activeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
886 w->thread->wait();
never executed: w->thread->wait();
0
887 }
never executed: end of block
0
888 w->thread->mutex.unlock();-
889}
never executed: end of block
0
890-
891void QSGSoftwareThreadedRenderLoop::polishAndSync(QSGSoftwareThreadedRenderLoop::WindowData *w, bool inExpose)-
892{-
893 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 943, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "polishAndSync" << (inExpose ? "(in expose)" : "(normal)") << w->window;
never executed: QMessageLogger(__FILE__, 943, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug() << "polishAndSync" << (inExpose ? "(in expose)" : "(normal)") << w->window;
0
894-
895 QQuickWindow *window = w->window;-
896 if (!w->thread
!w->threadDescription
TRUEnever evaluated
FALSEnever evaluated
|| !w->thread->exposedWindow
!w->thread->exposedWindowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
897 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 947, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("polishAndSync - not exposed, abort");
never executed: QMessageLogger(__FILE__, 947, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("polishAndSync - not exposed, abort");
0
898 return;
never executed: return;
0
899 }-
900-
901-
902 QQuickWindowPrivate::get(window)->flushFrameSynchronousEvents();-
903-
904 w = windowFor(m_windows, window);-
905 if (!w
!wDescription
TRUEnever evaluated
FALSEnever evaluated
|| !w->thread
!w->threadDescription
TRUEnever evaluated
FALSEnever evaluated
|| !w->thread->exposedWindow
!w->thread->exposedWindowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
906 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 956, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("polishAndSync - removed after touch event flushing, abort");
never executed: QMessageLogger(__FILE__, 956, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("polishAndSync - removed after touch event flushing, abort");
0
907 return;
never executed: return;
0
908 }-
909-
910 if (QQuickProfiler::featuresEnabled & (1 << QQuickProfiler::ProfileSceneGraph)
QQuickProfiler...ileSceneGraph)Description
TRUEnever evaluated
FALSEnever evaluated
) { (QQuickProfiler::startSceneGraphFrame<QQuickProfiler::SceneGraphPolishAndSync>()); }
never executed: end of block
else (
never executed: (void)0;
void)0;
never executed: (void)0;
0
911-
912 QQuickWindowPrivate *wd = QQuickWindowPrivate::get(window);-
913 wd->polishItems();-
914-
915 if (QQuickProfiler::featuresEnabled & (1 << QQuickProfiler::ProfileSceneGraph)
QQuickProfiler...ileSceneGraph)Description
TRUEnever evaluated
FALSEnever evaluated
) { (QQuickProfiler::recordSceneGraphTimestamp<QQuickProfiler::SceneGraphPolishAndSync>(QQuickProfiler::SceneGraphPolishAndSyncPolish)); }
never executed: end of block
else (
never executed: (void)0 ;
void)0
never executed: (void)0 ;
0
916 ;
never executed: (void)0 ;
0
917-
918 w->updateDuringSync = false;-
919-
920 window->afterAnimating();-
921-
922 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 972, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("polishAndSync - lock for sync");
never executed: QMessageLogger(__FILE__, 972, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("polishAndSync - lock for sync");
0
923 w->thread->mutex.lock();-
924 lockedForSync = true;-
925 w->thread->postEvent(new QSGSoftwareSyncEvent(window, inExpose, w->forceRenderPass));-
926 w->forceRenderPass = false;-
927-
928 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 978, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("polishAndSync - wait for sync");
never executed: QMessageLogger(__FILE__, 978, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("polishAndSync - wait for sync");
0
929-
930 if (QQuickProfiler::featuresEnabled & (1 << QQuickProfiler::ProfileSceneGraph)
QQuickProfiler...ileSceneGraph)Description
TRUEnever evaluated
FALSEnever evaluated
) { (QQuickProfiler::recordSceneGraphTimestamp<QQuickProfiler::SceneGraphPolishAndSync>(QQuickProfiler::SceneGraphPolishAndSyncWait)); }
never executed: end of block
else (
never executed: (void)0 ;
void)0
never executed: (void)0 ;
0
931 ;
never executed: (void)0 ;
0
932 w->thread->waitCondition.wait(&w->thread->mutex);-
933 lockedForSync = false;-
934 w->thread->mutex.unlock();-
935 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 985, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("polishAndSync - unlock after sync");
never executed: QMessageLogger(__FILE__, 985, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("polishAndSync - unlock after sync");
0
936-
937 if (QQuickProfiler::featuresEnabled & (1 << QQuickProfiler::ProfileSceneGraph)
QQuickProfiler...ileSceneGraph)Description
TRUEnever evaluated
FALSEnever evaluated
) { (QQuickProfiler::recordSceneGraphTimestamp<QQuickProfiler::SceneGraphPolishAndSync>(QQuickProfiler::SceneGraphPolishAndSyncSync)); }
never executed: end of block
else (
never executed: (void)0 ;
void)0
never executed: (void)0 ;
0
938 ;
never executed: (void)0 ;
0
939-
940 if (!animationTimer
!animationTimerDescription
TRUEnever evaluated
FALSEnever evaluated
&& m_anim->isRunning()
m_anim->isRunning()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
941 for (bool qt_category_enabled = QSG_RASTER_LOG_RENDERLOOP().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 991, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("polishAndSync - advancing animations");
never executed: QMessageLogger(__FILE__, 991, __PRETTY_FUNCTION__, QSG_RASTER_LOG_RENDERLOOP().categoryName()).debug("polishAndSync - advancing animations");
0
942 m_anim->advance();-
943-
944 w->window->requestUpdate();-
945 timeToIncubate();-
946 }
never executed: end of block
else if (w->updateDuringSync
w->updateDuringSyncDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
947 w->window->requestUpdate();-
948 }
never executed: end of block
0
949-
950 if (QQuickProfiler::featuresEnabled & (1 << QQuickProfiler::ProfileSceneGraph)
QQuickProfiler...ileSceneGraph)Description
TRUEnever evaluated
FALSEnever evaluated
) { (QQuickProfiler::reportSceneGraphFrame<QQuickProfiler::SceneGraphPolishAndSync, true>(QQuickProfiler::SceneGraphPolishAndSyncAnimations)); }
never executed: end of block
else (
never executed: (void)0 ;
void)0
never executed: (void)0 ;
0
951 ;
never executed: (void)0 ;
0
952}-
953-
954-
955-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.0