diff --git a/sdrbase/dsp/scopevis.cpp b/sdrbase/dsp/scopevis.cpp index 326dbdbd8..830823cda 100644 --- a/sdrbase/dsp/scopevis.cpp +++ b/sdrbase/dsp/scopevis.cpp @@ -409,6 +409,22 @@ void ScopeVis::setOneShot(bool oneShot) } } +void ScopeVis::blockTrigger(bool blocked) +{ + if (blocked) + { + m_triggerState = WaitForReset; + } + else + { + if (!m_triggerOneShot) { + m_tracebackCount = 0; + m_triggerState = Untriggered; + m_triggerIndex = 0; + } + } +} + bool ScopeVis::nextTrigger() { if (m_triggerCount < m_triggerCounts[m_triggerIndex]) diff --git a/sdrbase/dsp/scopevis.h b/sdrbase/dsp/scopevis.h index 5cfeb51b8..c28476db8 100644 --- a/sdrbase/dsp/scopevis.h +++ b/sdrbase/dsp/scopevis.h @@ -38,6 +38,7 @@ public: uint triggerCounts, uint traceSize); void setOneShot(bool oneShot); + void blockTrigger(bool blecked); virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly); virtual void start(); diff --git a/sdrbase/gui/glscopegui.cpp b/sdrbase/gui/glscopegui.cpp index c71044b1c..e556e935c 100644 --- a/sdrbase/gui/glscopegui.cpp +++ b/sdrbase/gui/glscopegui.cpp @@ -782,7 +782,9 @@ void GLScopeGUI::on_memIndex_valueChanged(int value) if(m_glScope != 0) { + m_scopeVis->blockTrigger(value != 0); m_glScope->setMemHistoryShift(value); + emit traceMemoryChanged(value); } } diff --git a/sdrbase/gui/glscopegui.h b/sdrbase/gui/glscopegui.h index 6e21fc295..eefb2d7ea 100644 --- a/sdrbase/gui/glscopegui.h +++ b/sdrbase/gui/glscopegui.h @@ -30,6 +30,9 @@ public: bool handleMessage(Message* message); +signals: + void traceMemoryChanged(int); + private: Ui::GLScopeGUI* ui;