Commit Graph

1631 Commits

Author SHA1 Message Date
Ulf Hermann
1e49ac3041 QmlProfiler: Properly clear the trace client
Rename the method to clear() and make sure all the event types and
pending events are actually cleared.

Change-Id: Ie6c916d374a00025f7d77d21345d039fe8cead80
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-11-22 11:13:10 +00:00
Ulf Hermann
7d550cd7c4 QmlProfiler: Eliminate some clang warnings
Explicitly check the user-given port for the right range, drop an
unnecessary switch/default clause, and reorder members for better
memory alignment.

Change-Id: I82e9f4353debd6b211d251ecd83fc642a04bdd87
Reviewed-by: hjk <hjk@qt.io>
2017-11-21 14:55:29 +00:00
Orgad Shaneh
d9cb19b229 Merge remote-tracking branch 'origin/4.5'
Change-Id: I60fca091b2eac67259580acba5ae934c16d74a83
2017-11-11 19:54:32 +02:00
hjk
5ca90a4a5e ProjectExplorer: Fix copying of RunConfigurationAspects
Moving aspect data closer to real Value semantics fixes
the regression introduced by 890c1906e.

Task-number: QTCREATORBUG-19186
Task-number: QTCREATORBUG-19192
Change-Id: Ieaeef3995ae06a817f266c1e2514f9e5793bd4e8
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-11-10 15:09:59 +00:00
Eike Ziller
b05637131c Merge remote-tracking branch 'origin/4.5'
Conflicts:
	src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp

Change-Id: I726babe61e28db14d06a6a1a5c570e148745b458
2017-11-09 14:32:00 +01:00
Ulf Hermann
5fabf9af64 QmlProfiler: Reset the serverRecording flag when the connection drops
Otherwise the run control will believe that the application is still
running.

Change-Id: I16ec9762362f526bd89eb21ceb82b89b295d7b5c
Reviewed-by: hjk <hjk@qt.io>
2017-11-09 10:54:48 +00:00
Ulf Hermann
d386b4ed6d QmlDebug: Extract a general QML debug connection manager from QmlProfiler
We can use it for other QmlDebug run controls, too.

Change-Id: Iee1cd592848ef4c48954a2674b6fa509223fcda4
Reviewed-by: hjk <hjk@qt.io>
2017-10-16 14:04:24 +00:00
Ulf Hermann
fb370f460d Move URL utilities from ProjectExplorer to Utils
This way we can access them from the qmldebug library.

Change-Id: I90ba80228f44a9d5ea825ad59f4bd1572969980e
Reviewed-by: hjk <hjk@qt.io>
2017-10-05 08:54:39 +00:00
Ulf Hermann
2f9d82791e QmlDebug: Move QmlDebugConnection into own file
Change-Id: I761658de7c19754cfaadf8cbbad7596a9bcdfbf3
Reviewed-by: hjk <hjk@qt.io>
2017-10-04 16:17:48 +00:00
Ulf Hermann
7749a47e62 QtSupport: Move populateFileFinder to BaseQtVersion
This populates a file finder so that it is best able to find QML files,
prioritizing the given project/target. Some of it would also apply to a
non QML file finder, but as we don't use FileInProjectFinder for other
file types we keep the code here, for now.

Change-Id: I14e2ac63e699afe27d2f3af8ca3d57dfe732da8c
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-10-04 10:49:40 +00:00
Tobias Hunger
c330cf0679 Replace manual signal blocking/unblocking with QSignalBlocker
Change-Id: Ibb59fab4e37d045e506c5a8172b6f5cbb955b028
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2017-10-04 09:35:06 +00:00
Ulf Hermann
defcb6a55a QtSupport: Add a method to retrieve the QML path
We check that qmake property in many different places.

Change-Id: Ifd5efe4ad2831385493bd3afe8538929578e8fb4
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-09-29 08:26:33 +00:00
Ulf Hermann
d8a41f2706 QmlProfiler: Add QT_INSTALL_QML paths to FileInProjectFinder
This enables us to find QML files that are part of Qt, also if they are
not in the same location on the host and target systems.

