Commit Graph

1631 Commits

Author SHA1 Message Date
Ulf Hermann
4ff20dfa8c QmlProfiler: Move location lookup into base model
We will need it in a second derived model.

Change-Id: I5d2459c490034b592f643f248bf5be2e44af44aa
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-11-16 14:50:32 +00:00
Ulf Hermann
185412cee7 QmlProfiler: Remove QtQuick1-specific hack
Change-Id: I541fde69fcd337b5cf637b25dc0b610a956e65b9
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-11-16 14:50:27 +00:00
Ulf Hermann
1b8c1af2c6 QmlProfiler: Only emit gotoSourceLocation on internal updates
If we're merely synchronizing to another view the source location has
already been taken care of.

Change-Id: I272c1f3a664271327d3a59d851632eb1241108a0
Task-number: QTCREATORBUG-13360
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-11-16 14:50:14 +00:00
Eike Ziller
d13b22e6bc Merge remote-tracking branch 'origin/3.6'
Conflicts:
	src/plugins/coreplugin/editormanager/editormanager.cpp

Change-Id: Ibdf433b54e36e58182b7094f78d47ed3e8c81684
2015-11-12 13:43:17 +01:00
Ulf Hermann
58ffe05a2a QmlProfiler: Improve progress metrics for range models
Change-Id: I32b6c77c020c1a3141878282314d7acd87c90af4
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-11-12 09:16:26 +00:00
Ulf Hermann
35ce8f50df QmlProfiler: remove dead code
We never propagate a selection by source location.

Change-Id: I4594b88080bd1834572c0087db0397bc08a81d70
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-11-12 09:15:23 +00:00
Ulf Hermann
07241006ee QmlProfiler: Adapt to updateCursorPosition() change in Timeline
As the timeline doesn't automatically move us to the right file/line
anymore when we programatically trigger a selection, we have to do it
explicitly now when searching for notes.

Change-Id: I439b2162555a6cbf1c757c691ad3b0de067e3f94
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-11-12 09:15:20 +00:00
Sergey Belyashov
6ec3bcf866 Fix missing translations
Fixed some lacks of Q_OBJECT macro.

Change-Id: I226078baa40977ef49357b34b1e9dc5f0491d76a
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-11-05 14:41:56 +00:00
Ulf Hermann
834883b0fb QmlProfiler: Support additional attributes of input events
Change-Id: I92a28d0476ad814601f33b76e508bdbea02eefff
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-11-05 08:42:16 +00:00
Eike Ziller
81e9b96148 Merge remote-tracking branch 'origin/3.6'
Change-Id: Ic7cba72e7bec10e4fc0099b97e3317e391a6aa5d
2015-11-03 13:06:35 +01:00
Ulf Hermann
ccc4fe54e5 QmlProfiler: Delete debug connection on error or if params change
Now that we don't recreate the debug connection anymore when (re)trying
to connect, we have to do it explicitly when changing the connection
parameters or when a connection attempt fails and we need to cancel the
"Connecting" state.

Change-Id: Ib2b6b4fb1e39e64fe3c9f2bf90b6e43043d05a9e
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-11-03 10:44:56 +00:00
Ulf Hermann
b4e6591188 QmlProfiler: Convert connections to Qt5 style
Change-Id: I1a490add706cd0cfce3f243e4ebc32a8c9a975c7
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-11-02 10:12:42 +00:00
Eike Ziller
310ae09996 Merge remote-tracking branch 'origin/3.6'
Change-Id: I68512c775ed25b51c8b0abe1818c9c7c5955874c
2015-10-30 16:08:03 +01:00
Ulf Hermann
ccb6d6131e QmlProfiler: Don't needlessly delete debug connections
If we're already trying to connect when the "Waiting for ..." message
arrives we don't want to start from scratch, but rather reuse the
existing connection.

Otherwise the handshake may be interrupted in an arbitrary state,
either leaving the remote QML engine waiting for the local QML profiler
to send the recording status, or prompting the local profiler client to
stop recording as the connection "broke".

