Commit Graph

1631 Commits

Author SHA1 Message Date
Ulf Hermann
5dbbc74651 QmlProfiler: Make sure all binding loop markers are drawn
Binding loop markers aren't ordered in any particular way so we cannot
stop drawing them when we find an invisible one.

Change-Id: I16dcc96c15febc5cfe0203e23c1ca657714a2c25
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-14 11:04:55 +01:00
Orgad Shaneh
7ed1576083 Clean up single namespace forward-declarations
Done using the following ruby script:

Dir.glob('**/*.h').each { |file|
  if File.file?(file)
    s = File.read(file)
    t = s.gsub(/^namespace .+ \{\n\s*class .*;\n\s*\}.*$/) { |m| m.gsub(/\n\s*/, ' ').gsub(/\s*\/\/.*$/, '') }
    if t != s
      puts file
      File.open(file, 'w').write(t)
    end
  end
}

Change-Id: Iffcb966e90eb8e1a625eccd5dd0b94f000ae368e
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-02-12 09:30:37 +01:00
Tobias Hunger
8c1c284789 Qbs/qmake: Fix dependencies of plugins
... based on output from dependencyinfo.py script

Change-Id: I9532f6d259f15c16b62fae0ca18f8a8cad95bd11
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
2014-02-11 13:23:26 +01:00
Ulf Hermann
8af54aa44c QmlProfiler: Show Javascript calls in timeline view
Change-Id: I781b95bdd9d6bfa12ec8f40f4197119ba51e194a
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-10 14:28:45 +01:00
Ulf Hermann
54eedf4e59 QmlProfiler: Show Javascript calls in events view.
Change-Id: I11d22ce1423384f879e30ff9573f4d7d799535b1
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-10 14:28:38 +01:00
Fawzi Mohamed
a8ea0a0736 qmljs: generalize language treatement
* better support qbs and similar non QtQuick qml languages
* begin to clean and migrate things from ModelManager to
  ModelManagerInterface

Change-Id: Ifa39dc1e4c568e9e21307f4913dcb5989e80420f
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
2014-01-28 15:01:00 +01:00
Eike Ziller
851f255b9d Merge remote-tracking branch 'origin/3.0'
Conflicts:
	src/plugins/qmldesigner/components/formeditor/anchorindicatorgraphicsitem.cpp
	src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp
	src/plugins/qmlprofiler/qmlprofilertraceview.cpp

Change-Id: I778a0c2d0f1b4f799caaa2c2cc5daf94ec7ca352
2014-01-15 14:04:41 +01:00
Ulf Hermann
c7b45ff8b0 QmlProfiler: Reduce code duplication and add more anchoring
Anchors are supposed to reduce graphical glitches such as the gradient
borders getting detached from the edges of the timeline while resizing.
I'm not sure if it's actually better like this, but the code certainly
looks nicer.

Change-Id: I9eb6a6a50780ce642ad7cb551d2895a80b00690e
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-14 10:15:17 +01:00
Ulf Hermann
f4b4994f4b QmlProfiler: Remove some dead code and make sizing more consistent.
Change-Id: Iaff416c1af61e20e47309b7ec34bf4ab0d3f4267
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-14 10:15:08 +01:00
Ulf Hermann
ac40c26eaf QmlProfiler: Hide timline and show loading indicators when profiling
This is a temporary fix to work around the fact that the profiler's
loading indicator won't show on top of the timeline view. It's not
particularly beautiful but at least the UI doesn't just "hang" anymore.
A final solution has to be provided in qtdeclarative by allowing widgets
to be placed on top of QML scenes. In principle it's also possible to
change the loading indicators to be actual windows and by doing that have
them stay on top, but the result would be very messy.

Change-Id: Ic774b0792786d7d278da5ba0beda4531f0dba77d
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-14 10:14:40 +01:00
Ulf Hermann
834c89329f QmlProfiler: Don't hide the "Painting" category
Hiding a category in the timeline view is highly confusing. Previously
the "Painting" category would only be visible if either the model is
empty or at least one painting event was available. Like this it's
always there. In the obscure case of a mixed Qt4/Qt5 application you can
get two "Painting" categories now.

Change-Id: I54db106ed868b7e5d46d0e0ac22b46c0df8be862
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-13 11:57:13 +01:00
Ulf Hermann
f10eccff3e QmlProfiler: Make sure animation paint events don't overlap
Previously the animation paint events could overlap if the framerate
estimates were off by more than 1 event. Furthermore the duration could
be negative or 0, with a potential crash in the latter case. Also it's
a bad idea to change the server-provided framerate to suit our estimated
durations.

