11QDataStream &operator>>(QDataStream &stream, QQmlProfilerTypedEvent &event)
17 stream >> time >> messageType;
19 if (messageType < 0 || messageType > MaximumMessage)
20 messageType = MaximumMessage;
22 RangeType rangeType = MaximumRangeType;
23 if (!stream.atEnd()) {
25 if (subtype >= 0 && subtype < MaximumRangeType)
26 rangeType =
static_cast<RangeType>(subtype);
31 event.event.setTimestamp(time > 0 ? time : 0);
32 event.event.setTypeIndex(-1);
33 event.serverTypeId = 0;
35 switch (messageType) {
37 event.type = QQmlProfilerEventType(
38 static_cast<Message>(messageType),
39 MaximumRangeType, subtype);
43 QVarLengthArray<qint32> engineIds;
44 while (!stream.atEnd()) {
49 event.event.setNumbers<QVarLengthArray<qint32>, qint32>(engineIds);
52 case AnimationFrame: {
53 qint32 frameRate, animationCount;
55 stream >> frameRate >> animationCount;
61 event.event.setNumbers<qint32>({frameRate, animationCount, threadId});
66 int inputType = (subtype == Key ? InputKeyUnknown : InputMouseUnknown);
76 event.event.setNumbers<qint32>({inputType, a, b});
83 event.type = QQmlProfilerEventType(
84 static_cast<Message>(messageType),
85 MaximumRangeType, subtype);
88 case SceneGraphFrame: {
89 QVarLengthArray<qint64> params;
92 while (!stream.atEnd()) {
94 params.push_back(param);
97 event.type = QQmlProfilerEventType(
98 static_cast<Message>(messageType),
99 MaximumRangeType, subtype);
100 event.event.setNumbers<QVarLengthArray<qint64>, qint64>(params);
103 case PixmapCacheEvent: {
104 qint32 width = 0, height = 0, refcount = 0;
107 if (subtype == PixmapReferenceCountChanged || subtype == PixmapCacheCountChanged) {
109 }
else if (subtype == PixmapSizeKnown) {
110 stream >> width >> height;
114 event.type = QQmlProfilerEventType(
115 static_cast<Message>(messageType),
116 MaximumRangeType, subtype,
117 QQmlProfilerEventLocation(filename, 0, 0));
118 event.event.setNumbers<qint32>({width, height, refcount});
121 case MemoryAllocation: {
125 event.type = QQmlProfilerEventType(
126 static_cast<Message>(messageType),
127 MaximumRangeType, subtype);
128 event.event.setNumbers<qint64>({delta});
132 if (!stream.atEnd()) {
135 if (stream.status() == QDataStream::Ok)
136 event.serverTypeId = typeId;
140 event.type = QQmlProfilerEventType(MaximumMessage, rangeType, -1);
141 event.event.setRangeStage(RangeStart);
148 event.type = QQmlProfilerEventType(MaximumMessage, rangeType, -1,
149 QQmlProfilerEventLocation(), data);
150 event.event.setRangeStage(RangeData);
152 stream >> event.serverTypeId;
155 case RangeLocation: {
159 stream >> filename >> line;
161 if (!stream.atEnd()) {
164 stream >> event.serverTypeId;
167 event.type = QQmlProfilerEventType(MaximumMessage, rangeType, -1,
168 QQmlProfilerEventLocation(filename, line, column));
169 event.event.setRangeStage(RangeLocation);
173 event.type = QQmlProfilerEventType(MaximumMessage, rangeType, -1);
174 event.event.setRangeStage(RangeEnd);
178 event.event.setNumbers<
char>({});
179 event.type = QQmlProfilerEventType(
180 static_cast<Message>(messageType),
181 MaximumRangeType, subtype);