chiark
/
gitweb
/
~mdw
/
disorder
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Only report failure to find OSS devices once, not every time we think
[disorder]
/
server
/
speaker-oss.c
diff --git
a/server/speaker-oss.c
b/server/speaker-oss.c
index f9a298cc0d26a28af71a7bad8fe26ebabca8b591..36ef4a85c250b9b91b5acdc41cd663575004b15d 100644
(file)
--- a/
server/speaker-oss.c
+++ b/
server/speaker-oss.c
@@
-1,6
+1,7
@@
/*
* This file is part of DisOrder
/*
* This file is part of DisOrder
- * Copyright (C) 2007 Richard Kettlewell
+ * Copyright (C) 2007, 2008 Richard Kettlewell
+ * Portions copyright (C) 2007 Ross Younger
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@
-71,6
+72,15
@@
static void oss_activate(void) {
device = "/dev/dsp";
else if(access("/dev/audio", W_OK) == 0)
device = "/dev/audio";
device = "/dev/dsp";
else if(access("/dev/audio", W_OK) == 0)
device = "/dev/audio";
+ else {
+ static int reported;
+
+ if(!reported) {
+ error(0, "cannot determine default OSS device");
+ reported = 1;
+ }
+ goto failed;
+ }
} else
device = config->device; /* just believe the user */
/* Open the device */
} else
device = config->device; /* just believe the user */
/* Open the device */
@@
-111,8
+121,10
@@
static void oss_activate(void) {
return;
failed:
device_state = device_error;
return;
failed:
device_state = device_error;
- if(ossfd >= 0)
+ if(ossfd >= 0)
{
xclose(ossfd);
xclose(ossfd);
+ ossfd = -1;
+ }
}
/** @brief Play via OSS */
}
/** @brief Play via OSS */
@@
-136,7
+148,7
@@
static size_t oss_play(size_t frames) {
static int oss_slot;
/** @brief Fill in poll fd array for OSS */
static int oss_slot;
/** @brief Fill in poll fd array for OSS */
-static void oss_beforepoll(
void
) {
+static void oss_beforepoll(
int attribute((unused)) *timeoutp
) {
oss_slot = addfd(ossfd, POLLOUT|POLLERR);
}
oss_slot = addfd(ossfd, POLLOUT|POLLERR);
}