Commit Graph

98 Commits

Author SHA1 Message Date
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
Christiaan Janssen
b7304e2f2e QmlProfiler: Refactor
The code of the qmlprofiler client has become a bit too complex,
this patch reorganizes the modules in a more sensible way,
having the modules communicate with each other through a
state machine instead of the excess of signals and slots
from before.

Change-Id: I76f7313779888a1bd07a1cdb1acbf2e47aacf42a
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
2012-03-14 11:38:25 +01:00
Christiaan Janssen
1322a73efd QmlProfiler: read trace when application ended by the user
This patch avoids showing the "use the stop button" if the
application dies but the trace data was sent in time.

Note: with the current implementation in Qt5, the application
sometimes closes before all data could be sent.  That happens
with any non-trivial qml application.

Change-Id: Ie7b1568b2d69320d1887587dccac40a4b4d4d788
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
2012-02-17 17:25:00 +01:00
Christiaan Janssen
585e651310 QmlProfiler: manage server-side start tracing message
also
QmlProfiler: refactor eventlist state

If unexpected data is received, assuming server stopped profiling.
Also, introducing a eventlist state instead of relying on
signals sent around.  This is part of a coming bigger patch
where the profiler client is refactored.

Change-Id: Ibed9007903956daf03cc0fcb90f77b5ad2d3cf90
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
2012-02-17 17:22:23 +01:00
Christiaan Janssen
bd438d1c5c QmlProfiler: display binding loops
Change-Id: Ib553f67b25e614bd210959ce82bc970daa228fdb
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
2012-02-08 16:02:17 +01:00
Christiaan Janssen
95f1bb190f QmlProfiler: scroll automatically when selecting events out of view
Change-Id: I2f242895b00792d2e6930ec642209be886e22bad
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
2012-02-03 17:09:50 +01:00
hjk
2931a499e6 Long live the king!
Change-Id: I2b72b34c0cfeafc8bdbaf49b83ff723544f2b6e2
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
2012-01-26 19:55:36 +01:00
Christiaan Janssen
1958fd82d5 QmlProfiler: reading column information in bindings
Change-Id: I1a99c3508de733d98eb99f41419eccfdca030fe0
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
2012-01-20 12:18:50 +01:00
Christiaan Janssen
5fede0d497 QmlProfiler: tooltips for the labels column
Due to space restrictions, the descriptive text of events
in the labels column of the timeline view are elided.  This
patch adds tooltips on mouseover with location and details.

Change-Id: I229988e114f21e4d9575dff137aa91918ad1afa3
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
2012-01-13 11:28:43 +01:00