7#include <QtQml/private/qqmlabstractprofileradapter_p.h>
9#include <QtCore/qcoreapplication.h>
10#include <QtCore/qthread.h>
15QQuickProfiler *QQuickProfiler::s_instance =
nullptr;
16quint64 QQuickProfiler::featuresEnabled = 0;
18void QQuickProfiler::initialize(QObject *parent)
20 Q_ASSERT(s_instance ==
nullptr);
21 s_instance =
new QQuickProfiler(parent);
26 Q_QUICK_PROFILE(QQuickProfiler::ProfileAnimations, animationFrame(delta,
27 QThread::currentThread() == QCoreApplication::instance()->thread() ?
28 QQuickProfiler::GuiThread : QQuickProfiler::RenderThread));
31void QQuickProfiler::registerAnimationCallback()
33 QUnifiedTimer::instance()->registerProfilerCallback(&animationTimerCallback);
46QQuickProfiler::QQuickProfiler(QObject *parent) : QObject(parent)
50 CallbackRegistrationHelper *helper =
new CallbackRegistrationHelper;
51 helper->moveToThread(QCoreApplication::instance()->thread());
55 connect(&signalSource, &QObject::destroyed,
56 helper, &CallbackRegistrationHelper::registerAnimationTimerCallback,
57 Qt::QueuedConnection);
60QQuickProfiler::~QQuickProfiler()
62 QMutexLocker lock(&m_dataMutex);
67void QQuickProfiler::startProfilingImpl(quint64 features)
69 QMutexLocker lock(&m_dataMutex);
70 featuresEnabled = features;
73void QQuickProfiler::stopProfilingImpl()
75 QMutexLocker lock(&m_dataMutex);
77 emit dataReady(m_data);
81void QQuickProfiler::reportDataImpl()
83 QMutexLocker lock(&m_dataMutex);
84 emit dataReady(m_data);
88void QQuickProfiler::setTimer(
const QElapsedTimer &t)
90 QMutexLocker lock(&m_dataMutex);
96#include "qquickprofiler.moc"
97#include "moc_qquickprofiler_p.cpp"
void animationTimerCallback(qint64 delta)
#define Q_QUICK_PROFILE(feature, Method)