aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmlprofiler/qmlprofileranimationsmodel.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Avoid warning on empty expressionshjk2019-07-231-1/+1
| | | | | | | | For some reason, Q_UNUSED includes already a semicolon, adding one on the user side creates an additional empty statement. Change-Id: I9c5e8fac381345a60792cb75e2938fd53958d3b0 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* QmlProfiler: Rename all the timeline model data structs to ItemUlf Hermann2018-05-111-1/+1
| | | | | | | | This allows us to define a template for filling a QmlProfilerTimelineModel without spelling out all the type names. Change-Id: I97870287a795d95f58a949729afa715f145817bb Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* QmlProfiler: Remove accepted() methodsUlf Hermann2018-05-111-5/+0
| | | | | | | | | | | | The only place where we used them was handlesTypeId(), and there it was wrong. Each QmlProfilerTimelineModel has exactly one main feature it subscribes to. It might additionally accept events of some auxiliary features for context, but it doesn't really "handle" the respective types in the sense that you could, for example, attach notes to them. Therefore, just checking for the main feature is the right thing to do. Change-Id: If0c00444084b957f3b99d3456cdbf703ae4afc3d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Move Timeline and FlameGraph into a common "Tracing" libraryUlf Hermann2018-05-041-1/+1
| | | | | | | | | | This allows us to share code between the two, in particular the QML code for the Details window, and the theme code. This way we can potentially deduplicate some code. Change-Id: I3a0d26b18488bd2a46b5b077b5b5d79ac2dfc5ce Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* QmlProfiler: Move parts of model manager and trace file to TimelineUlf Hermann2018-04-191-0/+1
| | | | | | | | This way we can use the trace file loading and saving mechanism for other profilers. Change-Id: I98ec1cdde6f7abcea152cabf72e64d4e696dfa59 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* Timeline: Move modelId generation into aggregatorUlf Hermann2018-04-171-1/+1
| | | | | | | | | | | The way the notes model works requires every timeline model to have a different ID. Conversely no other kind of model actually needs an ID. Therefore it makes sense to have the TimelineModelAggregator manage the IDs as every timeline model will sooner or later be associated with an aggregator. Change-Id: Ib8b2c88ed883351d4e3e156dd13e1dd113c21808 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* Timeline: Use some better number typesUlf Hermann2018-01-161-1/+1
| | | | | | | | | | | | The scale parameters are converted to single precision float anyway as soon as we do something with them. We might as well change all the methods to be single precision, too. The min/max row values should really be 64bit as 32bit values are not enough to express memory usage. Change-Id: I2b058b112286eabb1c077f7e746c48b6b99cb416 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* QmlProfiler: Accept animations events with 0 animationsUlf Hermann2017-09-121-1/+0
| | | | | | | | | | | | There is no reason why we shouldn't. Logically that would be an animation frame without any running animations. The frame would still have a frame rate and we can still tell if it's the GUI or render thread. Furthermore the assert might be triggered by invalid trace data. Change-Id: I58578a941c5d1471dd1b299ed5f489ad160b2904 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* QmlProfiler: Remove references to QmlProfilerDataModelUlf Hermann2017-02-241-1/+0
| | | | | | | | | | We keep it private to QmlProfilerModelManager and proxy the last few methods that were directly called on the model. This enables us to remove the QmlProfilerDataModel class by integrating what is left of it into QmlProfilerModelManagerPrivate in a next step. Change-Id: Ie9b4e03fb286e5a0040374d00b7b26f810426278 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Timeline: Move printTime() into Timeline and add hours, minutes, nanosUlf Hermann2016-12-191-1/+2
| | | | | | | | We should use it for all time printing instead of duplicating the code everywhere. Change-Id: I530baa31fd7044aefce6201fec0ab27c99a61a1d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Timeline: Use QRgb and a lookup table for colorsUlf Hermann2016-11-091-1/+1
| | | | | | | | | | | | | It makes no sense to return a QColor as the only things we are using are the red, green, and blue components. Furthermore, colorFromHue() can only generate 360 different colors which we can easily cache instead of recalculating them on each request. This significantly reduces the time it takes to update the timeline render nodes. Change-Id: I7961014364a1bec5b089285148b2e6c141a6dc7d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* QmlProfiler: Add test for animations modelUlf Hermann2016-07-131-9/+9
| | | | | Change-Id: I0227d9c97b2b61d68ae5ed9e3f2f7e3776075338 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* QmlProfiler: Fix another type/event misnomerUlf Hermann2016-07-041-2/+2
| | | | | Change-Id: I135c4355b36f0ce7fe0aa2e108dbab1a7dc866e3 Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
* QmlProfiler: Provide a sane ctor for QmlEventType and use itUlf Hermann2016-06-101-1/+1
| | | | | | | | ... in turn, make its members private, so that we don't accidentally change them. Change-Id: Ibc65b406ee341d33f69647ed1b19e1e34f5cd535 Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
* QmlProfiler: Fix compile error in animations modelUlf Hermann2016-05-241-0/+1
| | | | | | | Some compilers don't like explicit initializers for arrays. Change-Id: I49d056e0000334857a635d8da10491c0d1e5f36c Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
* QmlProfiler: Load the timeline model data event by eventUlf Hermann2016-05-231-44/+31
| | | | | | | | | | | | 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>
* QmlProfiler: Remove detailed progress trackingUlf Hermann2016-05-231-3/+0
| | | | | | | | | | 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>
* QmlProfiler: Add a QmlTypedEvent and extend QmlEventUlf Hermann2016-05-091-4/+4
| | | | | | | | | | | | | | | | 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>
* QmlProfiler: Rename QmlEvent::startTime to "timestamp"Ulf Hermann2016-05-061-3/+3
| | | | | | | | 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>
* QmlProfiler: Apply some code cosmeticsUlf Hermann2016-05-061-4/+4
| | | | | Change-Id: I772713aec3a6c25136174b39b853a9ef3ee42a0b Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* QmlProfiler: Fix the naming scheme for events and event typesUlf Hermann2016-05-041-5/+5
| | | | | | | | | | 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>
* Move QmlProfiler specific files from qmldebug to qmlprofilerUlf Hermann2016-05-031-13/+11
| | | | | | | | | | These file were not used anywhere else and had no business to be in qmldebug to begin with. Moving them allows us to drop a number of namespace qualifications and forces us to rename a few local symbols in other classes in order to avoid name clashes. Change-Id: I658ed455eec027cbaddacf2980d2ea6827ae6205 Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
* Update License according to agreement with Free Qt FoundationTobias Hunger2016-01-191-17/+12
| | | | | | | * Update files in src/plugins Change-Id: Ia5d77fad7d19d4bb3498e78661982f68729adb22 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
* QmlProfiler: Allow string data in eventsUlf Hermann2015-11-171-10/+12
| | | | | | | | | The restriction to put all strings in the type data is becoming a burden to further enhancements. Also, introduce proper ctors for all event structs. Change-Id: I42d3bac96155ac1ac183a2b82785ce0396c5a932 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* QmlProfiler: Remove QmlProfilerBaseModelUlf Hermann2015-09-111-1/+1
| | | | | | | Now that the V8 model is gone we don't need a base model anymore. Change-Id: I35aee0627f78f417ec9c971e1c7bbf70adfc7b27 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* QmlProfiler: Define a main feature for timeline modelsUlf Hermann2015-07-021-4/+2
| | | | | | | They will be shown and hidden when that feature is enabled or disabled. Change-Id: I42b67bd25729901262298553b118fe2624941789 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* QmlProfiler: Remove separator commentsUlf Hermann2015-07-021-2/+0
| | | | | | | It's not clear what they're supposed to tell us. Change-Id: I62f4fb1265396b8d61df0ce6e3409f0eda677170 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* QmlProfiler: Remove extra clear() from loadData()Ulf Hermann2015-06-301-1/+0
| | | | | | | | | The models are expected to have been cleared already at this point. Clearing them again on loadData() makes it harder to properly set up their shown/hidden state. Change-Id: I70644015edb228f6a7a30d8ab3a4ad4b761686a5 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* Merge commit '3c85058694ee2e41658d17f524fb48f0b187d2fe'Eike Ziller2015-02-121-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/libs/utils/tooltip/tipcontents.cpp src/libs/utils/tooltip/tipcontents.h src/plugins/android/androiddeployqtstep.cpp src/plugins/baremetal/baremetalconstants.h src/plugins/baremetal/baremetaldevice.cpp src/plugins/baremetal/baremetaldevice.h src/plugins/baremetal/baremetaldeviceconfigurationwidget.cpp src/plugins/baremetal/baremetaldeviceconfigurationwidget.h src/plugins/baremetal/baremetaldeviceconfigurationwizard.cpp src/plugins/baremetal/baremetaldeviceconfigurationwizardpages.cpp src/plugins/baremetal/baremetaldeviceconfigurationwizardpages.h src/plugins/baremetal/baremetalplugin.cpp src/plugins/baremetal/baremetalplugin.h src/plugins/baremetal/baremetalruncontrolfactory.cpp src/plugins/baremetal/baremetalruncontrolfactory.h src/plugins/cppeditor/cppcodemodelinspectordialog.cpp src/plugins/cppeditor/cppdoxygen_test.cpp src/plugins/cppeditor/cppdoxygen_test.h src/plugins/debugger/breakpointmarker.cpp src/plugins/debugger/debuggeritemmodel.cpp src/plugins/debugger/debuggeritemmodel.h src/plugins/debugger/loadcoredialog.cpp src/plugins/genericprojectmanager/cppmodelmanagerhelper.cpp src/plugins/projectexplorer/addnewmodel.cpp src/plugins/projectexplorer/addnewmodel.h src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp src/plugins/qmlprofiler/abstracttimelinemodel.cpp src/plugins/qmlprofiler/abstracttimelinemodel.h src/plugins/qmlprofiler/notesmodel.cpp src/plugins/qmlprofiler/qml/CategoryLabel.qml src/plugins/qmlprofiler/qml/MainView.qml src/plugins/qmlprofiler/qml/Overview.js src/plugins/qmlprofiler/qml/Overview.qml src/plugins/qmlprofiler/qml/TimeDisplay.qml src/plugins/qmlprofiler/qml/TimeMarks.qml src/plugins/qmlprofiler/qmlprofilertimelinemodelproxy.cpp src/plugins/qmlprofiler/sortedtimelinemodel.cpp src/plugins/qmlprofiler/sortedtimelinemodel.h src/plugins/qmlprofiler/timelinemodelaggregator.cpp src/plugins/qmlprofiler/timelinemodelaggregator.h src/plugins/qmlprofiler/timelinerenderer.cpp src/plugins/qmlprofiler/timelinerenderer.h src/plugins/qmlprojectmanager/QmlProjectManager.json.in src/plugins/texteditor/findinfiles.cpp src/plugins/vcsbase/vcsconfigurationpage.cpp src/shared/qbs src/shared/scriptwrapper/interface_wrap_helpers.h src/shared/scriptwrapper/wrap_helpers.h tests/auto/qmlprofiler/abstracttimelinemodel/tst_abstracttimelinemodel.cpp tests/system/suite_debugger/tst_debug_empty_main/test.py tests/system/suite_debugger/tst_qml_js_console/test.py tests/system/suite_debugger/tst_qml_locals/test.py Change-Id: I67540b648f8b162496f4aa606b04d50c7c9125c6
* QmlProfiler: Don't modify height of timeline items based on row heightUlf Hermann2014-12-051-10/+3
| | | | | | | | When precomputing all timeline items in advance we cannot react to height changes later Change-Id: Ib038fb59581fe8367c1c550839a728f371005ab6 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* QmlProfiler: Separate expanded and collapsed row heights and countsUlf Hermann2014-12-051-5/+10
| | | | | | | | | We'll need to access both of them when building the scene graph. This change also clarifies the dynamics between expanding categories and row heights and offsets. Change-Id: I2e2bf488ad973c95d05f230bf6fff63598f39bf2 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* QmlProfiler: Split AbstractTimelineModel in two classesUlf Hermann2014-11-211-8/+7
| | | | | | | | We need a general purpose TimelineModel and a specialized QmlProfilerTimelineModel. Change-Id: I2da02d65efa11e160cab5fa9f8a21075beb0e2bf Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* QmlProfiler: remove useless checks from labels() methodsUlf Hermann2014-11-211-2/+2
| | | | | | | The view should check if it needs the labels before requesting them. Change-Id: I935259e91337202224af7890d0617e1b12dd922a Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* QmlProfiler: Require model manager when constructing timeline modelsUlf Hermann2014-11-211-7/+5
| | | | | | | | | This relieves us of the headaches created by figuring out what should happen if the model manager is changed later. Extension models can be safely created through a factory. Change-Id: I8cf8fd6d639e4e6c9da66351ea44cfc35fd614a5 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* QmlProfiler: switch storage for typeId and selectionIdUlf Hermann2014-11-211-16/+18
| | | | | | | | | | | | The selectionIds are an integral part of the timeline and have to be given for each event. The typeIds are optional. Thus it makes more sense to store the selectionIds in the basic Range classes and have the derived models handle the typeIds instead of doing it the other way around. Change-Id: I824224b6f58e8d45311134887482586283fbff41 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com> Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* QmlProfiler: Don't needlessly use AbstractTimelineModelPrivateUlf Hermann2014-11-211-55/+28
| | | | | | | | We can easily implement all specialized models with only the public interface. Change-Id: I2fc75ad4a4270d9dd40068e78f9364f3963805e0 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* QmlProfiler: Sanitize AbstractTimelineModel public interfaceUlf Hermann2014-11-211-2/+2
| | | | | | | | Remove things we don't need and add some more methods to allow specialized models to operate without access to private class. Change-Id: I1f42c4299825f581361a79dd0a0e00c1c08b79e7 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* QmlProfiler: Merge SortedTimelineModel into AbstractTimelineModelUlf Hermann2014-11-211-1/+1
| | | | | | | | | | In order to provide a stable interface we need most of SortedTimelineModel to be private. There is no real benefit in keeping a distinction between AbstractTimelineModel and SortedTimelineModel as SortedTimelineModel isn't very useful on its own. Change-Id: Ibc6945e2740320f430f2634f95c7807d6b460123 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* QmlProfiler: Rename some classes and files to follow the common patternUlf Hermann2014-11-211-0/+249
The ones we'll refactor into the timeline library should be called timeline* and the others should be called qmlprofiler*. Change-Id: I6ecccbe4ef523681ca0baeef140368e2c1839964 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>