diff options
author | Pierre Ossman <ossman@cendio.se> | 2006-05-02 11:27:24 +0000 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2006-05-02 11:27:24 +0000 |
commit | c2c9f251004f4f688d1a9a20d1ec19ea3513a60a (patch) | |
tree | ea33100685213146dd11865420aa21b76b211929 | |
parent | 27cee2ef52274fe0cb98eded2c7394a5069c3ce8 (diff) |
Fix control flow in pa_oss_open(). Also fall back to half duplex when device doesn't
support full.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@826 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r-- | src/modules/oss-util.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/modules/oss-util.c b/src/modules/oss-util.c index fac39e7b..2c573b2f 100644 --- a/src/modules/oss-util.c +++ b/src/modules/oss-util.c @@ -56,9 +56,11 @@ int pa_oss_open(const char *device, int *mode, int* pcaps) { } if (*tcaps & DSP_CAP_DUPLEX) - return fd; + goto success; - goto fail; + pa_log_warn(__FILE__": '%s' doesn't support full duplex", device); + + close(fd); } if ((fd = open(device, (*mode = O_WRONLY)|O_NDELAY)) < 0) { @@ -74,6 +76,8 @@ int pa_oss_open(const char *device, int *mode, int* pcaps) { } } +success: + if (pcaps) { if (ioctl(fd, SNDCTL_DSP_GETCAPS, pcaps) < 0) { pa_log(__FILE__": SNDCTL_DSP_GETCAPS: %s", strerror(errno)); |