Change-Id: I14da0855d7248a6ef32509572caa439ebb2d430e
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-13 11:55:57 +01:00
Robert Loehning
5292748bf2 Incremented year in copyright info
Change-Id: I6e25ba25aa2898b5382dae7f3751deebb6072efa
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2014-01-09 09:41:23 +01:00
Eike Ziller
236ea9efb9 Merge remote-tracking branch 'origin/3.0'
Conflicts:
	share/qtcreator/debugger/dumper.cpp
	share/qtcreator/debugger/dumper_p.h
	share/qtcreator/debugger/test/main.cpp
	src/plugins/debugger/gdb/classicgdbengine.cpp
	src/plugins/debugger/gdb/pythongdbengine.cpp
	src/plugins/debugger/lldblib/guest/lldbengineguest.cpp
	src/plugins/debugger/lldblib/guest/lldbengineguest.h
	src/plugins/debugger/lldblib/guest/main.cpp
	src/plugins/debugger/lldblib/ipcengineguest.cpp
	src/plugins/debugger/lldblib/ipcengineguest.h
	src/plugins/debugger/lldblib/ipcenginehost.cpp
	src/plugins/debugger/lldblib/ipcenginehost.h
	src/plugins/debugger/lldblib/lldbenginehost.cpp
	src/plugins/debugger/lldblib/lldboptionspage.cpp
	src/plugins/qbsprojectmanager/qbsstep.cpp
	src/plugins/qbsprojectmanager/qbsstep.h
	src/plugins/qmlprofiler/canvas/qdeclarativecanvas.cpp
	src/plugins/qmlprofiler/canvas/qdeclarativecanvas_p.h
	src/plugins/qmlprofiler/canvas/qdeclarativecontext2d.cpp
	src/plugins/qmlprofiler/canvas/qdeclarativecontext2d_p.h
	src/plugins/qmlprofiler/canvas/qmlprofilercanvas.cpp
	src/plugins/qnx/blackberrycheckdevmodestep.cpp
	src/plugins/qtsupport/debugginghelper.cpp

Change-Id: Ie9fd0a885fb6264a6a8a72daee071b75bcbd2e9d
2014-01-08 11:01:06 +01:00
Robert Loehning
746c5d8863 Incremented year in copyright info
Change-Id: Ib5423fdd064e4546f848c0b640b0ed0514c26d3a
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-08 08:29:47 +01:00
Ulf Hermann
fb5237a9c8 QmlProfiler: Only load data into child models when it's ready
Loading data on ProcessingData would lead to incomplete information
about source code locations. Rebuilding the whole model on any kind
of changed() signal is wasteful.

Task-number: QTCREATORBUG-11100
Change-Id: I9f8d718bff6149ca2dc2d0482c11d66d940af15d
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-02 16:46:07 +01:00
Ulf Hermann
54340fd13b QmlProfiler: Make sure the different models agree on their state
Previously, the QmlProfilerSimpleModel would report a count of 1/1 when
empty while all others report 0/1. This leads to the UI waiting
forever for the "missing" data.

Task-number: QTCREATORBUG-11095
Change-Id: I165278caa5a2bece362bf869608d501d7f553c91
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-02 16:08:44 +01:00
Ulf Hermann
84e7504317 QmlProfiler: Make sure the painter state is restored at some point.
By returning early from the method painting the binding loop markers
painter states could be left on the stack, triggering error messages
later.

Change-Id: I0b9c336e44a28feec96c506d0e3d0da291054bbd
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-02 16:08:34 +01:00
Ulf Hermann
00704e3494 QmlProfiler: Don't connect all the binding loop markers in Overview
It's a good idea to start a new path for each of them. They're quite
unrelated after all ...

Task-number: QTCREATORBUG-11099
Change-Id: Id47e482b948a0827018c71ddc8d13e2e69829bc4
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-02 14:51:24 +01:00
Ulf Hermann
5332f35dfb QmlProfiler: send gotoSourceLocation also from JS profiler
Task-number: QTCREATORBUG-11094
Change-Id: I9e3ef29b6f14d44e15df16ec051b33ea9393968b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-02 14:51:09 +01:00
Ulf Hermann
f08d46aa7d QmlProfiler: anchor mouse areas of detail windows to parent items
Having a mouse area larger than the item to be dragged certainly
creates funny effects, but isn't really useful...

Change-Id: I98efb7a6145a09edfdbc090b34bb306383b302cd
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-02 13:44:19 +01:00
Eike Ziller
e035ae6df1 Merge remote-tracking branch 'origin/3.0'
Conflicts:
	share/qtcreator/debugger/stdtypes.py
	src/plugins/qmlprofiler/qmlprofilereventsmodelproxy.cpp

