Commit Graph

106 Commits

Author SHA1 Message Date
Ulf Hermann
6d41c6922f QmlProfiler: put all of the traceview in one QQuickView
Having multiple views not only is bad for performance but also creates
difficult to debug problems on some hardware configurations and is
fairly confusing.

Task-number: QTBUG-38222
Change-Id: I885e800b1ededab9137874105e3b2f9ec88a06e8
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-06-06 14:21:28 +02:00
Ulf Hermann
9e802e3af1 QmlProfiler: Reduce the amount of useless signals on item selection
By passing signals with identification information of varying accurary
between the different views the event being selected could be changed
while it was selected. By checking the current selection against the
information given in the signal and not reselecting when it matches the
situation is improved.

Also, the selection methods are given more appropriate names. We hardly
ever want to select the "next" event, but rather the "best fitting" one.

Task-number: QTCREATORBUG-11945
Change-Id: I659b4929cb88f4c931a0893aa95a3bc92da5a23b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-04-09 16:36:04 +02:00
Ulf Hermann
cdfc09f16f QmlProfiler: Prevent integer overflows on contentWidth and contentX
Using the extra window the ZoomControl keeps makes it impossible to
increase contentWidth to a point where it overflows. The drawback is that
the position on the scrollbar doesn't reflect the real position of the
visible part of the trace anymore if you zoom in to such a depth.

Task-number: QTCREATORBUG-11879
Change-Id: I6649f3c139f76c242a91d60364a28a4a00c9acee
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-04-02 16:47:03 +02:00
Ulf Hermann
84eadb01c8 QmlProfiler: Update selection also when only model changes
Previously, if you selected an event with the same ID from a different
model the rangeDetails wouldn't be updated. Now modelId and itemId can only
be updated together and a single signal is emitted for that. This signal is
then used to update the details.

Change-Id: Ie1e971f5ac8c041b49df347fa0fbb401d5422766
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-03-31 11:59:31 +02:00
Ulf Hermann
fa1b5eebb5 QmlProfiler: unify centering on items and do it only once per click
Change-Id: Ic228a825aebe3d24eeb5b1d84c58499bae4ae69b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-03-31 11:59:23 +02:00
Ulf Hermann
224210b0fa QmlProfiler: remove dead code
The selectedEventChanged signal was never emitted and aliasing the
selectedItem property was unnecessary.

Change-Id: I2a15ad82bbf20a7ae9a42e17935242fbac7b5129
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-03-31 11:59:14 +02:00
Ulf Hermann
13c8478d82 QmlProfiler: Apply some coding style
Change-Id: I34d74254cf677c14538d937a596ff72054f89300
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-03-31 10:40:56 +02:00
Ulf Hermann
0c9a9348f9 QmlProfiler: Consistently clear when clear button pressed
Several QML properties need extra treatment to avoid stale data
after clearing. Toggling the visibility of the timeline renderer
doesn't really help there.

Task-number: QTCREATORBUG-11833

Change-Id: I1903d7bd69d6fe31ecc4cadca8e30fa2104fa09a
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-03-31 10:39:52 +02:00
Ulf Hermann
7d23ee717d QmlProfiler: Remove dead code
No need to keep properties around that aren't read anywhere.

Change-Id: Ie9300ad646466a6a2368f644a420d8654891805f
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-03-31 10:34:38 +02:00
Ulf Hermann
64f31afd5d QmlProfiler: Fix order of updates to timeline contentX and contentWidth
contentWidth has to be updated before contentX as the WheelArea
underneath will clamp its horizontal value to its bounds on change and
thus break the update to contentX if contentWidth is growing.

As contentX is automatically updated by changes to contentWidth it's
generally a good idea to prevent any reactions to  that with a recursion
guard. When updating contentWidth before contentX this becomes necessary
for correct operation.

Task-number: QTCREATORBUG-11699
Change-Id: I34fff7a55e93745d658e8cbb5ac3d430a42770e8
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-03-14 17:07:01 +01:00
Ulf Hermann
1b6b1077cd QmlProfiler: Fix glitches when vertically resizing the timeline
Change-Id: I4b75ea08e1822ddaf2a1b4ef6de2d43b3cfad1a1
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-03-06 13:02:05 +01:00
Ulf Hermann
f696d01e72 QmlProfiler: Don't needlessly interrupt the timeline flicking motion
If the timeline is being flicked and we manually set contentX from the
zoomControl callback it will stop. That's unnecessary as the flicking
itself will trigger further updates to zoomControl.

