changeset 5907:d8c34a35ccb9

nonblock open is not legal for OSS (see OSS api docs), and causes problems on freebsd (and maybe other OSs)
author arpi
date Mon, 29 Apr 2002 20:42:15 +0000
parents 4564bc22de3e
children 31159f453cf9
files libao2/ao_oss.c
diffstat 1 files changed, 11 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libao2/ao_oss.c	Mon Apr 29 20:36:53 2002 +0000
+++ b/libao2/ao_oss.c	Mon Apr 29 20:42:15 2002 +0000
@@ -103,17 +103,23 @@
   if (verbose)
     printf("audio_setup: using '%s' dsp device\n", dsp);
 
+#ifdef __linux__
   audio_fd=open(dsp, O_WRONLY | O_NONBLOCK);
+#else
+  audio_fd=open(dsp, O_WRONLY);
+#endif
   if(audio_fd<0){
     printf("Can't open audio device %s: %s  -> no sound\n", dsp, strerror(errno));
     return 0;
   }
 
+#ifdef __linux__
   /* Remove the non-blocking flag */
   if(fcntl(audio_fd, F_SETFL, 0) < 0) {
    printf("Can't make filedescriptor non-blocking: %s -> no sound\n", strerror(errno));
    return 0;
   }  
+#endif
   
   ao_data.bps=channels*rate;
   if(format != AFMT_U8 && format != AFMT_S8)
@@ -217,8 +223,13 @@
 // stop playing and empty buffers (for seeking/pause)
 static void reset(){
     uninit();
+#ifdef __linux__
     audio_fd=open(dsp, O_WRONLY | O_NONBLOCK);
     if(audio_fd < 0 || fcntl(audio_fd, F_SETFL, 0) < 0){
+#else
+    audio_fd=open(dsp, O_WRONLY);
+    if(audio_fd < 0){
+#endif
 	printf("\nFatal error: *** CANNOT RE-OPEN / RESET AUDIO DEVICE *** %s\n", strerror(errno));
 	return;
     }