]> Repos - portaudio/commitdiff
Add PA ALSA extension to allow setting number of retries when busy
authoraknudsen <aknudsen@0f58301d-fd10-0410-b4af-bbb618454e57>
Sun, 24 May 2009 17:02:10 +0000 (17:02 +0000)
committeraknudsen <aknudsen@0f58301d-fd10-0410-b4af-bbb618454e57>
Sun, 24 May 2009 17:02:10 +0000 (17:02 +0000)
include/pa_linux_alsa.h
src/hostapi/alsa/pa_linux_alsa.c

index dcf011efee8481001173bf5424538a33db1a0f85..45b6c7719af37026f83f0898e51d129aa1d2555a 100644 (file)
@@ -87,6 +87,11 @@ PaError PaAlsa_GetStreamOutputCard( PaStream *s, int *card );
  */
 PaError PaAlsa_SetNumPeriods( int numPeriods );
 
+/** Set the maximum number of times to retry opening busy device (sleeping for a
+ * short interval inbetween).
+ */
+PaError PaAlsa_SetRetriesBusy( int retries );
+
 #ifdef __cplusplus
 }
 #endif
index 359d0993acbe8db597b68beaf5e84a7cd8bda01a..18e246e613c87daaf390e77a932c2a75a4227079 100644 (file)
 
 static int aErr_;               /* Used with ENSURE_ */
 static int numPeriods_ = 4;
+static int busyRetries_ = 100;
 
 int PaAlsa_SetNumPeriods( int numPeriods )
 {
@@ -539,7 +540,7 @@ static int IgnorePlugin( const char *pluginId )
  **/
 static int OpenPcm( snd_pcm_t **pcmp, const char *name, snd_pcm_stream_t stream, int mode, int waitOnBusy )
 {
-    int tries = 0, maxTries = waitOnBusy ? 100 : 0;
+    int tries = 0, maxTries = waitOnBusy ? busyRetries_ : 0;
     int ret = snd_pcm_open( pcmp, name, stream, mode );
     for( tries = 0; tries < maxTries && -EBUSY == ret; ++tries )
     {
@@ -3670,3 +3671,9 @@ PaError PaAlsa_GetStreamOutputCard(PaStream* s, int* card) {
 error:
     return result;
 }
+
+PaError PaAlsa_SetRetriesBusy( int retries )
+{
+    busyRetries_ = retries;
+    return paNoError;
+}