The local QML profiler will only send the recording status if new QML
engines show up, which doesn't happen on the second successful
connection. That may be a different bug.

Change-Id: Ia17fcf9d0a28edf700274bcd88c2b7030220c290
Reviewed-by: Robert Loehning <robert.loehning@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-10-30 12:47:58 +00:00
Eike Ziller
6d4135d8f0 Merge remote-tracking branch 'origin/3.6'
Change-Id: Iddfa0d2f3c0fb8ba65c0e5d479ad8e2f2cb95685
2015-10-26 10:55:50 +01:00
Alessandro Portale
b8bdc6f669 Icon refresh: First step towards the new Qt Creator themes
http://blog.qt.io/blog/author/didesous/ announced new designs/themes
for Qt Creator. This patch replaces many of the existing toolbar icons
with recolorizable masks for better theming support.

Change-Id: I557aa485205fe2624f33724226f698c303342b40
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
2015-10-23 16:04:52 +00:00
Ulf Hermann
5bc6bf03e1 QmlProfiler: Don't update the time display during state transitions
Previously, the display would show 0.0 while the profiler was waiting
for the application to send data. That is somewhat confusing.

Change-Id: I3ad85e5479c2cf3a65e6c4b411d959a5b15baae8
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2015-10-20 16:15:32 +00:00
Ulf Hermann
bd22de47e7 QmlProfiler: Prevent interaction with buttons while loading data
You could trigger invalid states by pressing the recording button
while the profiler was waiting for data to be loaded from the
application or by pressing the "stop" button twice. Now the buttons
are disabled when they don't make any sense. In particular you cannot
clear, change features, filter the display while recording and you
cannot toggle the recording while loading. Pressing the "stop" button
twice will cancel the loading now, similar to what happens if you
first disable recording and then stop while the data is loaded.

Change-Id: Ie5133f4bed76593dedc9763b778a2c5c17187543
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2015-10-20 11:43:14 +00:00
Robert Loehning
a835b51407 Centralize checking for OpenGL
Change-Id: Ic2212c8519f4c771ba3e3c61dd32073b93db7ed9
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-10-02 16:39:03 +00:00
Alessandro Portale
6781e3c96b QmlProfiler: Remove extra arrow from filter button
Change-Id: Ieba517acc6652b2c188f8ff90558b10a6b8c0ac3
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
2015-09-29 16:12:48 +00:00
Eike Ziller
842578f357 Merge remote-tracking branch 'origin/3.5'
Change-Id: Icef35a3d74c03c8a26e4794734801cd107cd9e04
2015-09-28 09:43:46 +02:00
Robert Loehning
b92c00bab6 Check in initialize if OpenGl context can be created
Change-Id: I224c2559c1e65cfc3b699e7ec7b56dee8308bd83
Task-number: QTCREATORBUG-15101
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-09-25 12:23:16 +00:00
Eike Ziller
0ba4781bfc Merge remote-tracking branch 'origin/3.5'
Change-Id: I889b93611d1762121548fb71d1d3493e4adba313
2015-09-25 10:35:42 +02:00
Ulf Hermann
66774a8bdb QmlProfiler: Load notes after timeline models are finished
Otherwise the notes cannot be associated with timeline events.

Change-Id: I9a2f039fddd36c9a6bbaca3c0864c75e33cc479d
Task-number: QTCREATORBUG-15077
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-17 12:52:43 +00:00
Ulf Hermann
a324694671 QmlProfiler: Persist the last trace file loaded or saved
This is quite handy if you keep all your traces in one directory.

Change-Id: I09842404493c02fb0ca9c4a328950f7b6dcb5be0
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-15 13:06:44 +00:00
Ulf Hermann
05388a7229 QmlProfiler: Simplify application state handling
Only half of the states are useful for anything.

