6#include <QCoreApplication>
7#include <private/qqmldebugconnector_p.h>
8#include <private/qversionedpacket_p.h>
9#include <private/qqmldebugserviceinterfaces_p.h>
10#include <private/qquickprofiler_p.h>
19 QQuickProfiler::initialize(
this);
34 connect(QQuickProfiler::s_instance, &QQuickProfiler::dataReady,
41 service->removeGlobalProfiler(
this);
50 "You can use at most 31 message types and 31 detail types.");
51 for (
uint decodedMessageType = 0; (
data.messageType >> decodedMessageType) != 0;
52 ++decodedMessageType) {
53 if ((
data.messageType & (1 << decodedMessageType)) == 0)
56 for (
uint decodedDetailType = 0; (
data.detailType >> decodedDetailType) != 0;
57 ++decodedDetailType) {
58 if ((
data.detailType & (1 << decodedDetailType)) == 0)
61 ds <<
data.time << decodedMessageType << decodedDetailType;
63 switch (decodedMessageType) {
64 case QQuickProfiler::Event:
65 switch (decodedDetailType) {
66 case QQuickProfiler::AnimationFrame:
69 case QQuickProfiler::Key:
70 case QQuickProfiler::Mouse:
75 case QQuickProfiler::PixmapCacheEvent:
76 ds <<
data.detailUrl.toString();
77 switch (decodedDetailType) {
78 case QQuickProfiler::PixmapSizeKnown: ds <<
data.x <<
data.y;
break;
79 case QQuickProfiler::PixmapReferenceCountChanged: ds <<
data.count;
break;
80 case QQuickProfiler::PixmapCacheCountChanged: ds <<
data.count;
break;
84 case QQuickProfiler::SceneGraphFrame:
85 switch (decodedDetailType) {
87 case QQuickProfiler::SceneGraphRendererFrame: ds <<
data.subtime_1 <<
data.subtime_2 <<
data.subtime_3 <<
data.subtime_4;
break;
89 case QQuickProfiler::SceneGraphAdaptationLayerFrame: ds <<
data.subtime_3 <<
data.subtime_1 <<
data.subtime_2;
break;
91 case QQuickProfiler::SceneGraphContextFrame: ds <<
data.subtime_1;
break;
93 case QQuickProfiler::SceneGraphRenderLoopFrame: ds <<
data.subtime_1 <<
data.subtime_2 <<
data.subtime_3;
break;
95 case QQuickProfiler::SceneGraphTexturePrepare: ds <<
data.subtime_1 <<
data.subtime_2 <<
data.subtime_3 <<
data.subtime_4 <<
data.subtime_5;
break;
97 case QQuickProfiler::SceneGraphTextureDeletion: ds <<
data.subtime_1;
break;
99 case QQuickProfiler::SceneGraphPolishAndSync: ds <<
data.subtime_1 <<
data.subtime_2 <<
data.subtime_3 <<
data.subtime_4;
break;
101 case QQuickProfiler::SceneGraphWindowsRenderShow: ds <<
data.subtime_1 <<
data.subtime_2 <<
data.subtime_3;
break;
103 case QQuickProfiler::SceneGraphWindowsAnimations: ds <<
data.subtime_1;
break;
105 case QQuickProfiler::SceneGraphPolishFrame: ds <<
data.subtime_1;
break;
121 while (next < m_data.size()) {
125 return m_data[next].time;
134 if (m_data.isEmpty())
137 m_data.append(new_data);
143#include "moc_qquickprofileradapter.cpp"
qsizetype size() const noexcept
void append(parameter_type t)
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
QByteArray squeezedData() const
Returns a copy of the raw packet data, with extra reserved space removed.
void clear()
Clears the packet, discarding any data.
void profilingEnabled(quint64 features)
void profilingEnabledWhileWaiting(quint64 features)
void referenceTimeKnown(const QElapsedTimer &timer)
QQmlProfilerService * service
static const int s_numMessagesPerBatch
void profilingDisabledWhileWaiting()
qint64 sendMessages(qint64 until, QList< QByteArray > &messages) override
void receiveData(const QVector< QQuickProfilerData > &new_data)
QQuickProfilerAdapter(QObject *parent=nullptr)
Combined button and popup list for selecting options.
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
static void qQuickProfilerDataToByteArrays(const QQuickProfilerData &data, QList< QByteArray > &messages)
#define Q_ASSERT_X(cond, x, msg)
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent