diff options
Diffstat (limited to 'gr-audio')
-rw-r--r-- | gr-audio/lib/Makefile.am | 5 | ||||
-rw-r--r-- | gr-audio/lib/alsa/audio_alsa_source.cc | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gr-audio/lib/Makefile.am b/gr-audio/lib/Makefile.am index 2bec73ff0..ee2247aa6 100644 --- a/gr-audio/lib/Makefile.am +++ b/gr-audio/lib/Makefile.am @@ -122,6 +122,11 @@ if GR_AUDIO_OSX_SUPPORT AM_CPPFLAGS += \ -I$(srcdir)/osx +libgnuradio_audio_la_LDFLAGS += \ + -framework AudioUnit \ + -framework CoreAudio \ + -framework AudioToolbox + libgnuradio_audio_la_SOURCES += \ osx/audio_osx_source.cc \ osx/audio_osx_sink.cc diff --git a/gr-audio/lib/alsa/audio_alsa_source.cc b/gr-audio/lib/alsa/audio_alsa_source.cc index 4f0042b22..2f4506f71 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) |