Change-Id: I5d86746d58960e41e01e725ccb2a6c00890f0dfd
2013-12-18 11:02:16 +01:00
Friedemann Kleint
dc6b28366c Avoid value-list creation when iterating over maps.
Change-Id: I704ba93d01ffababb405bc801f07a845631930cc
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2013-12-16 16:03:16 +01:00
Ulf Hermann
cf142973e0 QmlProfiler: Don't emit two changed() signals in a row
Without this all the data is processed another time in all timeline
models when the second signal is emitted. This is quite wasteful.

Task-number: QTCREATORBUG-10950
Change-Id: Iac1315689e0900abb48efc1cf6390ec559a1897c
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2013-12-13 10:37:51 +01:00
Kai Koehne
410ae45c56 QmlProfiler: Make sure details for bindings are shown in Events pane
React to a second changed() signal from the simple model that is
emitted after the binding text has been retrieved from the local files.
This will rebuild the whole model effectively twice ... ideally we'd
just update the text, but it shouldn't be a performance problem, either.

Change-Id: I71a47f0faddd3938711e2e190f1e9c961be343e4
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2013-12-12 12:36:53 +01:00
Ulf Hermann
5368188377 QmlProfiler: Use SortedTimelineModel for paint events
Change-Id: Ib511897b5a314d36e906d7c52a09a88c281925fc
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-12-12 09:38:29 +01:00
Ulf Hermann
96a0e5eea3 QmlProfiler: Use the SortedTimelineModel for basic timeline model
Change-Id: I259d2e49c247fc512b0c5ced2d3f3a5a68312c4b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-12-11 17:28:52 +01:00
Ulf Hermann
52ea8b54bd QmlProfiler: Improve layout of detail windows
By using the QML Grid element the windows' widths can be made dynamic,
preventing text overflow while still retaining the two-column-layout.

Change-Id: I8b70027126aef5f9e2c4176245caf1b472df4040
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-12-11 17:28:39 +01:00
Ulf Hermann
5c7509dd09 QmlProfiler: Add another data state "ClearingData"
This allows us to steer the timeline models in a more fine grained
way and avoid duplicate processing of the same data. We don't need
to rebuild everything on stateChanged of the model manager then.

Task-number: QTCREATORBUG-10950
Change-Id: I2aa9a96a33c602f062fc3b644ac06280ba7cd45a
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-12-11 17:28:30 +01:00
Ulf Hermann
210e780cc3 QmlProfiler: Deduplicate dataChanged() slot in timeline models.
The same code was repeated all over the place.

Change-Id: I70a8caa46c91a7b55fd7eecac32cdc53b5d94cfb
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-12-11 17:28:20 +01:00
Ulf Hermann
d9bb54b7c8 QmlProfiler: Remove some dead code.
Those functions aren't called from anywhere. Wheel zooming has been
removed a long time ago and centering is handled in a different way.

Change-Id: Ib55fdfdd3cf794563eaa50ff9b5f1a1dfe94a17a
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-12-11 17:28:01 +01:00
Ulf Hermann
8799b64073 QmlProfiler: Add model template for range data
In order to unify the uses of range data and the calculation of first
and last ranges in visible areas we need a template class to provide the
respective algorithms.

Change-Id: I1c2e9c9fa9ae048262026236c4ff39017ab7913f
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-12-09 17:25:39 +01:00
Eike Ziller
072d551c73 Merge remote-tracking branch 'origin/3.0'
Conflicts:
	qtcreator.pri
	qtcreator.qbs

Change-Id: I49dca8a41519869f122a4dfdbd6564b357ddeb1e
2013-12-05 11:58:42 +01:00
Ulf Hermann
d36cb8b476 QmlProfiler: Remove custom canvas implementation
The canvas integrated in QtQuick does the same thing. We can remove a
lot of code like this.

Change-Id: I6425ae4e1b542107defd9d76fa5755712a0f8613
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-12-03 15:01:16 +01:00
Ulf Hermann
68740869ef QmlProfiler: Update timeline contentWidth also if width changes
As the contentWidth depends on both the width of the flickable and the
currently selected time range it should be updated if either of them
change. Otherwise we can miss changes and show stale data.

Change-Id: Iab9e17eef3490531175a2374fb3da0e0071f3bd1
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2013-12-03 14:42:30 +01:00
Ulf Hermann
06a23c6da5 QmlProfiler: Handle enable and show signals for zoomslider in C++
As it's hard to pass arguments for signals from non-QML-mapped objects
to QML objects handle the signal in C++ instead and just directly set
the properties.

Task-number: QTCREATORBUG-10943
Change-Id: I039f6938db3d7e64ca1a4bcff2f0f6aa79c65219
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2013-12-03 09:47:03 +01:00
Ulf Hermann
2f8f51912c QmlProfiler: improve selection behavior in timeline
When selecting ranges in the timeline the selector would sometimes hang
or behave weirdly when moving back. This was due to incorrect logic in
the selection bounds calculation and because the vertical flicking would
steal mouse events.

