aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/qmlprofiler/timelinerenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/qmlprofiler/timelinerenderer.cpp')
-rw-r--r--plugins/qmlprofiler/timelinerenderer.cpp20
1 files changed, 13 insertions, 7 deletions
diff --git a/plugins/qmlprofiler/timelinerenderer.cpp b/plugins/qmlprofiler/timelinerenderer.cpp
index 741e357989..e31dd6c473 100644
--- a/plugins/qmlprofiler/timelinerenderer.cpp
+++ b/plugins/qmlprofiler/timelinerenderer.cpp
@@ -83,12 +83,14 @@ void TimelineRenderer::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWid
for (int modelIndex = 0; modelIndex < m_profilerModelProxy->modelCount(); modelIndex++) {
int lastIndex = m_profilerModelProxy->findLastIndex(modelIndex, m_endTime);
- if (lastIndex < m_profilerModelProxy->count(modelIndex)) {
+ if (lastIndex >= 0 && lastIndex < m_profilerModelProxy->count(modelIndex)) {
int firstIndex = m_profilerModelProxy->findFirstIndex(modelIndex, m_startTime);
- drawItemsToPainter(p, modelIndex, firstIndex, lastIndex);
- if (m_selectedModel == modelIndex)
- drawSelectionBoxes(p, modelIndex, firstIndex, lastIndex);
- drawBindingLoopMarkers(p, modelIndex, firstIndex, lastIndex);
+ if (firstIndex >= 0) {
+ drawItemsToPainter(p, modelIndex, firstIndex, lastIndex);
+ if (m_selectedModel == modelIndex)
+ drawSelectionBoxes(p, modelIndex, firstIndex, lastIndex);
+ drawBindingLoopMarkers(p, modelIndex, firstIndex, lastIndex);
+ }
}
}
m_lastStartTime = m_startTime;
@@ -311,7 +313,8 @@ void TimelineRenderer::manageHovered(int x, int y)
// find if there's items in the time range
int eventFrom = m_profilerModelProxy->findFirstIndex(modelIndex, time);
int eventTo = m_profilerModelProxy->findLastIndex(modelIndex, time);
- if (eventTo < eventFrom || eventTo >= m_profilerModelProxy->count()) {
+ if (eventFrom == -1 ||
+ eventTo < eventFrom || eventTo >= m_profilerModelProxy->count()) {
m_currentSelection.eventIndex = -1;
return;
}
@@ -457,7 +460,8 @@ void TimelineRenderer::selectPrev()
int candidateModelIndex = -1;
qint64 candidateStartTime = m_profilerModelProxy->traceStartTime();
for (int i = 0; i < m_profilerModelProxy->modelCount(); i++) {
- if (itemIndexes[i] == -1)
+ if (itemIndexes[i] == -1
+ || itemIndexes[i] >= m_profilerModelProxy->count(i))
continue;
qint64 newStartTime = m_profilerModelProxy->getStartTime(i, itemIndexes[i]);
if (newStartTime < searchTime && newStartTime > candidateStartTime) {
@@ -493,6 +497,8 @@ int TimelineRenderer::nextItemFromId(int modelIndex, int eventId) const
ndx = m_profilerModelProxy->findFirstIndexNoParents(modelIndex, m_startTime);
else
ndx = m_selectedItem + 1;
+ if (ndx < 0)
+ return -1;
if (ndx >= m_profilerModelProxy->count(modelIndex))
ndx = 0;
int startIndex = ndx;