aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmlprofiler
Commit message (Collapse)AuthorAgeFilesLines
* QmlProfiler: Always reset the context before drawing on a canvasUlf Hermann2014-04-143-0/+6
| | | | | | | | | | | | | The context is stateful and there could be any kind of junk left in it. In particular, the W3C spec says that it should be set up with a default clipping path on creation, but it doesn't say what should happen if the canvas is resized. Thus, we can never be sure that the clipping path is sane. Task-number: QTBUG-38297 Change-Id: If04597234e71574573888ce14deac5cf50df4a3f Reviewed-by: Eike Ziller <eike.ziller@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: No need to qualify calls to SortedTimelineModel::clear()Ulf Hermann2014-04-092-2/+2
| | | | | | | Task-number: QTCREATORBUG-12010 Change-Id: Idad222578a103f135c16d820c2e59172671ee048 Reviewed-by: Eike Ziller <eike.ziller@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Guess the trace end time if we don't receive EndTraceUlf Hermann2014-04-042-4/+6
| | | | | | | | Task-number: QTCREATORBUG-11952 Change-Id: Ie55b616a1fc54e0cccac5560ec66fb7cc496c8e2 Reviewed-by: Robert Loehning <robert.loehning@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com>
* QmlProfiler: Prevent integer overflows on contentWidth and contentXUlf Hermann2014-04-022-20/+23
| | | | | | | | | | | 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>
* QmlProfiler: Keep an extra time window in ZoomControlUlf Hermann2014-04-024-8/+126
| | | | | | | | | This window is dynamically sized so that no integer overflows can occur when using it in the timeline view instead of the whole trace time. Task-number: QTCREATORBUG-11879 Change-Id: Id86faaf614b5f833e47ce26bb859b63eb09e7547 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Don't ignore ranges of < 500ns in overviewUlf Hermann2014-03-311-3/+2
| | | | | | | | | | As most of the numbers involved are single precision floats rounding errors can easily lead to such numbers. Instead of ignoring it set the range to the smallest allowable value. Task-number: QTCREATORBUG-11879 Change-Id: If8d08b27cc9e4cf2a63ff4973f519b0d3363178d Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Guard the overview against recursively changing the rangeUlf Hermann2014-03-311-0/+5
| | | | | | | | | This is insignificant at lower zoom levels but becomes really annoying when closer to the 500ns limit. Task-number: QTCREATORBUG-11879 Change-Id: Ide0069f7c6b135aa31262a4396559fa3ba89f8e3 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Prevent integer overflows in timelinerendererUlf Hermann2014-03-312-24/+35
| | | | | | | | | When zooming in the x offset and width of events can be larger than 2^31. We can restrict them to the visible area, though. Task-number: QTCREATORBUG-11879 Change-Id: I841300b55cdd583d5c3fa58b196101038f6f6036 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: remove dead codeUlf Hermann2014-03-311-5/+1
| | | | | Change-Id: I80abc136237917c259fe63b05f783ad1c7601469 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Increase accuracy of various data typesUlf Hermann2014-03-313-7/+7
| | | | | | | | This prevents some overflows when zooming into the timeline. Task-number: QTCREATORBUG-11879 Change-Id: I968c4737af8c64798d196a1463268d86146864e7 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Try to make the compiler inline event start comparisonUlf Hermann2014-03-311-7/+9
| | | | | | | | | | This function is by a large margin the most often called one when loading a trace. Passing it as a pointer to qSort certainly doesn't help. Also, qSort is deprecated. Task-number: QTCREATORBUG-11823 Change-Id: I98d744d1615733de93a8d35bccaa338643a2f6f4 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Update selection also when only model changesUlf Hermann2014-03-314-49/+42
| | | | | | | | | | 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>
* QmlProfiler: unify centering on items and do it only once per clickUlf Hermann2014-03-311-14/+1
| | | | | Change-Id: Ic228a825aebe3d24eeb5b1d84c58499bae4ae69b Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: remove dead codeUlf Hermann2014-03-313-14/+9
| | | | | | | | The selectedEventChanged signal was never emitted and aliasing the selectedItem property was unnecessary. Change-Id: I2a15ad82bbf20a7ae9a42e17935242fbac7b5129 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Make sure only hovered events are selectedUlf Hermann2014-03-311-1/+7
| | | | | | Task-number: QTCREATORBUG-11824 Change-Id: Ib471f2a04b37e159fb7876e7f5c94ad3e8f368a9 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Avoid indexOf and contains on list of stringsUlf Hermann2014-03-311-2/+10
| | | | | | | | | The iteration and comparison done by that takes significant time for large traces. Task-number: QTCREATORBUG-11823 Change-Id: I706b42f64ef0fd8b89229f51e52f0faaaf61d87a Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Don't rebuild the same key list over and over when savingUlf Hermann2014-03-311-2/+7
| | | | | | | | Saving a trace is so much faster like this. Task-number: QTCREATORBUG-11823 Change-Id: I5c68a16739d8bc49bfc0e3bb923ab23058aab6d0 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Apply some coding styleUlf Hermann2014-03-311-5/+3
| | | | | Change-Id: I34d74254cf677c14538d937a596ff72054f89300 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Show a trace duration of 0 while data is being clearedUlf Hermann2014-03-311-2/+2
| | | | | | | Task-number: QTCREATORBUG-11834 Change-Id: Ie93ee7ed79534e86feec5809ef8e91a74da380fa Reviewed-by: Christian Stenger <christian.stenger@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Consistently clear when clear button pressedUlf Hermann2014-03-316-26/+24
| | | | | | | | | | | | 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>
* QmlProfiler: When clearing, set the trace duration to 0Ulf Hermann2014-03-311-1/+1
| | | | | | | | | | That is what the code in the main view expects of an empty trace and it's also logically more coherent. Task-number: QTCREATORBUG-11833 Change-Id: I78b90ca5332bfb004cabbb32c4eb3e7e83fd7187 Reviewed-by: Christian Stenger <christian.stenger@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Remove dead codeUlf Hermann2014-03-313-68/+0
| | | | | | | No need to keep properties around that aren't read anywhere. Change-Id: Ie9300ad646466a6a2368f644a420d8654891805f Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Android: notify qml profiler when app is stoppedUlf Hermann2014-03-192-6/+3
| | | | | | | | | | | | As we cannot determine reliably what happened to the app we drop the "success" parameter to notifyRemoteFinished(). It was almost always true before and where it wasn't it didn't do anything useful. The transition from AppRunning to AppKilled without AppDying in between was invalid and would have triggered an assertion when it happened. Task-number: QTCREATORBUG-11760 Change-Id: Iebf4ca9bddbcc7b152131f9574bc5f2c0a8ba44f Reviewed-by: Daniel Teske <daniel.teske@digia.com>
* QmlProfiler: Make sure y-offset in category labels is an integerUlf Hermann2014-03-181-1/+1
| | | | | | | | | This is only a workaround, for older versions of Qt. The real bug is that a non-integer y offset is interpreted inconsistently by QtQuick. Task-number: QTCREATORBUG-11732 Change-Id: Idcad0bf0cbef58b41c45e38aa29596717523ed0b Reviewed-by: Christian Stenger <christian.stenger@digia.com>
* QmlProfiler: Save/Load thread ids in trace filesUlf Hermann2014-03-171-0/+3
| | | | | | | Without this, a trace will change if you save and then reload it. Change-Id: I78bc6c58df2eb79305c069a5e45f62f9bf58c4ce Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Fix logic when timeout-connecting to QML portUlf Hermann2014-03-171-1/+3
| | | | | | | | The timeout signal doesn't contain the QML port but we might know it if we've explicitly set it. The previous logic makes no sense at all. Change-Id: I820255e492e919ee916a5f859d7809a6c5233399 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Fix order of updates to timeline contentX and contentWidthUlf Hermann2014-03-141-14/+29
| | | | | | | | | | | | | | | 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>
* Qnx: Add support for qml profiler in BlackBerry/QnxFrantisek Vacek2014-03-141-4/+5
| | | | | | | | | | | | | | We cannot set -qmljsdebugger arg in bar-descriptor.xml file since it can be done in DeployStep only. QTC architecture do not allows this. Current approach modifies already deployed MANIFEST.MF on the device. This patch has nothing to do with QML analyzer for pure QNX, it's purely for BlackBerry. Task-number: QTCREATORBUG-10520 Change-Id: I89e83c6ff70a7a35344ff7e3fe573fc19e797ccb Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
* Fix tooltips, add lacking dotsJarek Kobus2014-03-131-5/+5
| | | | | Change-Id: Id54a11b6868d5033fd1ecfd6324b7e50b94e305c Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
* QmlProfiler: Remove pointless second check for endTimeUlf Hermann2014-03-111-3/+0
| | | | | | | | If the selected events aren't in the specified time range the selection should be fixed. Change-Id: I8cb6b57054888433b5ebf66fce3b479b3266f86e Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Make sure that very narrow events can be hovered overUlf Hermann2014-03-111-5/+7
| | | | | | | | | | By giving the area the mouse "covers" a non-zero width events that last only a very short time can be selected even if no pixel in the timeline falls "into" them. Task-number: QTCREATORBUG-11692 Change-Id: I53b74e2a770719872e0afc57740f7762636dc641 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* use new base import style in qbs filesJoerg Bornemann2014-03-111-1/+1
| | | | | | Change-Id: Iecf32122df41f304ec6df538bb0dd8a263238a86 Reviewed-by: Jake Petroules <jake.petroules@petroules.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* QmlProfiler: Show multiple rows for animations from different threadsUlf Hermann2014-03-112-44/+51
| | | | | | Task-number: QTCREATORBUG-11659 Change-Id: I40ed0ff755b5583947de08207993325dc1039d87 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Remove pointless structUlf Hermann2014-03-111-6/+0
| | | | | Change-Id: I9a67048ba5c4dfc238c9f8456601922c4528a53c Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Allow filtering either JS or QML from the events viewUlf Hermann2014-03-105-18/+82
| | | | | | | | | | | | As a lot of events show up as QML bindings and signals and as JavaScript functions the events view can be hard to navigate. This change allows the user to either filter out JavaScript events and make it look like the old QML events view or filter out QML events and make it look like the old V8 JavaScript view. Change-Id: I9e0c1184da21263ae174f322b8fcd8ee5ca13f6d Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Deduplicate color selection and saturate colors some moreUlf Hermann2014-03-103-3/+25
| | | | | | | | | The original timeline colors are hard to see on certain devices. This makes them stand out more from the background. Change-Id: Icf6ef8a8ea360b7f47609f8673c4c6e22b091296 Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* QmlProfiler: Use crisper left/down arrows for the timelineUlf Hermann2014-03-103-0/+1
| | | | | | | | | | Before they were rather blurry. The new ones are uncompressed and strictly black/transparent. Also the "smoothing" is rather detrimental in this case, so it's switched off now. Change-Id: I38fe0bf9e3420a2077b5535958053718981bce4f Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* QML profiler: fix messages and UI textLeena Miettinen2014-03-072-4/+4
| | | | | | | | Use English instead of Latin. Fix capitalization of JavaScript. Change-Id: Ibd0e7122e4270554aad7beaa5f8cc727a208ad93 Reviewed-by: Ulf Hermann <ulf.hermann@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Cache file lookup when loading eventsUlf Hermann2014-03-071-1/+10
| | | | | | | | | | | The file lookup is the single most expensive operation when loading events from a profiled application, in particular because so far we're doing one lookup per source location, many of which are actually in the same files. Caching those lookups for a short time dramatically increases performance. Change-Id: Iaa47327aca3f34cbad194757d3ba152205788682 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Fix glitches when vertically resizing the timelineUlf Hermann2014-03-061-0/+3
| | | | | Change-Id: I4b75ea08e1822ddaf2a1b4ef6de2d43b3cfad1a1 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Don't needlessly interrupt the timeline flicking motionUlf Hermann2014-03-061-4/+6
| | | | | | | | | 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>
* QmlProfiler: take the left border into account when painting time marksUlf Hermann2014-02-271-4/+5
| | | | | | | | Without this the time marks are 1 pixel off in relation to the main view. Change-Id: Iee8aaee447fedb9c57934c8089874414d9000995 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Provide a horizontal scroll bar for the timelineUlf Hermann2014-02-273-154/+151
| | | | | | | | | | 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>
* QmlProfiler: relay context menu from trace view to parent widgetUlf Hermann2014-02-262-5/+56
| | | | | | | | | | As QQuickView is a window with its own event handling, disconnected from the main window, we need to relay relevant events manually. Task-number: QTCREATORBUG-11535 Change-Id: If316225ecc01ddc4255c209d7df70a9cee812596 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Properly initialize private members of timeline modelsUlf Hermann2014-02-262-0/+6
| | | | | | Task-number: QTCREATORBUG-11565 Change-Id: I227fba871beeed79923e794c03a08ff154c9e4f8 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Don't use the canvas context if it isn't readyUlf Hermann2014-02-263-0/+6
| | | | | | | | The documentation indicates that onPaint can actually be called while the context isn't ready. Change-Id: I32d861e016e5e990f3d940a35ec28956902041ba Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Remove gradient bordersUlf Hermann2014-02-257-132/+8
| | | | | | | It just looks so much better with "clean" borders. Change-Id: I9aae0e6f24556042e23580e224abb696913fc989 Reviewed-by: hjk <hjk121@nokiamail.com>
* QmlProfiler: retrieve the function names when loading a traceUlf Hermann2014-02-211-1/+1
| | | | | | | The "displayname" element is something else and not very useful. Change-Id: I3971de9ea2b042186748099df13076c24aec7bcc Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlProfiler: Fix range selectionUlf Hermann2014-02-212-11/+4
| | | | | | | | | 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>
* QmlProfiler: repeat lookup of filename when retrieving source locationUlf Hermann2014-02-211-1/+1
| | | | | | | | | The local file names are in fact not cached and it's unclear if that would be a good idea. Task-number: QTCREATORBUG-11525 Change-Id: Ib4faa5b2cfcc094e24d1a42333c3db1843068539 Reviewed-by: Kai Koehne <kai.koehne@digia.com>