diff options
-rw-r--r-- | src/plugins/qmlprofiler/inputeventsmodel.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmlprofiler/inputeventsmodel.h | 2 | ||||
-rw-r--r-- | src/plugins/qmlprofiler/qmleventtype.cpp | 11 | ||||
-rw-r--r-- | src/plugins/qmlprofiler/qmlprofilereventtypes.h | 29 | ||||
-rw-r--r-- | src/plugins/qmlprofiler/qmlprofilertraceclient.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmlprofiler/qmltypedevent.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmlprofiler/quick3dmodel.cpp | 4 | ||||
-rw-r--r-- | src/plugins/qmlprofiler/tests/qmleventtype_test.cpp | 26 | ||||
-rw-r--r-- | src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.cpp | 4 |
9 files changed, 55 insertions, 27 deletions
diff --git a/src/plugins/qmlprofiler/inputeventsmodel.cpp b/src/plugins/qmlprofiler/inputeventsmodel.cpp index 088a9acdcb4..748aeab6e08 100644 --- a/src/plugins/qmlprofiler/inputeventsmodel.cpp +++ b/src/plugins/qmlprofiler/inputeventsmodel.cpp @@ -154,6 +154,8 @@ int InputEventsModel::collapsedRow(int index) const void InputEventsModel::loadEvent(const QmlEvent &event, const QmlEventType &type) { + if (type.detailType() >= MaximumInputEventType) + return; m_data.insert(insert(event.timestamp(), 0, type.detailType()), Item(static_cast<InputEventType>(event.number<qint32>(0)), event.number<qint32>(1), event.number<qint32>(2))); diff --git a/src/plugins/qmlprofiler/inputeventsmodel.h b/src/plugins/qmlprofiler/inputeventsmodel.h index dbd1515894d..bdfcf1dc241 100644 --- a/src/plugins/qmlprofiler/inputeventsmodel.h +++ b/src/plugins/qmlprofiler/inputeventsmodel.h @@ -36,7 +36,7 @@ class InputEventsModel : public QmlProfilerTimelineModel public: struct Item { - Item(InputEventType type = MaximumInputEventType, int a = 0, int b = 0); + Item(InputEventType type = UndefinedInputEventType, int a = 0, int b = 0); InputEventType type; int a; int b; diff --git a/src/plugins/qmlprofiler/qmleventtype.cpp b/src/plugins/qmlprofiler/qmleventtype.cpp index 4963b684959..7557b81aa6b 100644 --- a/src/plugins/qmlprofiler/qmleventtype.cpp +++ b/src/plugins/qmlprofiler/qmleventtype.cpp @@ -39,7 +39,7 @@ static ProfileFeature qmlFeatureFromType(Message message, RangeType rangeType, i case AnimationFrame: return ProfileAnimations; default: - return MaximumProfileFeature; + return UndefinedProfileFeature; } } case PixmapCacheEvent: @@ -51,7 +51,11 @@ static ProfileFeature qmlFeatureFromType(Message message, RangeType rangeType, i case DebugMessage: return ProfileDebugMessages; case Quick3DEvent: - return ProfileQuick3D; + // Check if it's actually Quick3DEvent since old traces used MaximumMessage + // (whose value is now Quick3DEvent value) as undefined value + if (rangeType == UndefinedRangeType) + return ProfileQuick3D; + return featureFromRangeType(rangeType); default: return featureFromRangeType(rangeType); } @@ -68,6 +72,9 @@ QDataStream &operator>>(QDataStream &stream, QmlEventType &type) type.m_message = static_cast<Message>(message); type.m_rangeType = static_cast<RangeType>(rangeType); type.setFeature(qmlFeatureFromType(type.m_message, type.m_rangeType, type.m_detailType)); + // Update message if qmlFeatureFromType determined it is not Quick3D event + if (type.m_message == Quick3DEvent && type.feature() != ProfileQuick3D) + type.m_message = UndefinedMessage; return stream; } diff --git a/src/plugins/qmlprofiler/qmlprofilereventtypes.h b/src/plugins/qmlprofiler/qmlprofilereventtypes.h index b8bc25e5e99..d5f74750282 100644 --- a/src/plugins/qmlprofiler/qmlprofilereventtypes.h +++ b/src/plugins/qmlprofiler/qmlprofilereventtypes.h @@ -47,7 +47,8 @@ enum Message { }; enum EventType { - FramePaint, // unused + UndefinedEventType = 0xff, + FramePaint = 0, // unused Mouse, Key, AnimationFrame, // new Qt5 paint events @@ -58,7 +59,8 @@ enum EventType { }; enum Quick3DEventType { - Quick3DRenderFrame, + UndefinedQuick3DEventType = 0xff, + Quick3DRenderFrame = 0, Quick3DSynchronizeFrame, Quick3DPrepareFrame, Quick3DMeshLoad, @@ -85,7 +87,8 @@ enum RangeType { }; enum BindingType { - QmlBinding, + UndefinedBindingType = 0xff, + QmlBinding = 0, V8Binding, OptimizedBinding, QPainterEvent, @@ -94,7 +97,8 @@ enum BindingType { }; enum PixmapEventType { - PixmapSizeKnown, + UndefinedPixmapEventType = 0xff, + PixmapSizeKnown = 0, PixmapReferenceCountChanged, PixmapCacheCountChanged, PixmapLoadingStarted, @@ -105,7 +109,8 @@ enum PixmapEventType { }; enum InputEventType { - InputKeyPress, + UndefinedInputEventType = 0xff, + InputKeyPress = 0, InputKeyRelease, InputKeyUnknown, @@ -120,7 +125,8 @@ enum InputEventType { }; enum SceneGraphFrameType { - SceneGraphRendererFrame, // Render Thread + UndefinedSceheGraphFrameType = 0xff, + SceneGraphRendererFrame = 0, // Render Thread SceneGraphAdaptationLayerFrame, // Render Thread SceneGraphContextFrame, // Render Thread SceneGraphRenderLoopFrame, // Render Thread @@ -135,7 +141,8 @@ enum SceneGraphFrameType { }; enum MemoryType { - HeapPage, + UndefinedMemoryType = 0xff, + HeapPage = 0, LargeItem, SmallItem, @@ -143,14 +150,16 @@ enum MemoryType { }; enum AnimationThread { - GuiThread, + UndefinedAnimationThread = 0xff, + GuiThread = 0, RenderThread, MaximumAnimationThread }; enum ProfileFeature { - ProfileJavaScript, + UndefinedProfileFeature = 0xff, + ProfileJavaScript = 0, ProfileMemory, ProfilePixmapCache, ProfileSceneGraph, @@ -183,7 +192,7 @@ inline ProfileFeature featureFromRangeType(RangeType range) case Javascript: return ProfileJavaScript; default: - return MaximumProfileFeature; + return UndefinedProfileFeature; } } diff --git a/src/plugins/qmlprofiler/qmlprofilertraceclient.cpp b/src/plugins/qmlprofiler/qmlprofilertraceclient.cpp index a7e01208c0e..193b5c3414a 100644 --- a/src/plugins/qmlprofiler/qmlprofilertraceclient.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertraceclient.cpp @@ -350,6 +350,8 @@ void QmlProfilerTraceClient::setFlushInterval(quint32 flushInterval) bool QmlProfilerTraceClientPrivate::updateFeatures(quint8 feature) { + if (feature == UndefinedProfileFeature) + return true; quint64 flag = 1ULL << feature; if (!(requestedFeatures & flag)) return false; diff --git a/src/plugins/qmlprofiler/qmltypedevent.cpp b/src/plugins/qmlprofiler/qmltypedevent.cpp index e79080d48e8..105eb644abf 100644 --- a/src/plugins/qmlprofiler/qmltypedevent.cpp +++ b/src/plugins/qmlprofiler/qmltypedevent.cpp @@ -54,6 +54,8 @@ QDataStream &operator>>(QDataStream &stream, QmlTypedEvent &event) switch (messageType) { case Event: { + if (subtype >= MaximumEventType) + subtype = UndefinedEventType; event.type = QmlEventType(static_cast<Message>(messageType), UndefinedRangeType, subtype); switch (subtype) { case StartTrace: diff --git a/src/plugins/qmlprofiler/quick3dmodel.cpp b/src/plugins/qmlprofiler/quick3dmodel.cpp index be521818456..aa5efd426e0 100644 --- a/src/plugins/qmlprofiler/quick3dmodel.cpp +++ b/src/plugins/qmlprofiler/quick3dmodel.cpp @@ -156,7 +156,9 @@ int Quick3DModel::collapsedRow(int index) const void Quick3DModel::loadEvent(const QmlEvent &event, const QmlEventType &type) { - auto detailType = type.detailType(); + int detailType = type.detailType(); + if (detailType >= MaximumQuick3DFrameType) + return; qint64 eventDuration = event.number<qint64>(0); qint64 eventTime = event.timestamp() - eventDuration; QVector<quint64> numbers = event.numbers<QVector<quint64>>(); diff --git a/src/plugins/qmlprofiler/tests/qmleventtype_test.cpp b/src/plugins/qmlprofiler/tests/qmleventtype_test.cpp index a43a72581ba..7e82ae17c83 100644 --- a/src/plugins/qmlprofiler/tests/qmleventtype_test.cpp +++ b/src/plugins/qmlprofiler/tests/qmleventtype_test.cpp @@ -43,7 +43,7 @@ void QmlEventTypeTest::testAccessors() QVERIFY(!type.location().isValid()); QVERIFY(type.data().isEmpty()); QVERIFY(type.displayName().isEmpty()); - QCOMPARE(static_cast<ProfileFeature>(type.feature()), MaximumProfileFeature); + QCOMPARE(static_cast<ProfileFeature>(type.feature()), UndefinedProfileFeature); type.setLocation(QmlEventLocation("blah.js", 12, 13)); QCOMPARE(type.location().filename(), QString("blah.js")); @@ -71,23 +71,23 @@ void QmlEventTypeTest::testFeature() { const quint8 features[][MaximumEventType] = { // Event - {MaximumProfileFeature, ProfileInputEvents, ProfileInputEvents, - ProfileAnimations, MaximumProfileFeature, MaximumProfileFeature}, + {UndefinedProfileFeature, ProfileInputEvents, ProfileInputEvents, + ProfileAnimations, UndefinedProfileFeature, UndefinedProfileFeature}, // RangeStart - {MaximumProfileFeature, MaximumProfileFeature, MaximumProfileFeature, - MaximumProfileFeature, MaximumProfileFeature, MaximumProfileFeature}, + {UndefinedProfileFeature, UndefinedProfileFeature, UndefinedProfileFeature, + UndefinedProfileFeature, UndefinedProfileFeature, UndefinedProfileFeature}, // RangeData - {MaximumProfileFeature, MaximumProfileFeature, MaximumProfileFeature, - MaximumProfileFeature, MaximumProfileFeature, MaximumProfileFeature}, + {UndefinedProfileFeature, UndefinedProfileFeature, UndefinedProfileFeature, + UndefinedProfileFeature, UndefinedProfileFeature, UndefinedProfileFeature}, // RangeLocation - {MaximumProfileFeature, MaximumProfileFeature, MaximumProfileFeature, - MaximumProfileFeature, MaximumProfileFeature, MaximumProfileFeature}, + {UndefinedProfileFeature, UndefinedProfileFeature, UndefinedProfileFeature, + UndefinedProfileFeature, UndefinedProfileFeature, UndefinedProfileFeature}, // RangeEnd - {MaximumProfileFeature, MaximumProfileFeature, MaximumProfileFeature, - MaximumProfileFeature, MaximumProfileFeature, MaximumProfileFeature}, + {UndefinedProfileFeature, UndefinedProfileFeature, UndefinedProfileFeature, + UndefinedProfileFeature, UndefinedProfileFeature, UndefinedProfileFeature}, // Complete - {MaximumProfileFeature, MaximumProfileFeature, MaximumProfileFeature, - MaximumProfileFeature, MaximumProfileFeature, MaximumProfileFeature}, + {UndefinedProfileFeature, UndefinedProfileFeature, UndefinedProfileFeature, + UndefinedProfileFeature, UndefinedProfileFeature, UndefinedProfileFeature}, // PixmapCacheEvent {ProfilePixmapCache, ProfilePixmapCache, ProfilePixmapCache, ProfilePixmapCache, ProfilePixmapCache, ProfilePixmapCache}, diff --git a/src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.cpp b/src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.cpp index 055e5ef000b..dbb55fac793 100644 --- a/src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.cpp +++ b/src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.cpp @@ -80,6 +80,10 @@ void QmlProfilerTraceClientTest::testMessageReceived() quint8 message; quint8 rangeType; checkStream >> timestamp >> message >> rangeType; + QVERIFY(message != MaximumMessage); + QVERIFY(rangeType != MaximumRangeType); + QVERIFY(type.message() != MaximumMessage); + QVERIFY(type.rangeType() != MaximumRangeType); QCOMPARE(event.timestamp(), timestamp); QCOMPARE(type.message(), static_cast<Message>(message)); QCOMPARE(type.rangeType(), static_cast<RangeType>(rangeType)); |