diff options
author | Johnathan Corgan <jcorgan@corganenterprises.com> | 2011-07-19 07:25:00 -0700 |
---|---|---|
committer | Johnathan Corgan <jcorgan@corganenterprises.com> | 2011-07-19 07:25:00 -0700 |
commit | 0d30c802c947fe3a6db3ee8a4907e167debe477f (patch) | |
tree | b885c170204b253541619720df6c25e380630e3e /gr-audio | |
parent | e90497c104ea2eb3854e1081e32ffab07d26a314 (diff) | |
parent | 7e2b45b89137a3cc2b1cdb066577c323545cfcb7 (diff) |
Merge branch 'master' into next
Diffstat (limited to 'gr-audio')
-rw-r--r-- | gr-audio/lib/alsa/audio_alsa_source.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gr-audio/lib/alsa/audio_alsa_source.cc b/gr-audio/lib/alsa/audio_alsa_source.cc index 4f0042b22e..2f4506f71c 100644 --- a/gr-audio/lib/alsa/audio_alsa_source.cc +++ b/gr-audio/lib/alsa/audio_alsa_source.cc @@ -217,8 +217,14 @@ audio_alsa_source::check_topology (int ninputs, int noutputs) unsigned int nchan = noutputs; int err; - // FIXME check_topology may be called more than once. + // Check the state of the stream // Ensure that the pcm is in a state where we can still mess with the hw_params + snd_pcm_state_t state; + state=snd_pcm_state(d_pcm_handle); + if ( state== SND_PCM_STATE_RUNNING) + return true; // If stream is running, don't change any parameters + else if(state == SND_PCM_STATE_XRUN ) + snd_pcm_prepare ( d_pcm_handle ); // Prepare stream on underrun, and we can set parameters; bool special_case = nchan == 1 && d_special_case_stereo_to_mono; if (special_case) |