summaryrefslogtreecommitdiffstats
path: root/sys/oss
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2003-01-27 20:36:46 +0000
committerWim Taymans <wim.taymans@gmail.com>2003-01-27 20:36:46 +0000
commitd1dcf80a9f1b5be47fa3498515a941dc15a16415 (patch)
tree35e06270895ed6354c01fcbb7ea78eb4d6473db8 /sys/oss
parentae07474bb234935041fbed9fa83e2d9dd92c3c91 (diff)
Removed bogus patch 1.4 to make osssrc work again.
Original commit message from CVS: Removed bogus patch 1.4 to make osssrc work again.
Diffstat (limited to 'sys/oss')
-rw-r--r--sys/oss/gstosscommon.c32
1 files changed, 8 insertions, 24 deletions
diff --git a/sys/oss/gstosscommon.c b/sys/oss/gstosscommon.c
index 255ac6a0..fe556564 100644
--- a/sys/oss/gstosscommon.c
+++ b/sys/oss/gstosscommon.c
@@ -281,41 +281,25 @@ gst_osscommon_open_audio (GstOssCommon *common, GstOssOpenMode mode, gchar **err
GST_INFO (GST_CAT_PLUGIN_INFO, "common: attempting to open sound device");
/* first try to open the sound card */
- /* FIXME: This code is dubious, why do we need to open and close this ?
- * For linux at least this causes the second open to never return
- * if the device was already in use .. */
-#ifndef __linux__
if (mode == GST_OSSCOMMON_WRITE) {
-#endif
+ /* open non blocking first so that it returns immediatly with an error
+ * when we cannot get to the device */
common->fd = open (common->device, O_WRONLY | O_NONBLOCK);
-#ifdef __linux__
- if (common->fd >= 0) {
- /* remove the non-blocking flag */
- if(fcntl (common->fd, F_SETFL, 0) < 0) {
- *error = g_strdup_printf ("osscommon: Can't make filedescriptor blocking for %s",
- common->device);
- return FALSE;
- }
- }
-#else
- if (errno == EBUSY) {
- g_warning ("osscommon: unable to open the sound device (in use ?)\n");
- }
- if (common->fd >= 0)
+ if (common->fd >= 0) {
close (common->fd);
-
- /* re-open the sound device in blocking mode */
- common->fd = open (common->device, O_WRONLY);
+
+ /* re-open the sound device in blocking mode */
+ common->fd = open (common->device, O_WRONLY);
+ }
}
else {
common->fd = open (common->device, O_RDONLY);
}
-#endif
if (common->fd < 0) {
switch (errno) {
- case EBUSY:
+ case EBUSY:
*error = g_strdup_printf ("osscommon: Unable to open %s (in use ?)",
common->device);
break;