Clear samples of the visualizer when playback is stopped

This commit is contained in:
Andrzej Rybczak
2020-12-13 23:32:13 +01:00
parent 261b23266d
commit 9b49acba56
3 changed files with 11 additions and 8 deletions

View File

@@ -90,10 +90,8 @@ Visualizer::Visualizer()
# endif // HAVE_FFTW3_H
if (Config.visualizer_in_stereo)
m_read_samples *= 2;
m_sample_buffer.resize(m_read_samples);
m_temp_sample_buffer.resize(m_read_samples);
memset(m_sample_buffer.data(), 0, m_sample_buffer.size()*sizeof(int16_t));
memset(m_temp_sample_buffer.data(), 0, m_sample_buffer.size()*sizeof(int16_t));
m_sample_buffer.resize(m_read_samples, 0);
m_temp_sample_buffer.resize(m_read_samples, 0);
# ifdef HAVE_FFTW3_H
m_fftw_results = DFT_TOTAL_SIZE/2+1;
@@ -110,12 +108,11 @@ Visualizer::Visualizer()
void Visualizer::switchTo()
{
SwitchTo::execute(this);
w.clear();
Clear();
SetFD();
// negative infinity to toggle output in update() at least once
m_timer = boost::posix_time::neg_infin;
drawHeader();
memset(m_sample_buffer.data(), 0, m_sample_buffer.size()*sizeof(int16_t));
# ifdef HAVE_FFTW3_H
GenLogspace();
m_bar_heights.reserve(w.getWidth());
@@ -639,6 +636,12 @@ void Visualizer::GenLogspace()
/**********************************************************************/
void Visualizer::Clear()
{
w.clear();
std::fill(m_sample_buffer.begin(), m_sample_buffer.end(), 0);
}
void Visualizer::ToggleVisualizationType()
{
switch (Config.visualizer_type)

View File

@@ -54,7 +54,7 @@ struct Visualizer: Screen<NC::Window>, Tabbable
virtual bool isLockable() override { return true; }
virtual bool isMergable() override { return true; }
// private members
void Clear();
void ToggleVisualizationType();
void SetFD();
void ResetFD();

View File

@@ -518,7 +518,7 @@ void Status::Changes::playerState()
}
# ifdef ENABLE_VISUALIZER
if (isVisible(myVisualizer))
myVisualizer->main().clear();
myVisualizer->Clear();
# endif // ENABLE_VISUALIZER
break;
default: