From f888cf7fe5034c0e7f9c961c1248fac2644c5f3e Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 18 Mar 2020 19:08:33 +1100 Subject: [PATCH] audiowaveformview: force cache invalidation if the footage is changed --- app/widget/viewer/audiowaveformview.cpp | 14 ++++++++++---- app/widget/viewer/audiowaveformview.h | 2 ++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/widget/viewer/audiowaveformview.cpp b/app/widget/viewer/audiowaveformview.cpp index dd7ac643b..5e5ab92bc 100644 --- a/app/widget/viewer/audiowaveformview.cpp +++ b/app/widget/viewer/audiowaveformview.cpp @@ -18,7 +18,7 @@ AudioWaveformView::AudioWaveformView(QWidget *parent) : void AudioWaveformView::SetBackend(AudioRenderBackend *backend) { if (backend_) { - disconnect(backend_, &AudioRenderBackend::QueueComplete, this, static_cast(&AudioWaveformView::update)); + disconnect(backend_, &AudioRenderBackend::QueueComplete, this, &AudioWaveformView::ForceUpdate); disconnect(backend_, &AudioRenderBackend::ParamsChanged, this, &AudioWaveformView::BackendParamsChanged); SetTimebase(0); @@ -27,13 +27,13 @@ void AudioWaveformView::SetBackend(AudioRenderBackend *backend) backend_ = backend; if (backend_) { - connect(backend_, &AudioRenderBackend::QueueComplete, this, static_cast(&AudioWaveformView::update)); + connect(backend_, &AudioRenderBackend::QueueComplete, this, &AudioWaveformView::ForceUpdate); connect(backend_, &AudioRenderBackend::ParamsChanged, this, &AudioWaveformView::BackendParamsChanged); SetTimebase(backend_->params().time_base()); } - update(); + ForceUpdate(); } void AudioWaveformView::DrawWaveform(QPainter *painter, const QRect& rect, const double& scale, const SampleSummer::Sum* samples, int nb_samples, int channels) @@ -111,7 +111,7 @@ void AudioWaveformView::paintEvent(QPaintEvent *event) QPainter wave_painter(&cached_waveform_); // FIXME: Hardcoded color - wave_painter.setPen(Qt::green); + wave_painter.setPen(QColor(64, 255, 160)); int channel_height = height() / params.channel_count(); int channel_half_height = channel_height / 2; @@ -187,3 +187,9 @@ void AudioWaveformView::BackendParamsChanged() { SetTimebase(backend_->params().time_base()); } + +void AudioWaveformView::ForceUpdate() +{ + cached_size_ = QSize(); + update(); +} diff --git a/app/widget/viewer/audiowaveformview.h b/app/widget/viewer/audiowaveformview.h index 283670c1d..d660382ad 100644 --- a/app/widget/viewer/audiowaveformview.h +++ b/app/widget/viewer/audiowaveformview.h @@ -34,6 +34,8 @@ private: private slots: void BackendParamsChanged(); + void ForceUpdate(); + }; #endif // WAVEFORMVIEW_H