Change-Id: Id14bde1bb33d6b1f6d719a41df23074981e474da
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-03-06 13:01:38 +01:00
Ulf Hermann
3cc743f1bf QmlProfiler: Provide a horizontal scroll bar for the timeline
This requires the consolidation of the nested Flickable elements into
one, which is probably a good idea anyway. The horizontal scroll bar is
important because people might not understand that they can use the
overview for scrolling.

Change-Id: Ie1555265fc3edafaf6e6e4f34d77b0d034d45639
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-27 14:54:45 +01:00
Ulf Hermann
cd85ac700d QmlProfiler: Remove gradient borders
It just looks so much better with "clean" borders.

Change-Id: I9aae0e6f24556042e23580e224abb696913fc989
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-02-25 17:46:15 +01:00
Ulf Hermann
b633fc186a QmlProfiler: Fix range selection
MainView.eventCount is always 0 since the last cleanup. It doesn't do
anything useful and can be removed.

Task-number: QTCREATORBUG-11515
Change-Id: I367a11e41c34e691550b6d6e5943fc372f0f04ca
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-21 12:37:30 +01:00
Ulf Hermann
db7c75597c QmlProfiler: eliminate redundant categories() methods
Change-Id: I3a85322cc583de37f1cc4eb256e3382a92c5c179
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-18 14:46:17 +01:00
Ulf Hermann
70aa948f0c QmlProfiler: Remove some useless signals and QML variables
We don't want to emit a signal for each event being added. That's
expensive and doesn't serve any purpose. We also don't have to save
the availability of data in QML as it isn't used anywhere.

Change-Id: I32db06a1955a7cfd6b569f50b81bf5278333b622
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-18 14:44:46 +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
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
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
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
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
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
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
fa6a35b054 QmlProfiler: Use RangeMover to simplify and fix SelectionRange
Deduplicate the code and fix the "jaggy" behavior.

Task-number: QTCREATORBUG-10762
Change-Id: Iaca3bc5b77cb8d92f082232e6fd3c2d9e0935300
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-14 17:20:44 +01:00
Ulf Hermann
188f5de5ed QmlProfiler: Provide a vertical scroll bar for the timeline view.
The timeline can be vertically navigated by flicking, which is not very
appropriate for desktop applications. This change provides a scroll bar
and mouse wheel scrolling in addition to that. Also it makes the
vertical movement stop at the boundaries. The mouse wheel would exhibit
unintuitive behavior without it.

Change-Id: I5ef126525e452f46aa0a483a544345b8f618d829
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-14 17:20:08 +01:00
Ulf Hermann
c6bbf76151 QmlProfiler: Avoid persistent horizontal "overflicking" in timeline.
The content of the horizontal Flickable element could remain at negative
positions after flicking and generally showed inconsistent behavior.
This was due to the redundant storage of the horizontal offset in
view.startX and flick.contentX. Explicitly assigning contentX from JS
code disables the automatic "rubber" effect which pulls the content back
into the allowed area.

Change-Id: I69e827854e2be3d8f6f4e2537e7105f80a8f2a89
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-13 15:24:40 +01:00
Ulf Hermann
761fd1198d QmlProfiler: Move zoom calculations into QML and simplify them.
The zoom level calculations were much too complex and introduced
rounding errors in various places. By moving them all into one
place and avoiding circular recalculations of the same thing those
problems are mitigated.

Task-number: QTCREATORBUG-10635

Change-Id: I7316caad1a590964402056a2e6430c8d059ae097
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-13 15:16:39 +01:00
Ulf Hermann
9e0175d8bb QmlProfiler: Reimplement zoom slider in QML
This restores the functionality of the old zoom slider. It probably
looks a bit different, but it does the same thing.

Task-number: QTCREATORBUG-10635

Change-Id: Idcb19187df066e4b1336df73b122aa567a732dee
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-13 15:16:28 +01:00
Ulf Hermann
bac12cfa2a QmlProfiler: Restrict rendering of timeline to visible area
The timeline can cover a large vertical space. The introduction of
the Flickable element to navigate that space has reverted the effect
of commit 5eb057c7e. This change restores the performance
improvements and avoids overflows in the underlying buffers.

Change-Id: I86ddd66652ee0a26c81619682a883622072b0f87
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-12 14:27:03 +01:00
Ulf Hermann
35a9015dea QmlProfiler: Draw time marks only in visible area
The vertical Flickable element can get very large if certain
categories are expanded. If the time marks have to fill the whole
element the underlying buffers holding the pixmaps and/or OpenGL
data may overflow.

Task-number: QTCREATORBUG-10420