Change-Id: I14074463422d1d9a0aa8ecd1f88847e7330c9b6b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2013-12-02 12:12:29 +01:00
Tobias Hunger
30d914d4e7 QmlProfiler: Set parent for the QmlProfiler actions
Change-Id: Ia67d98855548c4d2c80ad76ff633a2399e30ad9c
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-29 10:49:28 +01:00
Tobias Hunger
3b221697ff QmlProfiler: Remove a couple of empty lines
Change-Id: I5da7f2971dfd957d0188149eb8b4fde198609e6b
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-29 10:49:20 +01:00
Ulf Hermann
38583c79a2 QmlProfiler: Improve readability of time labels
Previously there would sometimes be a long line of equal time labels
if you selected a small range from the middle of a long trace. This
patch increases the accuracy of the labels based on selected range,
not on start time.

Task-number: QTCREATORBUG-10865

Change-Id: I482da242c5e9f0117611f100888e80e23ad91b4c
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-22 11:46:10 +01:00
Ulf Hermann
eadeabe59e QmlProfiler: Remover some dead code
As the timeline cannot show out of bounds areas anymore we can remove
the code which draws the background for them.

Change-Id: Ifedfc10b67bd4ce2e2a4bb2cbdcc03b877472a92
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-22 10:53:29 +01:00
Ulf Hermann
070de17ec7 QmlProfiler: Properly align time labels and bars
Due to QTBUG-34962 we can't rely on the width properties of Flickables
so we use some other elements to size the background bars.

Task-number: QTCREATORBUG-10882
Change-Id: Iee427022111b6092486adaebfd33f8e2e6a91190
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-22 10:53:21 +01:00
Ulf Hermann
13abd6d65d QmlProfiler: Restrict selection ranges to a minimum of 500ns
Smaller ranges shouldn't be useful for anything but create rounding
errors all over the place.

Task-number: QTCREATORBUG-10880
Change-Id: I5cf5e2c08b5cae676717ba8ada1cddee4523c399
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-22 10:53:09 +01:00
Ulf Hermann
8c6cb64d1e QmlProfiler: Make range selection boundaries consistent
You shouldn't be able to select out of range areas with the selector in
the timeline if you can't scroll to see them anyway.

Change-Id: Ia1909f463db2c64dc2605eac7f4be53a76222338
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-21 17:13:33 +01:00
Ulf Hermann
71f3baae6b QmlProfiler: Remover "rubber" behavior for horizontal Flickable.
By overflicking you could reduce the selected range and implicitly zoom
in. That seemed wrong. The rubber effect doesn't serve a real purpose
on desktop applications anyway.

Task-number: QTCREATORBUG-10864
Change-Id: Id4d6107e23c184621c5fcce21bf042e6ed4bd8e6
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-21 17:13:16 +01:00
Ulf Hermann
acba504a53 QmlProfiler: Centralize redrawing of custom canvas
Don't handle redraw events in QML anymore and instead trigger a redraw
on geometryChange as well as componentComplete from C++. This reduces
redundant code and glitches from forgotten QML event handlers.

Change-Id: I0eadfb54cf8e392152c4d91b83c874b37b1aca96
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-21 15:34:50 +01:00
Ulf Hermann
2a4aebed76 QmlProfiler: Use anchors to determine the size of the timebar background
For some reason, when the timeline width is 0, the background width can
get negative, if using bindings; it works fine when using anchors.

Change-Id: I5eb76f83b9c41c1a71a135082770079cedc7f16c
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-19 12:38:17 +01:00
Ulf Hermann
69041fbb5c QmlProfiler: Don't try to paint things in pixmap of negative size.
In certain conditions the area covered by the canvas can have a negative
size. This patch handles that case gracefully.

Change-Id: I952edfa5bd0f8b42ce69356106f2e0f326dceeb7
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-19 10:42:52 +01:00
Aurindam Jana
9d38b866f9 QmlProfiler: Remove ScrollableQuickView
As the timeline can scroll by itself now we don't need an external
scrolling helper anymore.

Change-Id: I831eaf2302ced7649b4746e5c7d10121d83a4794
Reviewed-by: Aurindam Jana <aurindam.jana@digia.com>
2013-11-18 11:35:37 +01:00
Ulf Hermann
1fd14c4c99 Disable the Javascript profiler while there is no data available.
With V4 the Javascript profiler is unusable. In order not to suggest to
the user that it is actually usable, we disable it if it doesn't show
any data. However, when profiling applications that don't use V4, yet,
the JS profiler actually works and has to be enabled.

Change-Id: Iecb97c0940addd157c5ebe229edb614448cc0554
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-15 14:44:12 +01:00