diff options
author | Ulf Hermann <ulf.hermann@digia.com> | 2013-12-02 14:26:49 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@digia.com> | 2013-12-12 11:16:50 +0200 |
commit | 32f46f37fa1a2032396dfbbd5335a51f321bdae1 (patch) | |
tree | b75d59e5f6a3738722cf90ae0607439a64086983 | |
parent | eef8fe6544cd9f502c2a8beddacf9241282de38b (diff) | |
download | qt-creator-32f46f37fa1a2032396dfbbd5335a51f321bdae1.tar.gz |
Make sure that all pixmap URLs have a some event in the timeline
If that's not the case the categoryDepth() method will return a lower
number of categories than getLabelsForCategory() which leads to
glitches.
Change-Id: I2cf4c70586af2922f061a57c5a9f4b6bd0f77903
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
-rw-r--r-- | plugins/qmlprofilerextension/pixmapcachemodel.cpp | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/plugins/qmlprofilerextension/pixmapcachemodel.cpp b/plugins/qmlprofilerextension/pixmapcachemodel.cpp index d1fec8d171..ff77f8f962 100644 --- a/plugins/qmlprofilerextension/pixmapcachemodel.cpp +++ b/plugins/qmlprofilerextension/pixmapcachemodel.cpp @@ -395,17 +395,17 @@ void PixmapCacheModel::loadData() newEvent.urlIndex = d->pixmapUrls.count(); d->pixmapUrls << event.location.filename; d->pixmapSizes << QPair<int, int>(0,0); // default value - pixmapStartPoints << d->eventList.count(); // index to the starting point - } - - if (newEvent.pixmapEventType == PixmapSizeKnown) { // pixmap size - d->pixmapSizes[newEvent.urlIndex] = QPair<int,int>((int)event.numericData1, (int)event.numericData2); + pixmapStartPoints << -1; // dummy value to be filled by load event } newEvent.eventId = newEvent.urlIndex + 1; + newEvent.rowNumberExpanded = newEvent.urlIndex + 2; - // Cache Size Changed Event - if (newEvent.pixmapEventType == PixmapCacheCountChanged) { + switch (newEvent.pixmapEventType) { + case PixmapSizeKnown: // pixmap size + d->pixmapSizes[newEvent.urlIndex] = QPair<int,int>((int)event.numericData1, (int)event.numericData2); + break; + case PixmapCacheCountChanged: {// Cache Size Changed Event newEvent.startTime = event.startTime + 1; // delay 1 ns for proper sorting newEvent.eventId = 0; newEvent.rowNumberExpanded = 1; @@ -424,18 +424,16 @@ void PixmapCacheModel::loadData() newEvent.cacheSize = prevSize + pixSize; d->eventList << newEvent; lastCacheSizeEvent = d->eventList.count() - 1; + break; } - - // Load - if (newEvent.pixmapEventType == PixmapLoadingStarted) { + case PixmapLoadingStarted: // Load pixmapStartPoints[newEvent.urlIndex] = d->eventList.count(); - newEvent.rowNumberExpanded = newEvent.urlIndex + 2; d->eventList << newEvent; - } - - if (newEvent.pixmapEventType == PixmapLoadingFinished || newEvent.pixmapEventType == PixmapLoadingError) { + break; + case PixmapLoadingFinished: + case PixmapLoadingError: { int loadIndex = pixmapStartPoints[newEvent.urlIndex]; - if (!isNewEntry) { + if (!isNewEntry && loadIndex != -1) { d->eventList[loadIndex].duration = event.startTime - d->eventList[loadIndex].startTime; } else { // if it's a new entry it means that we don't have a corresponding start @@ -443,12 +441,18 @@ void PixmapCacheModel::loadData() newEvent.rowNumberExpanded = newEvent.urlIndex + 2; newEvent.startTime = traceStartTime(); newEvent.duration = event.startTime - traceStartTime(); + loadIndex = d->eventList.count(); d->eventList << newEvent; + pixmapStartPoints[newEvent.urlIndex] = loadIndex; } if (event.bindingType == PixmapLoadingFinished) d->eventList[loadIndex].cacheSize = 1; // use count to mark success else d->eventList[loadIndex].cacheSize = -1; // ... or failure + break; + } + default: + break; } m_modelManager->modelProxyCountUpdated(m_modelId, d->eventList.count(), 2*simpleModel->getEvents().count()); |