Change-Id: I4591ccda6eec902e929e07947bad6c3f7b967ef9
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-15 13:06:40 +00:00
Ulf Hermann
89f1c0bf53 QmlProfiler: Remove some dead code
Change-Id: I2efd48a4dc13cc3996eda994eb4a046c101ad3e9
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-11 12:26:53 +00:00
Ulf Hermann
fe2d9e2a3b QmlProfiler: Remove QmlProfilerClientManager::serverRecordingChanged
It doesn't do anything useful. Also the qmlDataReady member is
write-only and can be removed.

Change-Id: I667b05611cfc5960eb2fd73254a7b3c621ae98a3
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-11 12:26:49 +00:00
Ulf Hermann
fdbed834fa QmlProfiler: Refactor complete() methods
The complete() methods do something more specific. We should call them
by what they do. Also, we don't need to signal the finishing of data
acquisition via a signal and most of the postprocessing can happen in
the worker thread.

Change-Id: Iae986aefb8e7e7d4327c481d7a85325bbff7fa48
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-11 12:26:45 +00:00
Ulf Hermann
6f8acae62d QmlProfiler: Remove QmlProfilerBaseModel
Now that the V8 model is gone we don't need a base model anymore.

Change-Id: I35aee0627f78f417ec9c971e1c7bbf70adfc7b27
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-11 09:13:43 +00:00
Ulf Hermann
f388882995 QmlProfiler: Remove QmlProfilerModelManager::count()
Change-Id: If520a8575add386e64a7f56b63d0241f15efa2a0
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-11 09:13:38 +00:00
Ulf Hermann
ddb872727f QmlProfiler: Eliminate QmlProfilerDataState
This class is only accessible through the model manager and there is no
real point in keeping it separate.

Change-Id: I575d47c08aa8f6731d44739f9604072b95fd1dcd
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-11 09:13:34 +00:00
Ulf Hermann
f373c6794e QmlProfiler: Simplify file loading
There is no need to keep a redundant copy of the file name.

Change-Id: I407b1e4b92232a5869eade4d52eb7b4468fffa9d
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-11 09:13:30 +00:00
Ulf Hermann
60ead88856 QmlProfiler: Don't create widgets in a worker thread
We better call QmlProfilerModelManager::complete() from the main
thread. There are too many things that can break if it's called from a
worker thread.

Change-Id: I92211df7ec072d572ed82dc1203efd2f67b4b540
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-11 09:13:26 +00:00
Ulf Hermann
408ac55741 QmlProfiler: Remove OST connection mode
Whatever that is, it definitely didn't work.

Change-Id: Ib15b9dcad6e22d52285a253b234989e55d817268
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-10 13:10:30 +00:00
Ulf Hermann
b961955fdf QmlProfiler: Don't rebuild events view from empty model
When changing the selected range the main model doesn't change. If the
main model is empty there is nothing to select and we can skip the
selecting.

Task-number: QTCREATORBUG-15047
Change-Id: I997c104ff7f9f541da0eaade7a519cebd39607a4
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-09 13:52:08 +00:00
Ulf Hermann
c11b046f34 QmlProfiler: Use QPointer for storing config widget
Most other options pages do it this way and none of them delete the
widget in the destructor. Apparently we can rely on finish() getting
called in time.

Change-Id: Ie0964d291bc8ab3eea537921bf476012d58776a4
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
2015-09-02 09:39:24 +00:00
Ulf Hermann
96ca7bf148 QmlProfiler: Initialize pointer to QmlProfilerConfigWidget
Change-Id: I4c7f1456f3cc35727d9f3b72d100e072960987e4
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
2015-09-02 08:53:31 +00:00
Ulf Hermann
b054fd8542 QmlProfiler: Clean up the state widget
Ultimately we want this as jobs for the progress manager, but let's
get the logic right before. The state widget should not estimate
profiling times and it doesn't have to keep local copies of all the
state the model and state managers already have. Also, we need an
additional indication for "waiting for application to send data", as
that can take significant time.