Change-Id: Idcd0be8ae4301000c4123e39edeb04b43efb4659
Reviewed-by: hjk <hjk@qt.io>
2017-09-27 14:22:58 +00:00
Ulf Hermann
38d00cc8b6 QmlProfiler: Use a Target for populateFileFinder()
The RunConfiguration we were using previously only served to retrieve a
target.

Change-Id: I30628197de3025511a03a53d3119083b980762c8
Reviewed-by: hjk <hjk@qt.io>
2017-09-27 14:22:49 +00:00
Ulf Hermann
05ef571922 QmlProfiler: 20s are still not enough for LocalQmlProfilerRunnerTest
The test has failed again because of insufficient timeout. 22s would
have been enough this time ...

Change-Id: I001a921921997863d77af8483403a8bd8a85eb29
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-09-26 09:35:56 +00:00
Ulf Hermann
63a99936ab QmlProfiler: Unify local and tcp connection mechanism
Use the URL scheme to distinguish between them, check that in
QmlProfilerClientManager and test all possible combinations of URL
parts.

Change-Id: I6583e5bf18eda0344a299a279c12578c4ebc7ffe
Reviewed-by: hjk <hjk@qt.io>
2017-09-21 14:54:57 +00:00
Ulf Hermann
0f21decf41 QmlProfiler: Correctly handle invalid message types
We might get malformed events from the application. Clamp message and
range types into the allowed enum values when reading and reset the
event data when reading an invalid event.

Change-Id: Id76a3a8b8ed9378f9fb1acf15cf46d20758ca030
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2017-09-12 14:25:23 +00:00
Ulf Hermann
9cdb0ec22e QmlProfiler: Don't trust in externally provided timestamps
We might get timestamps that are outside the trace time, negative
timestamps, ranges that go backwards, and other insane things.

In order to deal with this, we clamp all negative timestamps to 0, and
treat the specified trace time as minimum range, that can be overridden
by events.

Change-Id: Iba661f2a4346077871fc62a46759e169b2aad49d
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2017-09-12 14:25:01 +00:00
Ulf Hermann
8fa07c81f6 QmlProfiler: Accept animations events with 0 animations
There is no reason why we shouldn't. Logically that would be an
animation frame without any running animations. The frame would still
have a frame rate and we can still tell if it's the GUI or render
thread.

Furthermore the assert might be triggered by invalid trace data.

Change-Id: I58578a941c5d1471dd1b299ed5f489ad160b2904
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2017-09-12 14:24:11 +00:00
Ulf Hermann
13910a1176 QmlProfiler: Accept unknown input events
We might get more event types in the future and filtering them is harder
than just displaying them. Also, traces might contain invalid input
events which would trigger the assert.

Change-Id: I9b38422af953ebb65363fc2b7a91facb7f757976
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2017-09-12 14:24:01 +00:00
hjk
2edbefcb5d QmlDebug: Streamline command line parameter creation
We always have a port now in advance and can construct the
command line directly.

Change-Id: I12dba553f4ef073d7c5b00477baf9fa0e5596bdb
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2017-09-12 09:09:35 +00:00
Ulf Hermann
47886969cc Drop unused variables and lambda captures
Also, add context to connect() expressions where we are or were
capturing "this".

Change-Id: I6e006ba6f83d532478018550d148ee93eca59605
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2017-09-08 09:06:53 +00:00
Ulf Hermann
e3ae628584 QmlProfiler: Don't crash on inconsistent profiling data
The trace may contain RangeData and RangeLocation entries that aren't
aligned with any RangeStart. As the trace is generated by an external
process we need to handle that.

Change-Id: I39a524127c9c9059e5c5521797e5effd385ce12b
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2017-09-08 09:05:55 +00:00
Ulf Hermann
1634987cae QmlDebug: Don't use QmlDebugConnection unconditionally
It might be null. We wrap the retrieval of the data stream version in
QmlDebugClient and return the minimum if connection is null. The extra
copy of the connection QmlEngine is dropped as QmlDebugClient already
has one and we don't want to hit a dangling pointer.

Change-Id: Ida8c45d357d46b4942eea99b77065d3c51c7edb9
Reviewed-by: hjk <hjk@qt.io>
2017-09-07 13:28:52 +00:00
Ulf Hermann
239ed56f4b QmlDebug: Decouple QmlDebugConnection and QmlDebugClient
The protected methods of QmlDebugClient need to be called by
QmlDebugConnection already. We also want to call them directly for
testing, so we make them public rather than having QmlDebugConnection
be a friend. By using a QPointer, we can avoid resetting the connection
on each client when it is deleted.

