From b55d9324d14f9bdcf65c6a17c1fb0f2800adbcaf Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 6 Apr 2017 05:30:59 +0200 Subject: [PATCH] ATV Demod: render image immediately when FPS is below 25 to avoid partial image flickering --- plugins/channelrx/demodatv/atvdemod.cpp | 1 + plugins/channelrx/demodatv/atvscreen.cpp | 3 ++- plugins/channelrx/demodatv/atvscreen.h | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/channelrx/demodatv/atvdemod.cpp b/plugins/channelrx/demodatv/atvdemod.cpp index c4409ac9f..0787f820e 100644 --- a/plugins/channelrx/demodatv/atvdemod.cpp +++ b/plugins/channelrx/demodatv/atvdemod.cpp @@ -573,6 +573,7 @@ void ATVDemod::applySettings() m_intNumberSamplePerLine = (int) (m_objConfig.m_fltLineDuration * m_objConfig.m_intSampleRate); m_intNumberSamplePerTop = (int) (m_objConfig.m_fltTopDuration * m_objConfig.m_intSampleRate); + m_objRegisteredATVScreen->setRenderImmediate((m_objConfig.m_fltFramePerS < 25.0f)); m_objRegisteredATVScreen->resizeATVScreen( m_intNumberSamplePerLine - m_intNumberSamplePerLineSignals, m_intNumberOfLines - m_intNumberOfBlackLines); diff --git a/plugins/channelrx/demodatv/atvscreen.cpp b/plugins/channelrx/demodatv/atvscreen.cpp index 86da014bf..d3955909e 100644 --- a/plugins/channelrx/demodatv/atvscreen.cpp +++ b/plugins/channelrx/demodatv/atvscreen.cpp @@ -37,6 +37,7 @@ ATVScreen::ATVScreen(QWidget* parent) : m_chrLastData = NULL; m_blnConfigChanged = false; m_blnDataChanged = false; + m_blnRenderImmediate = false; m_blnGLContextInitialized = false; //Par défaut @@ -63,7 +64,7 @@ void ATVScreen::renderImage(unsigned char * objData) { m_chrLastData = objData; m_blnDataChanged = true; - //update(); + if (m_blnRenderImmediate) update(); } void ATVScreen::resetImage() diff --git a/plugins/channelrx/demodatv/atvscreen.h b/plugins/channelrx/demodatv/atvscreen.h index 8a3354a52..1e1aebd04 100644 --- a/plugins/channelrx/demodatv/atvscreen.h +++ b/plugins/channelrx/demodatv/atvscreen.h @@ -54,6 +54,7 @@ public: bool selectRow(int intLine); bool setDataColor(int intCol,int intRed, int intGreen, int intBlue); + void setRenderImmediate(bool blnRenderImmediate) { m_blnRenderImmediate = blnRenderImmediate; } void connectTimer(const QTimer& timer); @@ -75,6 +76,7 @@ private: QTimer m_objTimer; QMutex m_objMutex; bool m_blnDataChanged; + bool m_blnRenderImmediate; bool m_blnConfigChanged; GLShaderArray m_objGLShaderArray;