fixed ticket:46 by applying Don's patch
authoreb <eb@221aa14e-8319-0410-a670-987f0aec2ac5>
Sun, 10 Sep 2006 18:14:55 +0000 (18:14 +0000)
committereb <eb@221aa14e-8319-0410-a670-987f0aec2ac5>
Sun, 10 Sep 2006 18:14:55 +0000 (18:14 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@3511 221aa14e-8319-0410-a670-987f0aec2ac5

gr-audio-portaudio/src/audio_portaudio_sink.cc
gr-audio-portaudio/src/audio_portaudio_source.cc

index 06bcc957abd37fc536c9581fa9ea0875303a2ece..602f118352855ad9f624d739b6b4f73fa845460f 100644 (file)
@@ -176,16 +176,21 @@ audio_portaudio_sink::audio_portaudio_sink(int sampling_rate,
     for (i=0;i<numDevices;i++) {
       deviceInfo = Pa_GetDeviceInfo( i );
       fprintf(stderr,"Testing device name: %s",deviceInfo->name);
+      if (deviceInfo->maxOutputChannels <= 0) {
+       fprintf(stderr,"\n");
+       continue;
+      }
       if (strstr(deviceInfo->name, d_device_name.c_str())){
        fprintf(stderr,"  Chosen!\n");
-       device = gri_pa_find_device_by_name(deviceInfo->name);
+       device = i;
        fprintf(stderr,"%s using %s as the host\n",d_device_name.c_str(),
                Pa_GetHostApiInfo(deviceInfo->hostApi)->name), fflush(stderr);
        found = true;
        deviceInfo = Pa_GetDeviceInfo(device);
        i = numDevices;         // force loop exit
       }
-      fprintf(stderr,"\n"),fflush(stderr);
+      else
+       fprintf(stderr,"\n"),fflush(stderr);
     }
 
     if (!found){
index 3741e826c5164dea35af7268b5a10cc168bd2525..8638d4369a4a3670271197c867716e348621fc96 100644 (file)
@@ -102,7 +102,7 @@ portaudio_source_callback (const void *inputBuffer,
       self->d_log->printf("PAsrc  cb: f/b = %4ld OVERRUN\n", framesPerBuffer);
 
     self->d_noverruns++;
-    ::write(2, "aU", 2);       // FIXME change to non-blocking call
+    ::write(2, "aO", 2);       // FIXME change to non-blocking call
 
 #if 0
     // copy any frames that will fit
@@ -181,16 +181,21 @@ audio_portaudio_source::audio_portaudio_source(int sampling_rate,
     for (i=0;i<numDevices;i++) {
       deviceInfo = Pa_GetDeviceInfo( i );
       fprintf(stderr,"Testing device name: %s",deviceInfo->name);
+      if (deviceInfo->maxInputChannels <= 0) {
+       fprintf(stderr,"\n");
+       continue;
+      }
       if (strstr(deviceInfo->name, d_device_name.c_str())){
        fprintf(stderr,"  Chosen!\n");
-       device = gri_pa_find_device_by_name(deviceInfo->name);
+       device = i;
        fprintf(stderr,"%s using %s as the host\n",d_device_name.c_str(),
                Pa_GetHostApiInfo(deviceInfo->hostApi)->name), fflush(stderr);
        found = true;
        deviceInfo = Pa_GetDeviceInfo(device);
        i = numDevices;         // force loop exit
       }
-      fprintf(stderr,"\n"),fflush(stderr);
+      else
+       fprintf(stderr,"\n"),fflush(stderr);
     }
 
     if (!found){