Commit Graph

34 Commits

Author SHA1 Message Date
Ulf Hermann
38f4d6a5f2 QmlProfiler: rename "eventId" fields to "typeId" and "selectionId"
The convention is now that selections are the rows in the expanded
timeline, "types" are the types in the QmlProfilerDataModel, and
events are the single boxes in the timeline. Thus, the event view
shows only types and for consistency the V8 view does so, too.

Having eventId as synonym for "type index" and "event index" as
actual index into the list of events is confusing.

Change-Id: I6b7c4c3f1ab0a8b71c511de52ab296a2e91cf5f0
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-09-29 13:06:45 +02:00
Ulf Hermann
2b362de064 QmlProfiler: introduce properties for empty, hidden and displayName
Like this we can properly refer to them from QML.

Change-Id: I98378d543d307f78909191225e72c9d0404dfa1d
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-09-15 09:15:52 +02:00
Ulf Hermann
2e11197bca QmlProfiler: Centralize timeline rowCount calculation
Change-Id: I0db3641c0d6e750459d815e25909babf8534a4f6
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-09-15 09:15:39 +02:00
Ulf Hermann
6d58de0bad QmlProfiler: Allow preselection of events to be recorded
This allows us to reduce the amount of data we need to handle
if the user isn't interested in certain categories.

Task-number: QTBUG-41118
Change-Id: Ieaac12fb1dec29d6035642f433bc1a1d49e545c2
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-09-15 09:15:24 +02:00
Ulf Hermann
2677e33782 QmlProfiler: rename relative height of timeline items to "relativeHeight"
This clarifies that the item height is not absolute but relative to the
row height, and it reduces the ambiguity of the various "height" methods.

Change-Id: I391441147c88b47a14e539fc3853702bb517d27b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-09-10 15:43:00 +02:00
Ulf Hermann
18bf7113e0 QmlProfiler: Remove template/virtual magic from SortedTimelineModel
We actually don't have to save the actual data in the
SortedTimelineModel if we keep the data synchronized to the ranges. This
is easy to do by just keeping track of the indices when new ranges are
inserted. Like that we can eliminate the virtual function calls from
AbstractTimelineModelPrivate and simplify the type hierarchy.

Change-Id: Ia7aa02df57380932b689ddfe9a50ff2031198a7d
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-08-26 14:54:35 +02:00
Ulf Hermann
57fe9b7b5e QmlProfiler: Rename get* and find* methods to their canonical names
Also, all methods about events in models don't really need the "event"
prefix as that is what the models are about.

Change-Id: I7b995aa9c9dce7e01d4c862d094b1e73e6b6fb40
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-08-26 14:52:09 +02:00
Ulf Hermann
00e6285ece QmlProfiler: Rename occurrences of "title" to "displayName"
Also, remove categoryTitles() which isn't used anywhere.

Change-Id: I919abf1221fb71d407eb04190d27180ed39b7b45
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-08-26 14:51:39 +02:00
Ulf Hermann
be62804e53 QmlProfiler: Remove name from abstracttimelinemodel
It isn't used anywhere.

Change-Id: Ie69328b85d0b7de4fc2ade753567a8a24e3e2a03
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-08-26 14:50:25 +02:00
Ulf Hermann
1f46fca305 QmlProfiler: Remove getState() methods
A numerical representation of "state" is not so useful after all.

Change-Id: I7fc3ae08a2fd44000b5543f4ba25730a8d79358d
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-08-26 14:36:58 +02:00
Ulf Hermann
5ceb0b68d6 QmlProfiler: Remove lastTimeMark()
It's unused and there is no point in having it as you can retrieve the
time span from zoomControl

Change-Id: I474ecf4ee6c183ac8b97bbac9c47618f52d956c0
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-08-26 14:36:06 +02:00
Ulf Hermann
dcb14c4bc0 Boost small paint events a little when no scale is shown
Like this you can see if the frame rate is low, even if there aren't
many animations.

Change-Id: Ib9c759278d4c5e7e4bff94737e2ced87791f2e4b
Task-number: QTCREATORBUG-12589
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-07-03 10:23:31 +02:00
Ulf Hermann
7394211603 QmlProfiler: Off-by-one when calculating row offsets
Change-Id: I255f3e15e0afc0761a6d3c9a32955d007cd3b637
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-07-02 14:30:07 +02:00
Ulf Hermann
54b366d7d3 QmlProfiler: replace calls to QVector::length() with QVector::size()
Like that we get a higher chance of staying compatible with Qt < 5.2.

