Commit Graph

41 Commits

Author SHA1 Message Date
Orgad Shaneh
52574da031 QmlDebug/QmlProfiler: Fix MSVC warnings
qmlprofilertraceclient.cpp:280: warning: C4334: '<<' : result of 32-bit
shift implicitly converted to 64 bits (was 64-bit shift intended?)

qmlprofilertool.cpp:539: warning: C4554: '<<' : check operator
precedence for possible error; use parentheses to clarify precedence

Change-Id: Ifaa048d42bccf203e6587a474c197c22b0f69fec
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
2014-09-24 12:35:38 +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
69743fef93 QmlProfiler: Filter event types also on client side
Like this we can still save some time and memory if the profiled
application doesn't support filtering.

Change-Id: I534ad4a11f62d28bd2fcfbffdc44f3902758dcbe
Task-number: QTBUG-41118
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-09-15 09:15:30 +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
d4585cf20c QmlProfiler: revert to fixed layout for detail windows
The dynamic layout creates more problems than it solves. A fixed layout
with proper elision and fixed window width certainly looks better.

Also, the view has to add the colons after the labels now.

Change-Id: I649351a742bd129ea9738359bac27e55e29d6a93
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-08-26 14:55:05 +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
092627f680 QmlProfiler: Simplify range details
There is no use in creating multiple nested maps and lists and
selecting special translation contexts for that.

Change-Id: Ib83ab651adca8258a0e5b9ac99a657623a24145b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-08-26 14:53:17 +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
4ecefc6857 QmlProfiler: Fix crash in range model
The first element in the expandedRowTypes is always -1 as that is the
empty row. Don't try to retrieve its type.

Change-Id: I1a4b59e0de6638201485d503e3be05afddf625fb
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-07-03 12:07:01 +02:00
Ulf Hermann
34f48ea0c0 QmlProfiler: improve location lookup a bit
It's not a good idea to copy the event location for every single lookup
and there is not point in always reconstructing the label strings,
either.

Change-Id: I2cea8a2a93b31d2c32bd2a27ae1d3b0bd26df6f6
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-06-24 16:22:13 +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
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
b0d79542b8 QmlProfiler: Replace QStringList with QString in event data
We never have multi-string event data and dragging around the list
everywhere just adds noise.

Change-Id: I4c73543464abea01d342e3f0a296ed1b05ee2a88
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-06-17 16:25:47 +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
3ea13b9b12 QmlProfiler: remove eventType and simplify nesting calculations
With only one category per model we only have one eventType per model
and thus we don't need to differentiate per type anymore when
calculating the nesting.

Change-Id: Ic42a1c5c056f3480b7842a57fbff66a5e907abfb
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-06-17 16:25:31 +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
94722ec5e7 QmlProfiler: Unify event type definitions
Generally save both the Message and RangeType attributes so that we
avoid clashes between those types. Also keep all the types in one
place and make their names follow qtdeclarative's conventions.

Change-Id: I811bfcc4b72aaa2a0142babc92d96968ed2d4007
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-06-06 15:24:28 +02:00
Ulf Hermann
88255a6881 QmlProfiler: No need to qualify calls to SortedTimelineModel::clear()
Task-number: QTCREATORBUG-12010
Change-Id: Idad222578a103f135c16d820c2e59172671ee048
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-04-09 16:56:41 +02:00
Ulf Hermann
20e2d1eb7d QmlProfiler: Avoid indexOf and contains on list of strings
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>
2014-03-31 10:55:06 +02:00
Ulf Hermann
64af5c12e0 QmlProfiler: Deduplicate color selection and saturate colors some more
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>
2014-03-10 12:10:39 +01:00
Leena Miettinen
4cc473c2e2 QML profiler: fix messages and UI text
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>
2014-03-07 15:43:43 +01:00
Ulf Hermann
676e4f582e QmlProfiler: Properly initialize private members of timeline models
Task-number: QTCREATORBUG-11565
Change-Id: I227fba871beeed79923e794c03a08ff154c9e4f8
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-26 15:33:33 +01: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
d09d508795 QmlProfiler: Only analyze binding loops for bindings and signals
Recursion markers for javascript, creating, or compiling aren't very
interesting.

Change-Id: I3220d06e1763619c01dabca31ef238b31b11dfbb
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-19 15:03:29 +01:00
Ulf Hermann
8f5df0b7da QmlProfiler: Make time formatting available to all timeline models
... and remove some dead code.

Change-Id: Ifdec932b87e8d33420d9713bfde9c4002f34844b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-02-18 14:49:22 +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
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
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
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
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
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
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
Christiaan Janssen
0a3b20f5f9 QmlProfiler: reworked
Change-Id: I66a236a024d76e7bef6edfb91ae30b5dd098b76b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-08-09 17:19:32 +02:00