diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index 2df82800..0464f369 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -203,6 +203,11 @@ int main(int argc, char *argv[]) # ifdef ENABLE_OUTPUTS myOutputs->FetchList(); # endif // ENABLE_OUTPUTS +# ifdef ENABLE_VISUALIZER + myVisualizer->ResetFD(); + if (myScreen == myVisualizer) + myVisualizer->SetFD(); +# endif // ENABLE_VISUALIZER } } diff --git a/src/visualizer.cpp b/src/visualizer.cpp index 224d147d..8e901254 100644 --- a/src/visualizer.cpp +++ b/src/visualizer.cpp @@ -44,7 +44,7 @@ void Visualizer::Init() w = new Window(0, MainStartY, COLS, MainHeight, "", Config.main_color, brNone); w->SetTimeout(Config.visualizer_fifo_path.empty() ? ncmpcpp_window_timeout : 40 /* this gives us 25 fps */); - itsFifo = -1; + ResetFD(); itsFreqsMagnitude = new unsigned[FFTResults]; itsInput = static_cast(fftw_malloc(sizeof(double)*Samples)); itsOutput = static_cast(fftw_malloc(sizeof(fftw_complex)*FFTResults)); @@ -67,8 +67,7 @@ void Visualizer::SwitchTo() myScreen = this; w->Clear(); - if (itsFifo < 0 && (itsFifo = open(Config.visualizer_fifo_path.c_str(), O_RDONLY | O_NONBLOCK)) < 0) - ShowMessage("Couldn't open fifo for reading PCM data: %s", strerror(errno)); + SetFD(); Global::RedrawHeader = 1; } @@ -127,5 +126,16 @@ void Visualizer::Update() w->Refresh(); } +void Visualizer::SetFD() +{ + if (itsFifo < 0 && (itsFifo = open(Config.visualizer_fifo_path.c_str(), O_RDONLY | O_NONBLOCK)) < 0) + ShowMessage("Couldn't open fifo for reading PCM data: %s", strerror(errno)); +} + +void Visualizer::ResetFD() +{ + itsFifo = -1; +} + #endif // ENABLE_VISUALIZER diff --git a/src/visualizer.h b/src/visualizer.h index fb6fa702..cc887720 100644 --- a/src/visualizer.h +++ b/src/visualizer.h @@ -51,6 +51,9 @@ class Visualizer : public Screen virtual bool allowsSelection() { return false; } + void SetFD(); + void ResetFD(); + protected: virtual void Init();