Change-Id: I2c0e3d2b8ec19e9acbc6b8f5623b4c28caae319a
Reviewed-by: hjk <hjk@qt.io>
2017-09-07 12:58:12 +00:00
Ulf Hermann
3ccbaff2da QmlDebug: Add some missing override
Change-Id: I742cbeedff43e1e33b30150fec60f843698f05e8
Reviewed-by: hjk <hjk@qt.io>
2017-09-07 12:52:01 +00:00
Ulf Hermann
046e4db97a QmlProfiler: Remove slots declarations and Qt4 connections
The signals from QML are relayed through the respective models, so that
we don't have to use Qt4 connections there.

Change-Id: I864b49061c1f28acbebfc7378bfe39f96d3cae18
Reviewed-by: hjk <hjk@qt.io>
2017-09-07 12:48:14 +00:00
hjk
4342eeab33 QmlProfiler: Don't access QmlProfilerTool from QmlProfilerTextMark
Only QmlProfilerViewManager is needed, so use that, as a step to
reduce the interface of the QmlProfilerTool singleton.

Change-Id: I19e55e3b22b3c64ff98b8ea29cbc5164a60ee15d
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2017-09-07 09:46:59 +00:00
Nikolai Kosjar
dce0b1c945 Fix qbs build regarding app_version.h
Change-Id: I2b6bd8bf10221dc3d08ada30701d5b39cc763251
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2017-09-06 09:05:29 +00:00
Tobias Hunger
4ef01c961e app_version.h: Make IDE name configurable
Change-Id: I993f452c8d09cf89e9a2958fc8e36b7d2c17ee6f
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-09-05 10:19:48 +00:00
Eike Ziller
3543bd5d1a Merge remote-tracking branch 'origin/4.4'
Conflicts:
	src/plugins/projectexplorer/projectexplorer.cpp

Change-Id: I7881fc51021c49b792a384ad9f8a4f71fc457ce2
2017-09-04 16:12:34 +02:00
Ulf Hermann
ee9a730f4b QmlProfiler: Increase test timeouts further
Test runs frequently fail because the timeouts are too low. the test
library suggests around 12s, so we make it 20s to be safe.

Change-Id: I746b141949620310371de71b0b2ec7538dc4b5ce
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-09-04 11:33:20 +00:00
Orgad Shaneh
139792ee25 Merge remote-tracking branch 'origin/4.4'
Change-Id: I9ab2c68d2bd07b0dd89051a2f5f6fa51676d8594
2017-08-30 01:24:11 +03:00
Eike Ziller
04da881268 Fix copyright year in plugin info, --version, and macOS info
By using the new QTCREATOR_COPYRIGHT_YEAR variable

Task-number: QTCREATORBUG-18612
Change-Id: I3bcf0319660d210436d3130c00f43325c460a66c
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2017-08-24 11:23:40 +00:00
Eike Ziller
a0a42ff7bd Merge remote-tracking branch 'origin/4.4'
Conflicts:
	src/plugins/debugger/gdb/gdbengine.cpp

Change-Id: I8a7c8ca07d6d6005f5d39b8f1477ebbc7a299fbf
2017-08-17 17:29:25 +02:00
Robert Loehning
1acc482130 QmlProfiler: Initialize and reset QmlProfilerPlugin::m_profilerTool
Change-Id: I6efa81c1c89610f50f0057fccce438176bff3120
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2017-08-16 17:33:26 +00:00
hjk
49ffe0fb40 QmlProfiler: Disconnect some signals on shutdown
It's a workaround, not a proper solution (as indicated by the
SOFT ASSERT: "d->m_profilerState" in file qmlprofilerruncontrol.cpp,
line 144 triggering) The state manager (and possibly more)
is referenced from potentially running run controls, that are ramped
down after the plugin.

