12QDataStream &operator>>(QDataStream &stream, QQmlProfilerTypedEvent &event)
18 stream >> time >> messageType;
20 if (messageType < 0 || messageType > MaximumMessage)
21 messageType = MaximumMessage;
23 RangeType rangeType = MaximumRangeType;
24 if (!stream.atEnd()) {
26 if (subtype >= 0 && subtype < MaximumRangeType)
27 rangeType =
static_cast<RangeType>(subtype);
32 event.event.setTimestamp(time > 0 ? time : 0);
33 event.event.setTypeIndex(-1);
34 event.serverTypeId = 0;
36 switch (messageType) {
38 event.type = QQmlProfilerEventType(
39 static_cast<Message>(messageType),
40 MaximumRangeType, subtype);
44 QVarLengthArray<qint32> engineIds;
45 while (!stream.atEnd()) {
50 event.event.setNumbers<QVarLengthArray<qint32>, qint32>(engineIds);
53 case AnimationFrame: {
54 qint32 frameRate, animationCount;
56 stream >> frameRate >> animationCount;
62 event.event.setNumbers<qint32>({frameRate, animationCount, threadId});
67 int inputType = (subtype == Key ? InputKeyUnknown : InputMouseUnknown);
77 event.event.setNumbers<qint32>({inputType, a, b});
84 event.type = QQmlProfilerEventType(
85 static_cast<Message>(messageType),
86 MaximumRangeType, subtype);
89 case SceneGraphFrame: {
90 QVarLengthArray<qint64> params;
93 while (!stream.atEnd()) {
95 params.push_back(param);
98 event.type = QQmlProfilerEventType(
99 static_cast<Message>(messageType),
100 MaximumRangeType, subtype);
101 event.event.setNumbers<QVarLengthArray<qint64>, qint64>(params);
104 case PixmapCacheEvent: {
105 qint32 width = 0, height = 0, refcount = 0;
108 if (subtype == PixmapReferenceCountChanged || subtype == PixmapCacheCountChanged) {
110 }
else if (subtype == PixmapSizeKnown) {
111 stream >> width >> height;
115 event.type = QQmlProfilerEventType(
116 static_cast<Message>(messageType),
117 MaximumRangeType, subtype,
118 QQmlProfilerEventLocation(filename, 0, 0));
119 event.event.setNumbers<qint32>({width, height, refcount});
122 case MemoryAllocation: {
126 event.type = QQmlProfilerEventType(
127 static_cast<Message>(messageType),
128 MaximumRangeType, subtype);
129 event.event.setNumbers<qint64>({delta});
133 if (!stream.atEnd()) {
136 if (stream.status() == QDataStream::Ok)
137 event.serverTypeId = typeId;
141 event.type = QQmlProfilerEventType(MaximumMessage, rangeType, -1);
142 event.event.setRangeStage(RangeStart);
149 event.type = QQmlProfilerEventType(MaximumMessage, rangeType, -1,
150 QQmlProfilerEventLocation(), data);
151 event.event.setRangeStage(RangeData);
153 stream >> event.serverTypeId;
156 case RangeLocation: {
160 stream >> filename >> line;
162 if (!stream.atEnd()) {
165 stream >> event.serverTypeId;
168 event.type = QQmlProfilerEventType(MaximumMessage, rangeType, -1,
169 QQmlProfilerEventLocation(filename, line, column));
170 event.event.setRangeStage(RangeLocation);
174 event.type = QQmlProfilerEventType(MaximumMessage, rangeType, -1);
175 event.event.setRangeStage(RangeEnd);
179 event.event.setNumbers<
char>({});
180 event.type = QQmlProfilerEventType(
181 static_cast<Message>(messageType),
182 MaximumRangeType, subtype);