make visualizer work after mpd restart

This commit is contained in:
Andrzej Rybczak
2009-08-29 21:21:20 +02:00
parent f0ebc47785
commit 7c593fa90c
3 changed files with 21 additions and 3 deletions

View File

@@ -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
}
}

View File

@@ -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

View File

@@ -51,6 +51,9 @@ class Visualizer : public Screen<Window>
virtual bool allowsSelection() { return false; }
void SetFD();
void ResetFD();
protected:
virtual void Init();