When talking about call stacks call them "caller" and "callee". Call
the invisible root item of the model "rootItem".
Change-Id: I551b23f1491d391145193901d3f3a29ab3942089
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
They aren't part of any public API and the pimpl pattern just gets in
the way here.
Also, initialize members inline where possible, remove redundant
deletes, prefer explicit ownership over parenting, and use
std::unique_ptr for owned objects and QPointer for non-owned QObjects.
Change-Id: Ibe1e1f88d0e38b6ca26544fccb1db6b809d1556b
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
None of the fields are ever unavailable, and they are always shown in
the same order, so we can just use the enums directly instead of a
mapping and an extra whitelist. This enables us to also drop some magic
numbers. In addition, none of the items have children. So we don't need
to expand or collapse them.
Change-Id: Ibf3d1933d1fb703f5d8e74ae5043c3d1db462738
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Double clicking an item will now rebuild the flame graph with that item
as root. Double clicking on an empty area will reset the root.
Change-Id: I16dd4b00d0dd09ff922a01acee67f0d553da6323
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This patch removes all references to QtQuick1 in qml library,
plugin, designer, profiler and tests.
Change-Id: Ie286fad96060299caae3ef328330597cf53e90d3
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
qglobalstatic.h:87:18: error: field ?value? has incomplete type ?QmlProfiler::Internal::{anonymous}::Q_QGS_qmlProfilerGlobalSettings::Type {aka QmlProfiler::Internal::QmlProfilerSettings}?
qglobalstatic.h:152:9: note: in expansion of macro ?Q_GLOBAL_STATIC_INTERNAL?
qglobalstatic.h:159:5: note: in expansion of macro ?Q_GLOBAL_STATIC_WITH_ARGS?
qmlprofilerplugin.cpp:79:1: note: in expansion of macro ?Q_GLOBAL_STATIC?
Change-Id: I940917d6763842499b18fffd1514e0f3522f3bbd
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
We may not have a valid kit at all, and then the test would fail.
Change-Id: Ie2613e67309121f0df847e76668bc433fd88c315
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
We QTC_ASSERT on the chosen kit having a device in
QmlProfilerTool::attachToWaitingApplication().
Change-Id: I04033f032c43f27726545dcdea4533b3ccbe7257
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
... to be able to remove an unneeded use of the global object pool.
Plus some code cosmetics.
Change-Id: Ifdb0ff9cd40820a34a8951563402a50a594e4fdd
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Holding the engines with EngineControl makes sure we always receive the
full trace before the connection drops.
Change-Id: I32e7d17886cdbc4749e3e54719e198d45169cbfe
Task-number: QTBUG-66269
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
The statistics view is not called "events" anymore.
Task-number: QTCREATORBUG-19658
Change-Id: Iff4375d3dc0cf5d82d118244698887818f924c07
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
Resolves a build conflict between e1ad7a1784
and cfd54505eb.
Change-Id: I70baec1ca2f388bc699866a134c9cb6f64203fdb
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
The QmlProfilerClientManager will only report connectionClosed() if the
connection was open before it dropped. If the connection never opens,
that is the hello message never arrives, it will retry a few times,
triggering the QTRY_VERIFY timeout.
We don't want the retries to succeed, so close the server after the
first connection. Furthermore we want the hello message to be
transferred before dropping the connection, so check for isConnected().
Change-Id: Ie96c48b2aaf2748d082c4bef3efe85c261ca4812
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
If the state is changed again from a signal handler before all handlers
for the signal have been processed, we can get confusing results. Defer
those calls.
Change-Id: I73f7b8faa48ee00c17fdedb4140823d7a1b13435
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
If you force-stop an application by closing the output tab, we don't get
a stopped() signal. In order to properly reset the UI we need to handle
the finished() signal then.
Change-Id: Ibab5faf86542a59c3eb3aa139bb3dc66afe89ce2
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
The scale parameters are converted to single precision float anyway as
soon as we do something with them. We might as well change all the
methods to be single precision, too.
The min/max row values should really be 64bit as 32bit values are not
enough to express memory usage.
Change-Id: I2b058b112286eabb1c077f7e746c48b6b99cb416
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
It wasn't really a singleton even before. For testing purposes make the
client/state/model managers accessible.
Change-Id: Ie5efbc47a6b9119495f999e4e05877d4789da407
Reviewed-by: hjk <hjk@qt.io>
If the model manager or the state manager disappear before the parent
widget, we might still get a timer update in between.
Change-Id: I6a67868615ef9d570e2ce438d9d9bd88b1035cc2
Reviewed-by: hjk <hjk@qt.io>
This greatly reduces the test execution time, hopefully avoiding the
test function timeouts. As we know that all the connections fail, a 1ms
interval should be enough and retrying twice should be enough to
exercise the retry path.
Change-Id: I24e61aa1957313dc16b7e46f7a7de7ae483e82dc
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This can happen because a run control may already initiateStop when in
Starting state.
Change-Id: Ie872cb1ba5d0ff65eb1c82ff90f9659311e534f4
Reviewed-by: hjk <hjk@qt.io>
Without "CanvasFrameRate" the QML profiler won't be very useful.
Change-Id: I8bff2b600db31bd1092c1a5f79e27e4177c97086
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
When the connection drops while receiving a trace we can easily process
the buffered events. The trace client test case has some traces with
trailing open ranges that can be recovered this way.
Change-Id: I8b2ecc135b0cabff18923fbc8f3f14b5cb3a96ee
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
The order of messages changed due to debug messages being queued and
inserted so that the time ordering is maintained now. The updated
check.dat serves as a test for the queueing.
Change-Id: Id4c978a6e7fb9fa50933081217ce34e2cea5c217
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
The server won't re-send the event types. We need to keep them until the
connection goes away. Otherwise we get invalid event types and soft
asserts when trying to look up event types for new events. Also, when
clearing the event types, also clear the server type IDs. Not clearing
those constitutes a memory leak.
Change-Id: I564b0c4cf0ed754549d2b8ede63c97fa01affcec
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
We don't have control over the application's life cycle in this case, so
we need to use the debug connection as indicator.
Change-Id: I3f30194e12c10c6585a58133c5148dbea9e6761f
Task-number: QTCREATORBUG-19496
Reviewed-by: hjk <hjk@qt.io>
They are not time-ordered like normal messages, so we need to buffer
them and only insert them when the normal event stream arrives at their
timestamp.
The time ordering is important as the "restrict to range" feature uses
it to determine the start of the range.
Change-Id: If27a3f667c4c39e69efa95fcb9cdfd3dbf01e657
Task-number: QTCREATORBUG-19456
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
When building Qt Creator with MSVC, this is the only warning I get:
warning: C4309: 'initializing': truncation of constant value
It would be great to silence it.
MSVC supports the "i8" literal extension, which would be fancier than
the cast, here. But I don't know what other compilers think of it.
Change-Id: I3f1bb4f58f6ab378cbeb44a667aebc5ddee25eec
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
We run a number of test traces through the trace client and make sure
that it doesn't crash and that the events reappear in the right order.
Change-Id: I45bbeeb978f2ab147551aaafa74631f927c710e8
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
If the external data is quint16_max long, we need to stop writing at
quint16_max - 1. So we cannot rely on unsigned integer overflow to
enforce the boundary.
Also, use for (...) rather than foreach (...). This should easily offset
the extra overhead introduced by the bounds check.
Change-Id: I51d1aef1040fbaa8396ca80ec7e30b2fe7b7dd0b
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>