OpenCoverage

qquickprofiler.cpp

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/quick/util/qquickprofiler.cpp
Source codeSwitch to Preprocessed file
LineSourceCount
1/****************************************************************************-
2**-
3** Copyright (C) 2016 The Qt Company Ltd.-
4** Contact: https://www.qt.io/licensing/-
5**-
6** This file is part of the QtQml module of the Qt Toolkit.-
7**-
8** $QT_BEGIN_LICENSE:LGPL$-
9** Commercial License Usage-
10** Licensees holding valid commercial Qt licenses may use this file in-
11** accordance with the commercial license agreement provided with the-
12** Software or, alternatively, in accordance with the terms contained in-
13** a written agreement between you and The Qt Company. For licensing terms-
14** and conditions see https://www.qt.io/terms-conditions. For further-
15** information use the contact form at https://www.qt.io/contact-us.-
16**-
17** GNU Lesser General Public License Usage-
18** Alternatively, this file may be used under the terms of the GNU Lesser-
19** General Public License version 3 as published by the Free Software-
20** Foundation and appearing in the file LICENSE.LGPL3 included in the-
21** packaging of this file. Please review the following information to-
22** ensure the GNU Lesser General Public License version 3 requirements-
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.-
24**-
25** GNU General Public License Usage-
26** Alternatively, this file may be used under the terms of the GNU-
27** General Public License version 2.0 or (at your option) the GNU General-
28** Public license version 3 or any later version approved by the KDE Free-
29** Qt Foundation. The licenses are as published by the Free Software-
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3-
31** included in the packaging of this file. Please review the following-
32** information to ensure the GNU General Public License requirements will-
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and-
34** https://www.gnu.org/licenses/gpl-3.0.html.-
35**-
36** $QT_END_LICENSE$-
37**-
38****************************************************************************/-
39-
40#include "qquickprofiler_p.h"-
41-
42#include <QtQml/private/qqmlabstractprofileradapter_p.h>-
43-
44#include <QtCore/qcoreapplication.h>-
45#include <QtCore/qthread.h>-
46-
47QT_BEGIN_NAMESPACE-
48-
49// instance will be set, unset in constructor. Allows static methods to be inlined.-
50QQuickProfiler *QQuickProfiler::s_instance = nullptr;-
51quint64 QQuickProfiler::featuresEnabled = 0;-
52-
53void QQuickProfiler::initialize(QObject *parent)-
54{-
55 Q_ASSERT(s_instance == nullptr);-
56 s_instance = new QQuickProfiler(parent);-
57}
executed 24 times by 3 tests: end of block
Executed by:
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmlprofilerservice
24
58-
59void animationTimerCallback(qint64 delta)-
60{-
61 Q_QUICK_PROFILE(QQuickProfiler::ProfileAnimations, animationFrame(delta,
executed 6 times by 1 test: end of block
Executed by:
  • tst_qqmlprofilerservice
never executed: (void)0 ;
QQuickProfiler...ileAnimations)Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_qqmlprofilerservice
FALSEnever evaluated
0-6
62 QThread::currentThread() == QCoreApplication::instance()->thread() ?
never executed: (void)0 ;
0
63 QQuickProfiler::GuiThread : QQuickProfiler::RenderThread));
never executed: (void)0 ;
0
64}-
65-
66void QQuickProfiler::registerAnimationCallback()-
67{-
68 QUnifiedTimer::instance()->registerProfilerCallback(&animationTimerCallback);-
69}
executed 24 times by 3 tests: end of block
Executed by:
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmlprofilerservice
24
70-
71class CallbackRegistrationHelper : public QObject {-
72 Q_OBJECT-
73public:-
74 void registerAnimationTimerCallback()-
75 {-
76 QQuickProfiler::registerAnimationCallback();-
77 delete this;-
78 }
executed 24 times by 3 tests: end of block
Executed by:
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmlprofilerservice
24
79};-
80-
81#include "qquickprofiler.moc"-
82#include "moc_qquickprofiler_p.cpp"-
83-
84QQuickProfiler::QQuickProfiler(QObject *parent) : QObject(parent)-
85{-
86 // This is safe because at this point the m_instance isn't initialized, yet.-
87 m_timer.start();-
88 CallbackRegistrationHelper *helper = new CallbackRegistrationHelper; // will delete itself-
89 helper->moveToThread(QCoreApplication::instance()->thread());-
90-
91 // Queue the signal to have the animation timer registration run in the right thread;-
92 QObject signalSource;-
93 connect(&signalSource, &QObject::destroyed,-
94 helper, &CallbackRegistrationHelper::registerAnimationTimerCallback,-
95 Qt::QueuedConnection);-
96}
executed 24 times by 3 tests: end of block
Executed by:
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmlprofilerservice
24
97-
98QQuickProfiler::~QQuickProfiler()-
99{-
100 QMutexLocker lock(&m_dataMutex);-
101 featuresEnabled = 0;-
102 s_instance = nullptr;-
103}
executed 24 times by 3 tests: end of block
Executed by:
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmlprofilerservice
24
104-
105void QQuickProfiler::startProfilingImpl(quint64 features)-
106{-
107 QMutexLocker lock(&m_dataMutex);-
108 featuresEnabled = features;-
109}
executed 6 times by 1 test: end of block
Executed by:
  • tst_qqmlprofilerservice
6
110-
111void QQuickProfiler::stopProfilingImpl()-
112{-
113 QMutexLocker lock(&m_dataMutex);-
114 featuresEnabled = 0;-
115 emit dataReady(m_data);-
116 m_data.clear();-
117}
executed 6 times by 1 test: end of block
Executed by:
  • tst_qqmlprofilerservice
6
118-
119void QQuickProfiler::reportDataImpl()-
120{-
121 QMutexLocker lock(&m_dataMutex);-
122 emit dataReady(m_data);-
123 m_data.clear();-
124}
never executed: end of block
0
125-
126void QQuickProfiler::setTimer(const QElapsedTimer &t)-
127{-
128 QMutexLocker lock(&m_dataMutex);-
129 m_timer = t;-
130}
executed 24 times by 3 tests: end of block
Executed by:
  • tst_qqmldebugjs
  • tst_qqmldebuglocal
  • tst_qqmlprofilerservice
24
131-
132QT_END_NAMESPACE-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.0