From 77e28efad6bc5809c904edcae38b104cc2b6a620 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 11 Jan 2018 13:31:58 +0100 Subject: [PATCH] Timeline: Use some better number types 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 --- src/libs/timeline/timelineitemsrenderpass.cpp | 6 +++--- src/libs/timeline/timelineitemsrenderpass.h | 2 +- src/libs/timeline/timelinemodel.cpp | 4 ++-- src/libs/timeline/timelinemodel.h | 4 ++-- src/libs/timeline/timelinenotesrenderpass.cpp | 2 +- src/libs/timeline/timelinenotesrenderpass.h | 2 +- src/libs/timeline/timelineoverviewrenderer.cpp | 5 +++-- src/libs/timeline/timelinerenderer.cpp | 2 +- src/libs/timeline/timelinerenderpass.h | 2 +- src/libs/timeline/timelinerenderstate.cpp | 4 ++-- src/libs/timeline/timelinerenderstate.h | 4 ++-- src/libs/timeline/timelinerenderstate_p.h | 2 +- src/libs/timeline/timelineselectionrenderpass.cpp | 2 +- src/libs/timeline/timelineselectionrenderpass.h | 2 +- src/plugins/qmlprofiler/memoryusagemodel.cpp | 2 +- src/plugins/qmlprofiler/memoryusagemodel.h | 2 +- src/plugins/qmlprofiler/pixmapcachemodel.cpp | 2 +- src/plugins/qmlprofiler/pixmapcachemodel.h | 2 +- src/plugins/qmlprofiler/qmlprofileranimationsmodel.cpp | 2 +- src/plugins/qmlprofiler/qmlprofileranimationsmodel.h | 2 +- .../qmlprofiler/qmlprofilerbindingloopsrenderpass.cpp | 4 ++-- src/plugins/qmlprofiler/qmlprofilerbindingloopsrenderpass.h | 2 +- .../timeline/timelinerenderpass/tst_timelinerenderpass.cpp | 4 ++-- 23 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/libs/timeline/timelineitemsrenderpass.cpp b/src/libs/timeline/timelineitemsrenderpass.cpp index 56e633dd139..cf79bbe5fd5 100644 --- a/src/libs/timeline/timelineitemsrenderpass.cpp +++ b/src/libs/timeline/timelineitemsrenderpass.cpp @@ -381,7 +381,7 @@ TimelineRenderPass::State *TimelineItemsRenderPass::update(const TimelineAbstrac const TimelineRenderState *parentState, State *oldState, int indexFrom, int indexTo, bool stateChanged, - qreal spacing) const + float spacing) const { Q_UNUSED(stateChanged); const TimelineModel *model = renderer->model(); @@ -416,8 +416,8 @@ TimelineRenderPass::State *TimelineItemsRenderPass::update(const TimelineAbstrac state->expandedRow(row)); rowNode->material.setScale( QVector2D(spacing / parentState->scale(), - static_cast(model->expandedRowHeight(row))) / - static_cast(TimelineModel::defaultRowHeight())); + static_cast(model->expandedRowHeight(row))) / + static_cast(TimelineModel::defaultRowHeight())); rowNode->material.setSelectedItem(selectedItem); rowNode->material.setSelectionColor(selectionColor); } diff --git a/src/libs/timeline/timelineitemsrenderpass.h b/src/libs/timeline/timelineitemsrenderpass.h index 3651df5b146..f1a8cc4a40f 100644 --- a/src/libs/timeline/timelineitemsrenderpass.h +++ b/src/libs/timeline/timelineitemsrenderpass.h @@ -95,7 +95,7 @@ public: static const TimelineItemsRenderPass *instance(); State *update(const TimelineAbstractRenderer *renderer, const TimelineRenderState *parentState, State *state, int firstIndex, int lastIndex, bool stateChanged, - qreal spacing) const; + float spacing) const; protected: TimelineItemsRenderPass(); }; diff --git a/src/libs/timeline/timelinemodel.cpp b/src/libs/timeline/timelinemodel.cpp index 438c2c36a5c..b175f1ecc26 100644 --- a/src/libs/timeline/timelinemodel.cpp +++ b/src/libs/timeline/timelinemodel.cpp @@ -415,13 +415,13 @@ float TimelineModel::relativeHeight(int index) const return 1.0f; } -int TimelineModel::rowMinValue(int rowNumber) const +qint64 TimelineModel::rowMinValue(int rowNumber) const { Q_UNUSED(rowNumber); return 0; } -int TimelineModel::rowMaxValue(int rowNumber) const +qint64 TimelineModel::rowMaxValue(int rowNumber) const { Q_UNUSED(rowNumber); return 0; diff --git a/src/libs/timeline/timelinemodel.h b/src/libs/timeline/timelinemodel.h index 514d7ad5209..97685aa4731 100644 --- a/src/libs/timeline/timelinemodel.h +++ b/src/libs/timeline/timelinemodel.h @@ -102,8 +102,8 @@ public: Q_INVOKABLE virtual int typeId(int index) const; Q_INVOKABLE virtual bool handlesTypeId(int typeId) const; Q_INVOKABLE virtual float relativeHeight(int index) const; - Q_INVOKABLE virtual int rowMinValue(int rowNumber) const; - Q_INVOKABLE virtual int rowMaxValue(int rowNumber) const; + Q_INVOKABLE virtual qint64 rowMinValue(int rowNumber) const; + Q_INVOKABLE virtual qint64 rowMaxValue(int rowNumber) const; Q_INVOKABLE int nextItemBySelectionId(int selectionId, qint64 time, int currentItem) const; Q_INVOKABLE int nextItemByTypeId(int typeId, qint64 time, int currentItem) const; diff --git a/src/libs/timeline/timelinenotesrenderpass.cpp b/src/libs/timeline/timelinenotesrenderpass.cpp index d18c1e16fe6..8c80c11e2fe 100644 --- a/src/libs/timeline/timelinenotesrenderpass.cpp +++ b/src/libs/timeline/timelinenotesrenderpass.cpp @@ -104,7 +104,7 @@ TimelineRenderPass::State *TimelineNotesRenderPass::update(const TimelineAbstrac const TimelineRenderState *parentState, State *oldState, int firstIndex, int lastIndex, bool stateChanged, - qreal spacing) const + float spacing) const { Q_UNUSED(firstIndex); Q_UNUSED(lastIndex); diff --git a/src/libs/timeline/timelinenotesrenderpass.h b/src/libs/timeline/timelinenotesrenderpass.h index 4eaa341863f..a84193747c9 100644 --- a/src/libs/timeline/timelinenotesrenderpass.h +++ b/src/libs/timeline/timelinenotesrenderpass.h @@ -37,7 +37,7 @@ public: State *update(const TimelineAbstractRenderer *renderer, const TimelineRenderState *parentState, State *oldState, int firstIndex, int lastIndex, bool stateChanged, - qreal spacing) const; + float spacing) const; private: TimelineNotesRenderPass(); diff --git a/src/libs/timeline/timelineoverviewrenderer.cpp b/src/libs/timeline/timelineoverviewrenderer.cpp index 57463656a04..8b78c54a1fa 100644 --- a/src/libs/timeline/timelineoverviewrenderer.cpp +++ b/src/libs/timeline/timelineoverviewrenderer.cpp @@ -63,8 +63,9 @@ QSGNode *TimelineOverviewRenderer::updatePaintNode(QSGNode *oldNode, 1.0, d->renderPasses.size()); } - qreal xSpacing = width() / d->zoomer->traceDuration(); - qreal ySpacing = height() / (d->model->collapsedRowCount() * TimelineModel::defaultRowHeight()); + float xSpacing = static_cast(width() / d->zoomer->traceDuration()); + float ySpacing = static_cast( + height() / (d->model->collapsedRowCount() * TimelineModel::defaultRowHeight())); for (int i = 0; i < d->renderPasses.length(); ++i) { d->renderState->setPassState(i, d->renderPasses[i]->update(this, d->renderState, diff --git a/src/libs/timeline/timelinerenderer.cpp b/src/libs/timeline/timelinerenderer.cpp index 983fbfa5095..182a7aadd63 100644 --- a/src/libs/timeline/timelinerenderer.cpp +++ b/src/libs/timeline/timelinerenderer.cpp @@ -120,7 +120,7 @@ QSGNode *TimelineRenderer::updatePaintNode(QSGNode *node, UpdatePaintNodeData *u return 0; } - qreal spacing = width() / d->zoomer->windowDuration(); + float spacing = static_cast(width() / d->zoomer->windowDuration()); if (d->modelDirty) { if (node) diff --git a/src/libs/timeline/timelinerenderpass.h b/src/libs/timeline/timelinerenderpass.h index 54dbe343889..f7b559b4a23 100644 --- a/src/libs/timeline/timelinerenderpass.h +++ b/src/libs/timeline/timelinerenderpass.h @@ -49,7 +49,7 @@ public: virtual State *update(const TimelineAbstractRenderer *renderer, const TimelineRenderState *parentState, State *state, int indexFrom, int indexTo, bool stateChanged, - qreal spacing) const = 0; + float spacing) const = 0; }; } // namespace Timeline diff --git a/src/libs/timeline/timelinerenderstate.cpp b/src/libs/timeline/timelinerenderstate.cpp index 1cd37219ada..f897496c56c 100644 --- a/src/libs/timeline/timelinerenderstate.cpp +++ b/src/libs/timeline/timelinerenderstate.cpp @@ -28,7 +28,7 @@ namespace Timeline { -TimelineRenderState::TimelineRenderState(qint64 start, qint64 end, qreal scale, int numPasses) : +TimelineRenderState::TimelineRenderState(qint64 start, qint64 end, float scale, int numPasses) : d_ptr(new TimelineRenderStatePrivate) { Q_D(TimelineRenderState); @@ -70,7 +70,7 @@ qint64 TimelineRenderState::end() const return d->end; } -qreal TimelineRenderState::scale() const +float TimelineRenderState::scale() const { Q_D(const TimelineRenderState); return d->scale; diff --git a/src/libs/timeline/timelinerenderstate.h b/src/libs/timeline/timelinerenderstate.h index c4e44da018b..246c9345d4f 100644 --- a/src/libs/timeline/timelinerenderstate.h +++ b/src/libs/timeline/timelinerenderstate.h @@ -33,12 +33,12 @@ namespace Timeline { class TIMELINE_EXPORT TimelineRenderState { public: - TimelineRenderState(qint64 start, qint64 end, qreal scale, int numPasses); + TimelineRenderState(qint64 start, qint64 end, float scale, int numPasses); ~TimelineRenderState(); qint64 start() const; qint64 end() const; - qreal scale() const; + float scale() const; TimelineRenderPass::State *passState(int i); const TimelineRenderPass::State *passState(int i) const; diff --git a/src/libs/timeline/timelinerenderstate_p.h b/src/libs/timeline/timelinerenderstate_p.h index d76dd6b3de0..3399e6b9af5 100644 --- a/src/libs/timeline/timelinerenderstate_p.h +++ b/src/libs/timeline/timelinerenderstate_p.h @@ -39,7 +39,7 @@ public: qint64 start; qint64 end; - qreal scale; // "native" scale, this stays the same through the life time of a state + float scale; // "native" scale, this stays the same through the life time of a state QVector passes; }; diff --git a/src/libs/timeline/timelineselectionrenderpass.cpp b/src/libs/timeline/timelineselectionrenderpass.cpp index c9953be53ef..422aae415f7 100644 --- a/src/libs/timeline/timelineselectionrenderpass.cpp +++ b/src/libs/timeline/timelineselectionrenderpass.cpp @@ -64,7 +64,7 @@ private: TimelineRenderPass::State *TimelineSelectionRenderPass::update( const TimelineAbstractRenderer *renderer, const TimelineRenderState *parentState, - State *oldState, int firstIndex, int lastIndex, bool stateChanged, qreal spacing) const + State *oldState, int firstIndex, int lastIndex, bool stateChanged, float spacing) const { Q_UNUSED(stateChanged); diff --git a/src/libs/timeline/timelineselectionrenderpass.h b/src/libs/timeline/timelineselectionrenderpass.h index b66328259b2..85ac511d6a6 100644 --- a/src/libs/timeline/timelineselectionrenderpass.h +++ b/src/libs/timeline/timelineselectionrenderpass.h @@ -38,7 +38,7 @@ public: State *update(const TimelineAbstractRenderer *renderer, const TimelineRenderState *parentState, State *state, int firstIndex, int lastIndex, bool stateChanged, - qreal spacing) const; + float spacing) const; protected: TimelineSelectionRenderPass(); diff --git a/src/plugins/qmlprofiler/memoryusagemodel.cpp b/src/plugins/qmlprofiler/memoryusagemodel.cpp index 30d0da85c77..ee933c03e10 100644 --- a/src/plugins/qmlprofiler/memoryusagemodel.cpp +++ b/src/plugins/qmlprofiler/memoryusagemodel.cpp @@ -39,7 +39,7 @@ MemoryUsageModel::MemoryUsageModel(QmlProfilerModelManager *manager, QObject *pa announceFeatures(Constants::QML_JS_RANGE_FEATURES ^ (1 << ProfileCompiling)); } -int MemoryUsageModel::rowMaxValue(int rowNumber) const +qint64 MemoryUsageModel::rowMaxValue(int rowNumber) const { Q_UNUSED(rowNumber); return m_maxSize; diff --git a/src/plugins/qmlprofiler/memoryusagemodel.h b/src/plugins/qmlprofiler/memoryusagemodel.h index 6de54550a0e..98ec40f4d5e 100644 --- a/src/plugins/qmlprofiler/memoryusagemodel.h +++ b/src/plugins/qmlprofiler/memoryusagemodel.h @@ -53,7 +53,7 @@ public: MemoryUsageModel(QmlProfilerModelManager *manager, QObject *parent = 0); - int rowMaxValue(int rowNumber) const override; + qint64 rowMaxValue(int rowNumber) const override; int expandedRow(int index) const override; int collapsedRow(int index) const override; diff --git a/src/plugins/qmlprofiler/pixmapcachemodel.cpp b/src/plugins/qmlprofiler/pixmapcachemodel.cpp index 5af3a124021..df30349b63b 100644 --- a/src/plugins/qmlprofiler/pixmapcachemodel.cpp +++ b/src/plugins/qmlprofiler/pixmapcachemodel.cpp @@ -38,7 +38,7 @@ PixmapCacheModel::PixmapCacheModel(QmlProfilerModelManager *manager, QObject *pa { } -int PixmapCacheModel::rowMaxValue(int rowNumber) const +qint64 PixmapCacheModel::rowMaxValue(int rowNumber) const { if (rowNumber == 1) { return m_maxCacheSize; diff --git a/src/plugins/qmlprofiler/pixmapcachemodel.h b/src/plugins/qmlprofiler/pixmapcachemodel.h index a5161f6ed69..c645c53deaa 100644 --- a/src/plugins/qmlprofiler/pixmapcachemodel.h +++ b/src/plugins/qmlprofiler/pixmapcachemodel.h @@ -96,7 +96,7 @@ public: PixmapCacheModel(QmlProfilerModelManager *manager, QObject *parent = 0); - int rowMaxValue(int rowNumber) const override; + qint64 rowMaxValue(int rowNumber) const override; int expandedRow(int index) const override; int collapsedRow(int index) const override; diff --git a/src/plugins/qmlprofiler/qmlprofileranimationsmodel.cpp b/src/plugins/qmlprofiler/qmlprofileranimationsmodel.cpp index 1c00071ad3e..337da28feda 100644 --- a/src/plugins/qmlprofiler/qmlprofileranimationsmodel.cpp +++ b/src/plugins/qmlprofiler/qmlprofileranimationsmodel.cpp @@ -109,7 +109,7 @@ int QmlProfilerAnimationsModel::rowFromThreadId(int threadId) const return (threadId == GuiThread || m_maxGuiThreadAnimations == 0) ? 1 : 2; } -int QmlProfilerAnimationsModel::rowMaxValue(int rowNumber) const +qint64 QmlProfilerAnimationsModel::rowMaxValue(int rowNumber) const { switch (rowNumber) { case 1: diff --git a/src/plugins/qmlprofiler/qmlprofileranimationsmodel.h b/src/plugins/qmlprofiler/qmlprofileranimationsmodel.h index e688bcfda65..8d109698338 100644 --- a/src/plugins/qmlprofiler/qmlprofileranimationsmodel.h +++ b/src/plugins/qmlprofiler/qmlprofileranimationsmodel.h @@ -51,7 +51,7 @@ public: QmlProfilerAnimationsModel(QmlProfilerModelManager *manager, QObject *parent = 0); - int rowMaxValue(int rowNumber) const override; + qint64 rowMaxValue(int rowNumber) const override; int typeId(int index) const override; Q_INVOKABLE int expandedRow(int index) const override; diff --git a/src/plugins/qmlprofiler/qmlprofilerbindingloopsrenderpass.cpp b/src/plugins/qmlprofiler/qmlprofilerbindingloopsrenderpass.cpp index 7c97296c495..f05146a09e3 100644 --- a/src/plugins/qmlprofiler/qmlprofilerbindingloopsrenderpass.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerbindingloopsrenderpass.cpp @@ -158,7 +158,7 @@ void updateNodes(const QmlProfilerRangeModel *model, int from, int to, Timeline::TimelineRenderPass::State *QmlProfilerBindingLoopsRenderPass::update( const Timeline::TimelineAbstractRenderer *renderer, const Timeline::TimelineRenderState *parentState, State *oldState, - int indexFrom, int indexTo, bool stateChanged, qreal spacing) const + int indexFrom, int indexTo, bool stateChanged, float spacing) const { Q_UNUSED(stateChanged); Q_UNUSED(spacing); @@ -244,7 +244,7 @@ void BindlingLoopsGeometry::allocate(QSGMaterial *material) void BindlingLoopsGeometry::addExpandedEvent(float itemCenter) { - float verticalCenter = Timeline::TimelineModel::defaultRowHeight() / 2.0; + float verticalCenter = Timeline::TimelineModel::defaultRowHeight() / 2.0f; Point2DWithOffset *v = vertexData() + usedVertices; v[0].set(itemCenter, verticalCenter, -1.0f, currentY); v[1].set(itemCenter, verticalCenter, +1.0f, currentY); diff --git a/src/plugins/qmlprofiler/qmlprofilerbindingloopsrenderpass.h b/src/plugins/qmlprofiler/qmlprofilerbindingloopsrenderpass.h index 292cfc96846..6f578057e29 100644 --- a/src/plugins/qmlprofiler/qmlprofilerbindingloopsrenderpass.h +++ b/src/plugins/qmlprofiler/qmlprofilerbindingloopsrenderpass.h @@ -43,7 +43,7 @@ public: State *update(const Timeline::TimelineAbstractRenderer *renderer, const Timeline::TimelineRenderState *parentState, State *oldState, int indexFrom, int indexTo, bool stateChanged, - qreal spacing) const; + float spacing) const; protected: QmlProfilerBindingLoopsRenderPass(); }; diff --git a/tests/auto/timeline/timelinerenderpass/tst_timelinerenderpass.cpp b/tests/auto/timeline/timelinerenderpass/tst_timelinerenderpass.cpp index 383ceebd7d1..2eec7bbefda 100644 --- a/tests/auto/timeline/timelinerenderpass/tst_timelinerenderpass.cpp +++ b/tests/auto/timeline/timelinerenderpass/tst_timelinerenderpass.cpp @@ -34,7 +34,7 @@ public: static bool s_dtorRan; State *update(const TimelineAbstractRenderer *renderer, const TimelineRenderState *parentState, - State *state, int indexFrom, int indexTo, bool stateChanged, qreal spacing) const; + State *state, int indexFrom, int indexTo, bool stateChanged, float spacing) const; ~DummyRenderPass(); }; @@ -43,7 +43,7 @@ bool DummyRenderPass::s_dtorRan = false; TimelineRenderPass::State *DummyRenderPass::update(const TimelineAbstractRenderer *renderer, const TimelineRenderState *parentState, State *state, int indexFrom, int indexTo, - bool stateChanged, qreal spacing) const + bool stateChanged, float spacing) const { Q_UNUSED(renderer); Q_UNUSED(parentState);