summaryrefslogtreecommitdiffstats
path: root/libao2/ao_sun.c
diff options
context:
space:
mode:
Diffstat (limited to 'libao2/ao_sun.c')
-rw-r--r--libao2/ao_sun.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/libao2/ao_sun.c b/libao2/ao_sun.c
index 75d5d383af..44c2bef7b1 100644
--- a/libao2/ao_sun.c
+++ b/libao2/ao_sun.c
@@ -65,6 +65,13 @@ static enum {
} enable_sample_timing;
+static void flush_audio(int fd) {
+#ifdef AUDIO_FLUSH
+ ioctl(fd, AUDIO_FLUSH, 0);
+#elif defined(__svr4__)
+ ioctl(fd, I_FLUSH, FLUSHW);
+#endif
+}
// convert an OSS audio format specification into a sun audio encoding
static int af2sunfmt(int format)
@@ -203,12 +210,9 @@ static int realtime_samplecounter_available(char *dev)
error:
if (silence != NULL) free(silence);
if (fd >= 0) {
-#ifdef __svr4__
// remove the 0 bytes from the above measurement from the
// audio driver's STREAMS queue
- ioctl(fd, I_FLUSH, FLUSHW);
-#endif
- //ioctl(fd, AUDIO_DRAIN, 0);
+ flush_audio(fd);
close(fd);
}
@@ -576,11 +580,9 @@ static int init(int rate,int channels,int format,int flags){
// close audio device
static void uninit(int immed){
-#ifdef __svr4__
// throw away buffered data in the audio driver's STREAMS queue
if (immed)
- ioctl(audio_fd, I_FLUSH, FLUSHW);
-#endif
+ flush_audio(audio_fd);
close(audio_fd);
}