Change-Id: I45952e8237bb827a963e0e4e8deb060646c0c8f4
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-12 14:26:49 +01:00
Ulf Hermann
20142d962a QmlProfiler: Add some indentation
Change-Id: I71a5ed05ccd219639a088fe73193d5263ca5880b
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-12 14:26:39 +01:00
Ulf Hermann
d3dd806546 QmlProfiler: Make timeline renderer vertically flickable
Introduce a second flickable element to encapsulate the timeline as
well as the labels and move SelectionRangeDetails and SelectionRange
out of that to make them float on top.

Task-number: QTCREATORBUG-10420

Change-Id: Ib4af7dc4b0155b9371c582938f1b4abb3e40cf06
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-12 14:19:37 +01:00
Ulf Hermann
d3e0ad9429 Remove non-functional tracking of profiler root's vertical scroll
Vertical scrolling doesn't work at the moment and has to be implemented
in a different way. Besides, the code tracking the root's vertical
scroll hasn't done anything useful in a long time.

Change-Id: If2add3874cba971bbaace2c22fbf1b2bf0b463b7
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
2013-11-11 16:26:04 +01:00
Ulf Hermann
08b2de2d51 Request a repaint from the TimelineRenderer if endTime changes
Previously the timeline was only repainted if the selected start time
changed. If the start time is != 0 changes of endTime unfortunately
imply changes of startTime most of the time. This is why the
effect was mostly invisible.

Task-number: QTCREATORBUG-10707
Change-Id: I21a86a4248c949f5ad630e6c5a30f8caedcbfe7e
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-08 17:11:06 +01:00
Ulf Hermann
8098347335 Don't set infinite or NaN numbers as start of the flick range
The flick range should always be bounded by finite numbers.

Task-number: QTCREATORBUG-10623
Change-Id: I27290eca531a1f36293dc0dea3dbdf0d2181e822
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-08 09:09:23 +01:00
Aurindam Jana
d349010445 QmlProfiler: Rename Label to CategoryLabel
This is to avoid confusion with generic Label
Quick component.

Change-Id: I6a72266c394862706215b6db40bcd3592f9d24b3
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-05 11:39:58 +01:00
Kai Koehne
0599cb7366 QmlProfiler: Avoid drawing outside of widget
Avoid rendering outside of the canvas by forcing the windows
size onto the scene, and also removing the related candidateSize
logic.

In the QtQUick1 based profiler one could scroll the canvas also
vertically, but that doesn't work any more. This is a hot fix
to work around the problem, we can hopefully bring back the
full solution later ...

Change-Id: Ibd3d54f6b98c3764e104116d395a77b880d88bcb
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-05 10:32:33 +01:00
Aurindam Jana
c9a851c649 QmlProfiler: Avoid generic property types in QML
Change-Id: I4dddf19d37004f59bfbe75b45e0b626bf1563fa2
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-09-18 10:37:33 +02:00
Aurindam Jana
a2d771b41e QmlProfiler: Update Qt Quick 2.0 to Quick 2.1
Change-Id: Ib40cf370798e12540d81e2f7ec532bb119293e4e
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-09-18 10:37:21 +02:00
Thomas Hartmann
9e58ab2ac8 QmlProfiler: Initial conversion from Quick 1 to Quick 2
Updated class names and functions. Fixed imports.

Change-Id: I5f12e3a108a0e60c091acc9c415ff77e52118029
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-09-16 14:35:53 +02:00
Christiaan Janssen
0a3b20f5f9 QmlProfiler: reworked
Change-Id: I66a236a024d76e7bef6edfb91ae30b5dd098b76b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-08-09 17:19:32 +02:00
Robert Loehning
298531e370 Incremented year in copyright info
Change-Id: Ic6a9ff0359625021ebc061d22db6811814534205
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-01-29 16:27:03 +01:00
hjk
386ca7c8dd Adjust license headers
Change-Id: Ice592c6de9951ee3b2c4cb52ed0bb3b6770e0825
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2012-10-05 17:12:56 +02:00
Eike Ziller
e0e8cf3ada Contact -> qt-project.org
Change-Id: I7134d7de30bcf9f9dcfad42520dd45ee083a852d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-19 13:23:21 +02:00
Christiaan Janssen
f1f8706578 QmlProfiler: state dialog as floating widget
Change-Id: I48ff1d729e49347881c82c7bd066d30ecaca47a5
Reviewed-by: Simjees Abraham <simjees.abraham@nokia.com>
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
2012-05-21 12:15:21 +02:00
Christiaan Janssen
af72e4bb3f QmlProfiler: show empty trace
In the case that the application did not generate any event
after running the profiler, still show an empty trace.
Otherwise the user will think that the profiler didn't work.

Change-Id: Idd15225270d55d834719f66387864433fcb9026d
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
2012-05-11 17:16:12 +02:00