Change-Id: Iecd6e1fbf75bd610917a38a22635a0d8e731738f
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-06-24 14:57:25 +02:00
Ulf Hermann
0d695617f1 QmlProfiler: Add scales to rows in timeline
If you resize the rows to at least double their default size and if the
model specifies a scale it will be drawn as additional horizontal lines
and numbers in the background.

Change-Id: I02844b4102e043031ee04daa45666dc3f8da1d2e
Task-number: QTCREATORBUG-12337
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-06-24 14:50:31 +02:00
Ulf Hermann
63ca524069 QmlProfiler: Put height of rows in the timeline into the model
Like that we can provide functionality to interactively resize rows in
the model so that one can zoom in to more interesting parts.

Change-Id: I31f14cd8aa37703240ebec744ca2e77188fb0f27
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-06-24 14:50:02 +02:00
Ulf Hermann
22fb31557f QmlProfiler: remove useless signals
Sending a signal for every model when clearing or loading data is not
very smart.

Change-Id: Ifc81d74f6b7f93bcd6748a919dfb553050b8d725
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-06-17 16:26:16 +02:00
Ulf Hermann
fea6580c82 QmlProfiler: get rid of hash strings
Using strings to identify equal events is terribly inefficient. By
keeping a global list of event types we can assign each event a
numerical type index and use that to compare them.

We can also avoid excessive string copying and data duplication by
referring to the global type list where event type information is
needed.

Task-number: QTCREATORBUG-11823
Change-Id: I837bd5d0f5395b0003002ef8dd278fb27679c65d
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-06-17 16:26:06 +02:00
Ulf Hermann
c7c4be9cb2 QmlProfiler: Remove SingleCategoryTimelineModel
All models are single-category now, so we can merge that into the base
class.

Change-Id: I4eab43ac2b4a77402121f004097e51a29b379aa4
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-06-17 16:25:41 +02:00
Ulf Hermann
accc92ae47 QmlProfiler: Allow only one category per model in timeline
This simplifies the code a lot and allows for more flexibility
when interacting with the data.

Change-Id: I69630071eee66840e905fcd95ba8c708742d58b6
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-06-16 12:17:49 +02:00
Ulf Hermann
58e3c9ed05 QmlProfiler: Unify QML and V8 data models
There is no real reason for the existence of a QmlProfilerSimpleModel.

Change-Id: I6419973cfad5564913bf92f17fdcf7e529af4b01
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-19 15:57:29 +01:00
Ulf Hermann
4bfa5d62e0 QmlProfiler: Reduce code duplication between timeline models
Change-Id: Ic898ad06437209040c029304ee156f5aef5929da
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-19 15:26:03 +01:00
Ulf Hermann
2a00002e80 QmlProfiler: eliminate redundant isEmpty() methods
Change-Id: I05a82b0620a739d27478501ab43d2ac23839a811
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-18 14:48:49 +01:00
Ulf Hermann
55f28b971b QmlProfiler: eliminate redundant name() methods.
Change-Id: I6190fb1ba9fb86741362a251ddd3e39357b9a604
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-18 14:48:35 +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
adada0b95d QmlProfiler: Unify handling of category labels
Change-Id: I32ab2e354d3e45653e8dcb2cf8b0195d199786a6
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-18 14:45:52 +01:00
Ulf Hermann
47ce17b1ba QmlProfiler: Sanitize the signal exchange between models a bit
The model manager should only set its state to 'Done' if all models are
actually done. When that is the case it can safely emit dataAvailable,
too, freeing us of the need to apply a heuristic to the progress
percentage. In order to have a unified interface to the completion of
model processing an abstract base class for QML and V8 models is
introduced.

Task-number: QTCREATORBUG-11466
Change-Id: Id89c7ef5e24004baab7f37ee5486b69e7611aee0
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-18 14:43:52 +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
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
2dd9e781ec Trigger dataChanged in timeline model on stateChanged in model manager
Allow the timeline model to clear its caches if the model manager changes
states. The timeline model caches for example event categories which
become invalid if the manager assumes the state EMPTY.

Task-number: QTCREATORBUG-10706

Change-Id: I10529ac56d39b169b850a8b5250fd36cb65a57ba
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-11-11 15:15:57 +01: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