From 559d26217310e5454c9cf5c80e49da51b192d7ca Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 13 May 2007 00:22:39 +0000 Subject: fix volume handling git-svn-id: file:///home/lennart/svn/public/libsydney/trunk@5 9ba3c220-e4d3-45a2-8aa3-73fcc9aff6ce --- oss.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'oss.c') diff --git a/oss.c b/oss.c index 7b351ae..bd4f12b 100644 --- a/oss.c +++ b/oss.c @@ -62,6 +62,8 @@ int device_open(sa_device_t *dev) { return SA_ERROR_SYSTEM; } + fcntl(oss->fd, F_SETFL, fcntl(oss->fd, F_GETFL) & ~O_NONBLOCK); /* FIXME*/ + if (!dev->device) { if (!(n = sa_strdup(n))) return SA_ERROR_OOM; @@ -237,7 +239,10 @@ int device_open(sa_device_t *dev) { } r = dev->pcm_attrs.rate; - r = 44100; + + if (r < 8000) + r = 8000; + suggested = 0; phase = 0; @@ -393,8 +398,10 @@ int device_change_output_volume(sa_device_t *dev, int vol[]) { int device_change_rate(sa_device_t *dev, unsigned rate) { oss_device_t *oss = OSS_DEVICE(dev); - converter_set_ratio(&oss->converter_read, oss->real_pcm_attrs.rate, dev->pcm_attrs.rate); - converter_set_ratio(&oss->converter_write, dev->pcm_attrs.rate, oss->real_pcm_attrs.rate); + if (dev->mode & SA_MODE_RDONLY) + converter_set_ratio(&oss->converter_read, oss->real_pcm_attrs.rate, dev->pcm_attrs.rate); + if (dev->mode & SA_MODE_WRONLY) + converter_set_ratio(&oss->converter_write, dev->pcm_attrs.rate, oss->real_pcm_attrs.rate); return SA_SUCCESS; } -- cgit