make visualizer work after mpd restart
This commit is contained in:
@@ -203,6 +203,11 @@ int main(int argc, char *argv[])
|
|||||||
# ifdef ENABLE_OUTPUTS
|
# ifdef ENABLE_OUTPUTS
|
||||||
myOutputs->FetchList();
|
myOutputs->FetchList();
|
||||||
# endif // ENABLE_OUTPUTS
|
# 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 = 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 */);
|
w->SetTimeout(Config.visualizer_fifo_path.empty() ? ncmpcpp_window_timeout : 40 /* this gives us 25 fps */);
|
||||||
|
|
||||||
itsFifo = -1;
|
ResetFD();
|
||||||
itsFreqsMagnitude = new unsigned[FFTResults];
|
itsFreqsMagnitude = new unsigned[FFTResults];
|
||||||
itsInput = static_cast<double *>(fftw_malloc(sizeof(double)*Samples));
|
itsInput = static_cast<double *>(fftw_malloc(sizeof(double)*Samples));
|
||||||
itsOutput = static_cast<fftw_complex *>(fftw_malloc(sizeof(fftw_complex)*FFTResults));
|
itsOutput = static_cast<fftw_complex *>(fftw_malloc(sizeof(fftw_complex)*FFTResults));
|
||||||
@@ -67,8 +67,7 @@ void Visualizer::SwitchTo()
|
|||||||
myScreen = this;
|
myScreen = this;
|
||||||
w->Clear();
|
w->Clear();
|
||||||
|
|
||||||
if (itsFifo < 0 && (itsFifo = open(Config.visualizer_fifo_path.c_str(), O_RDONLY | O_NONBLOCK)) < 0)
|
SetFD();
|
||||||
ShowMessage("Couldn't open fifo for reading PCM data: %s", strerror(errno));
|
|
||||||
|
|
||||||
Global::RedrawHeader = 1;
|
Global::RedrawHeader = 1;
|
||||||
}
|
}
|
||||||
@@ -127,5 +126,16 @@ void Visualizer::Update()
|
|||||||
w->Refresh();
|
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
|
#endif // ENABLE_VISUALIZER
|
||||||
|
|
||||||
|
|||||||
@@ -51,6 +51,9 @@ class Visualizer : public Screen<Window>
|
|||||||
|
|
||||||
virtual bool allowsSelection() { return false; }
|
virtual bool allowsSelection() { return false; }
|
||||||
|
|
||||||
|
void SetFD();
|
||||||
|
void ResetFD();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void Init();
|
virtual void Init();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user