diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2003-01-27 20:36:46 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2003-01-27 20:36:46 +0000 |
commit | d1dcf80a9f1b5be47fa3498515a941dc15a16415 (patch) | |
tree | 35e06270895ed6354c01fcbb7ea78eb4d6473db8 /sys/oss | |
parent | ae07474bb234935041fbed9fa83e2d9dd92c3c91 (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.c | 32 |
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; |