Task-number: QTCREATORBUG-18736
Change-Id: Ia20b168fe640c818276a777e1d23feab0cacd565
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2017-08-16 09:06:22 +00:00
Ulf Hermann
d571b5051e QmlProfiler: Tests for QmlProfilerDetailsRewriter
Change-Id: I26b7f71fad35d569e0fc70fe4f5eaf2796e607cf
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-08-15 13:46:05 +00:00
Ulf Hermann
dc912be7ea QmlProfiler: Properly prepare the file finder on every start
We want to examine the current list of projects, also if we don't have a
specific runConfiguration. Also, after repopulating the file finder, we
need to clear the cache of file mappings, as they might have changed.

Change-Id: I351789fe999009d443ca5ade9b365bfd490e0e23
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-08-15 13:38:31 +00:00
Ulf Hermann
6a626595dc QmlProfiler: Rename QmlProfilerDetailsRewriter::clearRequests to clear
It also clears the lookup cache.

Change-Id: I9fdd9136084a17f427336d6ce2d37d724b9b20d2
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-08-15 13:37:59 +00:00
Ulf Hermann
65c11e43df QmlProfiler: Add some sanity to details rewriter's PropertyVisitor
Take care of possible integer overflows and apply coding style.

Change-Id: Ib3922f30c102575ab773f7708864886fc0b53d15
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-08-15 13:37:51 +00:00
Eike Ziller
d8fd5292f1 Merge remote-tracking branch 'origin/4.4'
Conflicts:
	src/tools/clangbackend/ipcsource/clangiasyncjob.cpp
	src/tools/clangbackend/ipcsource/clangjobrequest.cpp
	src/tools/clangbackend/ipcsource/clangjobrequest.h

Change-Id: Ib8602530663813ade418f995dfd2a736908cfe75
2017-08-15 10:07:51 +02:00
Ulf Hermann
ea21d3fdfb QmlProfiler: Make some QmlProfilerDetailsRewriter members private
Change-Id: I973c77eadf35e814352edaac3992437cf2c4be66
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-08-14 12:02:06 +00:00
Eike Ziller
b5f49273b0 Merge remote-tracking branch 'origin/4.3' into 4.4
Conflicts:
	src/plugins/qmlprofiler/qmlprofilertraceview.cpp

Change-Id: Ib1d75a8572f650898cb598d008867e2c0514d752
2017-08-14 12:37:06 +02:00
Ulf Hermann
63551d7711 QmlProfiler: Rebuild the flamegraph model when visible features change
This is more expensive than just setting the filtered items' height to
0. However, this way we implicitly also change the size of the root
element, group equal items that end up on the same level by filtering,
recalculate the cutoff for too small items and resort all items by
width.

Change-Id: Ida2c5acd9848c5644ecff052d78e9fe5ad962606
Task-number: QTCREATORBUG-18713
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-08-14 09:39:59 +00:00
Ulf Hermann
e7c950eb11 QmlProfiler: In statistics use non-recursive time as total
Otherwise the percentages and totals don't match. The extra recursive
time is shown in the tooltip, without percentage (as there wouldn't be a
sensible base value for a percentage number).

Change-Id: I47fcf92aac3f60554219f7da9dd2ac90061ce496
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-08-14 09:39:50 +00:00
Ulf Hermann
afdf0d5ec4 QmlProfiler: Don't add an extra nanosecond to the flame graph bottom
Change-Id: Icda2b69363439de92a012a0cf46b8084b69d777d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-08-11 11:40:01 +00:00
Ulf Hermann
178ef461bd QmlProfiler: Include qtcfallthrough.h for Q_FALLTHROUGH
Change-Id: Iac3b7ea8314eff6e15c3c4a04a612a8026bf040f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-08-10 15:59:46 +00:00
hjk
90d152ac07 QmlProfiler: Clean up some includes
Change-Id: Ia4706170b07070e46c62296a806e785d96d2f4ef
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2017-08-10 14:55:31 +00:00
Ulf Hermann
5dbb4f0907 QmlProfiler: Express record button state in a single function
This way we get a concise description of the inputs it reacts to and we
don't have to dereference the pointer in unrelated code, which lead to
crashes on shutdown.

Change-Id: Ieb75ab95cccc0d1f88420b270909c97867a5c3e0
Reviewed-by: hjk <hjk@qt.io>
2017-08-10 14:41:28 +00:00