model.parent(someFirstLevelItem) should return the invisible root item.
Methods with default parameter in the base class should also have a
default parameter in the derived class. As rowCount() is Q_INVOKABLE
columnCount() should also be.
Change-Id: I62a0ec6f91d01581fd47a43c97af63c58cdd13fa
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Giving individual RunControls the freedom back to decide what they want,
even if they currrently decide to use the same one.
Change-Id: Ia2acf4b9d32d23c486339b2488611038672aba25
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
They are needed in the timeline view.
The change in qtcreator-project.qdocconf makes sure
that qdoc still finds the referenced icons.
Change-Id: I812fba8e57d06d93efc00c295467c83c08cd1784
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
This maintains current behavior by letting all subclasses return 'false'.
This might be too pessimistic, but can be fixed on a per-tool base
Change-Id: I71ac1b1e2cc98cfb1c5b76bc7c60a3240c5d1dcd
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
It doesn't make much sense to require a non-exported class to be passed
to the ctor of an exported one.
Change-Id: I15463f3ec0153a71cb55ad83724ec071a504a483
Reviewed-by: hjk <hjk@theqtcompany.com>
We want the editor to jump to the right source location when selecting
different events from the timeline. If all memory events have the same
ID this doesn't work. Now they of course have the IDs of the origin
events, but that's not a problem because when you select first the
memory event and then its origin, the editor position does in fact not
have to change.
As an added benefit, the typeId cannot be -1 anymore now.
Change-Id: I95520eeb3e6902e046f3f552c74dba776e7c8b62
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
There is no need to waste time rebuilding all the labels etc for each
new model.
Change-Id: I1ca24da7d55100b3c8efd8eea650b68b8b7c7737
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
This way we only have to transmit the location and data events once per
type, not once per event.
Change-Id: Ic6ab9619824764fc8b3abf09c7b58200eda2a198
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This way we will be able to use server-provided type IDs for more
efficient lookup of event types.
Change-Id: I37cd592a7829e5f36c6cfc04e400013d1dc37155
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Running them through the model manager via signals doesn't make much
sense anymore.
Change-Id: I6103d281dd640493f28acd7e787ea49712ebd8df
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Some compilers don't like explicit initializers for arrays.
Change-Id: I49d056e0000334857a635d8da10491c0d1e5f36c
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Instead of the progress bar we can now show the number of events we
have received, and the number of finished finalizers. This should give
a the user a better idea of what is going on.
Change-Id: I324fefbe6d5e3c24b080bfbc103c4317fa585215
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Storing traces in binary form is preferable as loading and saving is
faster and the trace files are smaller.
Change-Id: Ia7340ac526d5ce9391b1e32fc48fc1fab3ffa13d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
As we only ever iterate the master event list in a linear fashion, we
can use a temporary file to store it. This should allow for larger
traces to be handled without running out of memory.
Change-Id: I0d2aea6f998458fe5f426f6fef0f6937e915ae68
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This removes the last access to the master event list, which allows
us to also remove the accessor function.
Change-Id: I0e70c2eb23d2b11aa8b131c03eb3adfad1a9b9e7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
We want to get rid of the big master list of QmlEvent in
QmlProfilerDataModel, as that gets very large for longer traces. In
order to reduce the dependencies on that list we load the events on the
fly into the child models while they are being received, rather than
having the child models query QmlProfilerDataModel for the event list
later.
As the trace client so far only emitted rangedEvent() for complete
ranges we run into problems with models that need their events sorted.
The rangedEvent() signals were sorted by end time, rather than start
time which makes it inconvenient to analyze them in a stack based way,
for aggregation. This is solved by passing on all the details from the
trace client to the models, with the QmlProfilerDataModel aggregating
the type information before having the events dispatched to the child
models.
Change-Id: I5831a20551f21cf91e27d298a709f604ebd96c3e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This paves the way for driving the event loading from the model
manager. Also, unify the loading and eliminate the two different
classes for the children models.
Change-Id: Ic89e757963292d75b3b6fd7d6012f09194dff5a9
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
When announcing features models have to provide functions that handle
events for those features now. The model manager gets a function to
dispatch events to the models that subscribe to them.
Change-Id: I3fd80443a68ba264a513d8d53ed473cf072f1dc7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
All the models do the same thing when loading the data: They iterate
the list of events, determine for each one if they accept it, and if
so, they load it. After the list has been fully loaded, they do some
finalization. This can be centralized, and ultimately we won't need to
expose the central QVector<QmlEvent> for that anymore.
Change-Id: Ia82facfdc3968200bbec323a02f2fcc02ac44e9e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Some models check the visibility to determine what to load.
Change-Id: I94d42ddc6e531d04f240c66d4b789826d8c17cf6
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
The progress bar in the state widget was rather meaningless. We rarely
know how many events we expect and it's rather hard to tell how long
each model will take to process them. Instead, we just show a 0-ranged
progress bar to tell the user that "something is happening".
Change-Id: Icb80840d1f0a1538bcf254faa37cbb36e25d342c
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
There is no reason to have an elaborate painting routine with rounded
corners and shadows. It doesn't fit the new "flat" paradigm and it's
unnecessarily complex.
Change-Id: I83ace95fdcccfc4cc41b17640a10154f7f64f89c
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
The tools' ability to hook into processing of the output is
retained by making the function virtual.
Also remove the unusual overload of the RunControl::appendMessage
slot and the signal of the same name by renaming the signal.
Change-Id: If3c3cc2dd9c933169dc30b16e3165c9b3cf1440e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
The default 0 value will be interpreted as 'use the editor stack'.
Also, drop the idea of value semantics for Perspective objects
to get a simpler approach to the destruction of owned widgets
(tools docks + central widget)
Change-Id: Ic6470411ee5d387c43447f95b5a12c81c6658ff8
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
c:\dev\insrc\devqc\src\plugins\qmlprofiler\qmlevent.h(274): warning
C4267: '=': conversion from 'size_t' to 'quint16', possible loss of data
Change-Id: I86ab7a9b2d01a3da70dd765cb64c6e58c1044cc1
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
We try to further compress the QML events when saving as we can use the
additional space in that case.
Change-Id: Ida308963685169d1daabd7936612628fd4d265ae
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This is the foundation for a new file format.
Change-Id: Ib5ae5bfe8b45d9dc654b443ab700186993c3bfc9
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
This way the file name matches the class name.
Change-Id: I6e65b0ea13a7e5b15d4c7e5ad7738fc03e3401ad
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Drop the timeChanged signal of QmlProfilerTraceTime, too, as that
doesn't serve a purpose anymore. We don't want intermittent changes
of the trace time to be reflected in the UI when loading.
Change-Id: I85f18b90fc404ec254c68625104d3e3f9077a1d9
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
The QmlTypedEvent is mainly useful to read a generic QmlEvent and
QmlEventType from a QPacket. QmlEventType has a stream operator to do
exactly that. QmlEvent also gets further options to store 32-bit data
in addition to 64- and 8-bit data. Also, with the more generic storage
layout we can reduce the memory consumption of range events by 50%.
This comes at the cost of additional memory allocations for non-range
events, but as non-range events are significantly less frequent than
range events, this is a good tradeoff. Finally the new storage layout
lends itself to efficient serialization, which will help when
developing new storage and transfer formats for QML traces.
Change-Id: I420de68b0142f23c8fb2ca8b329d7ffe69c83fe0
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
As many events are instantaneous and we're going to drop the duration
property soon, this is more fitting.
Change-Id: I6e13dd076a5b9df16aed44bf9f631ea5760e9cbf
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
There is not reason to keep them in the general data model and cross
reference between the models all the time.
Change-Id: Ic77c518928dcd6234555cb3f6a830bcc3dc4a1a4
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Move them out of the QmlProfilerDataModel class, drop the "Data"
suffix, and rename symbols that refer to them in order to call them by
their names.
Change-Id: I41151359921b325edb79111371083c4185bd148b
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
We never use the q pointer and we only show notes in the main model.
Change-Id: I635a97f8d878ba12b9ae55e2b758d1651d5e3aae
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>