aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmldebug
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-11-16 01:00:48 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-11-16 01:00:49 +0100
commit0ae32e678eedf7450a0d7291bfb27925874de462 (patch)
tree8ee7d6e6ae56a9963a966ffe59283675e9849b29 /src/qmldebug
parentfe1f81484bf9d9ace1d8125498a7ce889ba5bddc (diff)
parent87265c7ab8743ece92262cd6b79bbba9dddd1fe1 (diff)
Merge remote-tracking branch 'origin/5.12' into dev
Diffstat (limited to 'src/qmldebug')
-rw-r--r--src/qmldebug/qqmlprofilerclient.cpp16
-rw-r--r--src/qmldebug/qqmlprofilerclient_p_p.h1
2 files changed, 12 insertions, 5 deletions
diff --git a/src/qmldebug/qqmlprofilerclient.cpp b/src/qmldebug/qqmlprofilerclient.cpp
index 73db2ad94d..5477af89d4 100644
--- a/src/qmldebug/qqmlprofilerclient.cpp
+++ b/src/qmldebug/qqmlprofilerclient.cpp
@@ -95,11 +95,16 @@ int QQmlProfilerClientPrivate::resolveStackTop()
void QQmlProfilerClientPrivate::forwardEvents(const QQmlProfilerEvent &last)
{
+ forwardDebugMessages(last.timestamp());
+ eventReceiver->addEvent(last);
+}
+
+void QQmlProfilerClientPrivate::forwardDebugMessages(qint64 untilTimestamp)
+{
while (!pendingDebugMessages.isEmpty()
- && pendingDebugMessages.front().timestamp() <= last.timestamp()) {
+ && pendingDebugMessages.front().timestamp() <= untilTimestamp) {
eventReceiver->addEvent(pendingDebugMessages.dequeue());
}
- eventReceiver->addEvent(last);
}
void QQmlProfilerClientPrivate::processCurrentEvent()
@@ -142,7 +147,7 @@ void QQmlProfilerClientPrivate::processCurrentEvent()
int typeIndex = resolveType(currentEvent);
currentEvent.event.setTypeIndex(typeIndex);
if (rangesInProgress.isEmpty())
- eventReceiver->addEvent(currentEvent.event);
+ forwardEvents(currentEvent.event);
else
pendingMessages.enqueue(currentEvent.event);
break;
@@ -228,8 +233,7 @@ void QQmlProfilerClientPrivate::finalize()
currentEvent.event.setTimestamp(maximumTime);
processCurrentEvent();
}
- while (!pendingDebugMessages.isEmpty())
- eventReceiver->addEvent(pendingDebugMessages.dequeue());
+ forwardDebugMessages(std::numeric_limits<qint64>::max());
}
@@ -345,12 +349,14 @@ void QQmlProfilerClient::messageReceived(const QByteArray &data)
&& d->currentEvent.type.detailType() == StartTrace) {
const QList<int> engineIds = d->currentEvent.event.numbers<QList<int>, qint32>();
d->trackedEngines.append(engineIds);
+ d->forwardDebugMessages(d->currentEvent.event.timestamp());
emit traceStarted(d->currentEvent.event.timestamp(), engineIds);
} else if (d->currentEvent.type.message() == Event
&& d->currentEvent.type.detailType() == EndTrace) {
const QList<int> engineIds = d->currentEvent.event.numbers<QList<int>, qint32>();
for (int engineId : engineIds)
d->trackedEngines.removeAll(engineId);
+ d->forwardDebugMessages(d->currentEvent.event.timestamp());
emit traceFinished(d->currentEvent.event.timestamp(), engineIds);
} else if (d->updateFeatures(d->currentEvent.type.feature())) {
d->processCurrentEvent();
diff --git a/src/qmldebug/qqmlprofilerclient_p_p.h b/src/qmldebug/qqmlprofilerclient_p_p.h
index df73209858..52d42eae82 100644
--- a/src/qmldebug/qqmlprofilerclient_p_p.h
+++ b/src/qmldebug/qqmlprofilerclient_p_p.h
@@ -86,6 +86,7 @@ public:
int resolveType(const QQmlProfilerTypedEvent &type);
int resolveStackTop();
void forwardEvents(const QQmlProfilerEvent &last);
+ void forwardDebugMessages(qint64 untilTimestamp);
void processCurrentEvent();
void finalize();