QmlProfiler: Support additional attributes of input events

Change-Id: I92a28d0476ad814601f33b76e508bdbea02eefff
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
This commit is contained in:
Ulf Hermann
2015-10-23 17:46:59 +02:00
parent db64434b40
commit 834883b0fb
3 changed files with 45 additions and 7 deletions

View File

@@ -91,6 +91,21 @@ enum PixmapEventType {
MaximumPixmapEventType MaximumPixmapEventType
}; };
enum InputEventType {
InputKeyPress,
InputKeyRelease,
InputKeyUnknown,
InputMousePress,
InputMouseRelease,
InputMouseMove,
InputMouseDoubleClick,
InputMouseWheel,
InputMouseUnknown,
MaximumInputEventType
};
enum SceneGraphFrameType { enum SceneGraphFrameType {
SceneGraphRendererFrame, // Render Thread SceneGraphRendererFrame, // Render Thread
SceneGraphAdaptationLayerFrame, // Render Thread SceneGraphAdaptationLayerFrame, // Render Thread

View File

@@ -251,9 +251,18 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data)
case Mouse: case Mouse:
if (!d->updateFeatures(ProfileInputEvents)) if (!d->updateFeatures(ProfileInputEvents))
break; break;
int inputType = (subtype == Key ? InputKeyUnknown : InputMouseUnknown);
if (!stream.atEnd())
stream >> inputType;
int a = -1;
if (!stream.atEnd())
stream >> a;
int b = -1;
if (!stream.atEnd())
stream >> b;
emit this->rangedEvent(Event, MaximumRangeType, subtype, time, 0, QString(), emit rangedEvent(Event, MaximumRangeType, subtype, time, 0, QString(),
QmlEventLocation(), 0, 0, 0, 0, 0); QmlEventLocation(), inputType, a, b, 0, 0);
d->maximumTime = qMax(time, d->maximumTime); d->maximumTime = qMax(time, d->maximumTime);
break; break;
} }

View File

@@ -411,6 +411,12 @@ void QmlProfilerFileReader::loadProfilerDataModel(QXmlStreamReader &stream)
range.numericData4 = attributes.value(_("timing4")).toString().toLongLong(); range.numericData4 = attributes.value(_("timing4")).toString().toLongLong();
if (attributes.hasAttribute(_("timing5"))) if (attributes.hasAttribute(_("timing5")))
range.numericData5 = attributes.value(_("timing5")).toString().toLongLong(); range.numericData5 = attributes.value(_("timing5")).toString().toLongLong();
if (attributes.hasAttribute(_("type")))
range.numericData1 = attributes.value(_("type")).toString().toLongLong();
if (attributes.hasAttribute(_("data1")))
range.numericData2 = attributes.value(_("data1")).toString().toLongLong();
if (attributes.hasAttribute(_("data2")))
range.numericData3 = attributes.value(_("data2")).toString().toLongLong();
range.typeIndex = attributes.value(_("eventIndex")).toString().toInt(); range.typeIndex = attributes.value(_("eventIndex")).toString().toInt();
@@ -601,11 +607,19 @@ void QmlProfilerFileWriter::save(QIODevice *device)
const QmlProfilerDataModel::QmlEventTypeData &event = m_qmlEvents[range.typeIndex]; const QmlProfilerDataModel::QmlEventTypeData &event = m_qmlEvents[range.typeIndex];
// special: animation event
if (event.message == Event && event.detailType == AnimationFrame) { if (event.message == Event) {
stream.writeAttribute(_("framerate"), QString::number(range.numericData1)); if (event.detailType == AnimationFrame) {
stream.writeAttribute(_("animationcount"), QString::number(range.numericData2)); // special: animation event
stream.writeAttribute(_("thread"), QString::number(range.numericData3)); stream.writeAttribute(_("framerate"), QString::number(range.numericData1));
stream.writeAttribute(_("animationcount"), QString::number(range.numericData2));
stream.writeAttribute(_("thread"), QString::number(range.numericData3));
} else if (event.detailType == Key || event.detailType == Mouse) {
// special: input event
stream.writeAttribute(_("type"), QString::number(range.numericData1));
stream.writeAttribute(_("data1"), QString::number(range.numericData2));
stream.writeAttribute(_("data2"), QString::number(range.numericData3));
}
} }
// special: pixmap cache event // special: pixmap cache event