From f1d325629ae6e193b971f54e4aa047fe48567557 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 17 Apr 2021 11:19:46 +1000 Subject: [PATCH] audiowaveformview: limit to audio length Fixes potential infinite loop. --- app/widget/viewer/audiowaveformview.cpp | 5 ++++- app/widget/viewer/audiowaveformview.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/widget/viewer/audiowaveformview.cpp b/app/widget/viewer/audiowaveformview.cpp index 20921b94b..c53e0b670 100644 --- a/app/widget/viewer/audiowaveformview.cpp +++ b/app/widget/viewer/audiowaveformview.cpp @@ -110,8 +110,11 @@ void AudioWaveformView::paintEvent(QPaintEvent *event) p.drawLine(playhead_x, 0, playhead_x, height()); } -void AudioWaveformView::RenderRange(const TimeRange &range) +void AudioWaveformView::RenderRange(TimeRange range) { + // Limit range to length + range = TimeRange(qMax(rational(0), range.in()), qMin(playback_->GetLength(), range.out())); + // Floor to second increments int64_t start = qFloor(range.in().toDouble()); int64_t end = qCeil(range.out().toDouble()); diff --git a/app/widget/viewer/audiowaveformview.h b/app/widget/viewer/audiowaveformview.h index 18e59eb7f..700af2461 100644 --- a/app/widget/viewer/audiowaveformview.h +++ b/app/widget/viewer/audiowaveformview.h @@ -50,7 +50,7 @@ protected: virtual void paintEvent(QPaintEvent* event) override; private: - void RenderRange(const TimeRange& range); + void RenderRange(TimeRange range); QThreadPool pool_;