make visualizer work after mpd restart
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<double *>(fftw_malloc(sizeof(double)*Samples));
|
||||
itsOutput = static_cast<fftw_complex *>(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
|
||||
|
||||
|
||||
@@ -51,6 +51,9 @@ class Visualizer : public Screen<Window>
|
||||
|
||||
virtual bool allowsSelection() { return false; }
|
||||
|
||||
void SetFD();
|
||||
void ResetFD();
|
||||
|
||||
protected:
|
||||
virtual void Init();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user