From 61dd75a2ed0cff39e0f007feb9736848aaf41504 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 28 Apr 2020 23:55:40 +1000 Subject: [PATCH] scopes: only update if visible Updating scopes can require heavy processing so we limit updates to only when the scope is visible --- app/widget/scope/histogram/histogram.cpp | 11 ++++++++++- app/widget/scope/histogram/histogram.h | 2 ++ app/widget/scope/waveform/waveform.cpp | 9 ++++++++- app/widget/scope/waveform/waveform.h | 2 ++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/widget/scope/histogram/histogram.cpp b/app/widget/scope/histogram/histogram.cpp index ab7cb66e1..b9028f85a 100644 --- a/app/widget/scope/histogram/histogram.cpp +++ b/app/widget/scope/histogram/histogram.cpp @@ -49,7 +49,9 @@ void HistogramScope::SetBuffer(Frame* frame) { buffer_ = frame; - StartUpdate(); + if (isVisible()) { + StartUpdate(); + } } void HistogramScope::FinishedProcessing(QVector red, QVector green, QVector blue) @@ -111,6 +113,13 @@ void HistogramScope::StartUpdate() } } +void HistogramScope::showEvent(QShowEvent* e) +{ + ManagedDisplayWidget::showEvent(e); + + StartUpdate(); +} + HistogramScopeWorker::HistogramScopeWorker() : cancelled_(false) { diff --git a/app/widget/scope/histogram/histogram.h b/app/widget/scope/histogram/histogram.h index ea5175726..3efad3919 100644 --- a/app/widget/scope/histogram/histogram.h +++ b/app/widget/scope/histogram/histogram.h @@ -78,6 +78,8 @@ protected: virtual void ColorProcessorChangedEvent() override; + virtual void showEvent(QShowEvent* e) override; + private: void StartUpdate(); diff --git a/app/widget/scope/waveform/waveform.cpp b/app/widget/scope/waveform/waveform.cpp index d8f6b6e71..21ef63dc3 100644 --- a/app/widget/scope/waveform/waveform.cpp +++ b/app/widget/scope/waveform/waveform.cpp @@ -49,6 +49,13 @@ void WaveformScope::SetBuffer(Frame *frame) UploadTextureFromBuffer(); } +void WaveformScope::showEvent(QShowEvent* e) +{ + ManagedDisplayWidget::showEvent(e); + + UploadTextureFromBuffer(); +} + void WaveformScope::initializeGL() { ManagedDisplayWidget::initializeGL(); @@ -93,7 +100,7 @@ void WaveformScope::paintGL() void WaveformScope::UploadTextureFromBuffer() { - if (!buffer_) { + if (!buffer_ || !isVisible()) { return; } diff --git a/app/widget/scope/waveform/waveform.h b/app/widget/scope/waveform/waveform.h index dd9d40452..6d2e808f5 100644 --- a/app/widget/scope/waveform/waveform.h +++ b/app/widget/scope/waveform/waveform.h @@ -45,6 +45,8 @@ protected: virtual void paintGL() override; + virtual void showEvent(QShowEvent* e) override; + private: void UploadTextureFromBuffer();