Change-Id: I3677dea4b0561bc83a7bc3c196ce0854c5624f12
Task-number: QTCREATORBUG-12958
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-01 10:17:22 +00:00
Ulf Hermann
1caa899b8d QmlProfiler: Make sure timeChanged() signal is queued when needed
It can be triggered from a thread loading trace data. This triggered
the warnings about QObject::startTimer and QObject::killTimer and was
generelly unsafe.

Change-Id: Iee1f5f29a49147a20b1f5c826f85b6713fcb8a45
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-01 10:17:17 +00:00
Ulf Hermann
599c5a034a QmlProfiler: Avoid overflowing the progress range when loading
The ProgressManager can only deal with at most (1 << 31) / 100.

Change-Id: I03c61839fa5b9dab56b99f98a63ed7ab8b340c09
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-09-01 10:17:12 +00:00
Ulf Hermann
f1ede40500 QmlProfiler: Expose flush interval to user
Flushing data while the application is running can distort the results
because the flushing itself takes time. However, not flushing leads to
longer load times in the end and higher memory usage. The best strategy
depends on the application being analyzed and the users should decide
if they want to flush or not.

The settings infrastructure also paves the way for preserviing the
layout of the timeline and statistics views as well as the category
filters across sessions.

Change-Id: I2cdc37c7fc7eb9b05b6870955ddffaa712d6c956
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-08-31 09:19:32 +00:00
Christian Kandeler
acb36c2c6a QmlProfiler: Add missing override modifiers.
Change-Id: Ib8e8e84d82aa65a8e0f48f4479cbbc6ec9bb18c7
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
2015-08-24 08:56:28 +00:00
Ulf Hermann
5f90990c30 Tell the QML debug server exactly what services we expect
The services need to be loaded before the first QML engine is created.
The first QML engine may be created before a client connects. When the
JavaScript debug service is loaded the engine is put into interpreter
mode as we don't support debugging in JIT mode. Profiling, however
should be done in JIT mode, whenever possible.

Thus, in order to avoid the loading of unnecessary plugins and to get
better results from the QML profiler we tell the debug server which
services we expect, even before the client connects. Qt 5.6 will support
additional command line arguments to specify the services and this
change uses them.

Change-Id: I6dcee016c39995e9adada6eaf0e39d8299c9b7e7
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-08-17 15:13:56 +00:00
Ulf Hermann
19d20d26aa QmlProfiler: Don't show progress bar while still recording.
We can receive data while recording now. The progress bar is not
helpful, though, as it doesn't tell us how much data we have received.
It's better to disable it until the recording is done.

Change-Id: Icc567fd33607e0c9b011504a0c76a7d84163945a
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-07-28 12:36:56 +00:00
Ulf Hermann
bc6b81fb50 Consistently rename QmlProfilerEngine to QmlProfilerRunControl
It's always a pain to search for the only RunControl that's called
"engine" half of the time.

Change-Id: I4cece9f8958ff989925d9efaaf6fb41731842647
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-07-08 14:00:05 +00:00
Ulf Hermann
bc7dca220f QmlProfiler: Remove QmlProfilerTreeView
It doesn't really do anything useful.

Change-Id: I84472d4baaf291a2daee145ef69ee39a836eff7c
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-07-08 14:00:01 +00:00
Ulf Hermann
a4da263a1f QmlProfiler: Improve usability
Move the search and filter buttons left of the label, as the label's
length can change.
Don't auto-reshow the filter menus after selecting from them. This is
a very unusual feature and it gets in the way more often than it helps.

Change-Id: I23d0846eb2efaa20d872632175a21680a8216d85
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-07-08 13:59:58 +00:00
Ulf Hermann
38cd7c31f7 QmlProfiler: Use visible features in events view.
This way, end up with one single control for hiding and showing
categories.

Change-Id: Ifb1484d53a50255894284d5236b0446e924e4102
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-07-08 13:59:53 +00:00
Ulf Hermann
054f03e165 QmlProfiler: Track requested, recorded, and displayed features
This way we can have a central filter menu to hide and show features
in any connected views.

Change-Id: I8142da0062a23f8166555016de6c7cb38060f725
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-07-08 13:59:49 +00:00