aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormalc <av1474@comtv.ru>2010-01-09 00:28:40 +0300
committermalc <av1474@comtv.ru>2010-01-09 00:28:59 +0300
commit78d9356d3caad95a74bc9cd65eea5fc7e050c35d (patch)
tree4451283c5590d774685e7df0b9632dd129204d2c
parent25d0ae900fa2cc6607db4b5d224de47cd721e60d (diff)
oss: refactor code around policy setting
This fixes a problem with a previous patch spotted by Juergen Lock, thanks to him again. Signed-off-by: malc <av1474@comtv.ru>
-rw-r--r--audio/ossaudio.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/audio/ossaudio.c b/audio/ossaudio.c
index 4766aa7258..fe6fb523bc 100644
--- a/audio/ossaudio.c
+++ b/audio/ossaudio.c
@@ -38,6 +38,10 @@
#define AUDIO_CAP "oss"
#include "audio_int.h"
+#if defined OSS_GETVERSION && defined SNDCTL_DSP_POLICY
+#define USE_DSP_POLICY
+#endif
+
typedef struct OSSVoiceOut {
HWVoiceOut hw;
void *pcm_buf;
@@ -240,7 +244,7 @@ static int oss_open (int in, struct oss_params *req,
struct oss_params *obt, int *pfd)
{
int fd;
-#ifdef OSS_GETVERSION
+#ifdef USE_DSP_POLICY
int version;
#endif
int oflags = conf.exclusive ? O_EXCL : 0;
@@ -283,7 +287,7 @@ static int oss_open (int in, struct oss_params *req,
goto err;
}
-#ifdef OSS_GETVERSION
+#ifdef USE_DSP_POLICY
if (ioctl (fd, OSS_GETVERSION, &version)) {
oss_logerr2 (errno, typ, "Failed to get OSS version\n");
version = 0;
@@ -292,16 +296,8 @@ static int oss_open (int in, struct oss_params *req,
if (conf.debug) {
dolog ("OSS version = %#x\n", version);
}
-#endif
-#ifdef SNDCTL_DSP_POLICY
- if (conf.policy >= 0
-#ifdef OSS_GETVERSION
- && version >= 0x040000
-#else
- 0
-#endif
- )
+ if (conf.policy >= 0 && version >= 0x040000)
{
int policy = conf.policy;
if (ioctl (fd, SNDCTL_DSP_POLICY, &policy)) {
@@ -868,7 +864,7 @@ static struct audio_option oss_options[] = {
.valp = &conf.exclusive,
.descr = "Open device in exclusive mode (vmix wont work)"
},
-#ifdef SNDCTL_DSP_POLICY
+#ifdef USE_DSP_POLICY
{
.name = "POLICY",
.tag = AUD_OPT_INT,