summaryrefslogtreecommitdiffstats
path: root/sys/oss/gstossmixer.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2006-08-16 09:25:17 +0000
committerWim Taymans <wim.taymans@gmail.com>2006-08-16 09:25:17 +0000
commitd5e01fa63fb85ce2a295efedefed81f66ff13a7a (patch)
tree5066aa578992fe869ad7d762e3e40df9f98906cd /sys/oss/gstossmixer.c
parent38bb20d0ff50c4d8c21bc64925700f73f52c56c5 (diff)
sys/oss/: Small cleanups. Better error reporting.
Original commit message from CVS: * sys/oss/gstossmixer.c: (gst_ossmixer_open), (gst_ossmixer_new): * sys/oss/gstossmixerelement.c: (gst_oss_mixer_element_class_init), (gst_oss_mixer_element_init), (gst_oss_mixer_element_set_property), (gst_oss_mixer_element_get_property), (gst_oss_mixer_element_change_state): * sys/oss/gstossmixerelement.h: Small cleanups. Better error reporting. Add device property for the mixer instead of the hardcoded /dev/mixer. Fixes #350785. API: GstOssMixerElement::device property
Diffstat (limited to 'sys/oss/gstossmixer.c')
-rw-r--r--sys/oss/gstossmixer.c52
1 files changed, 33 insertions, 19 deletions
diff --git a/sys/oss/gstossmixer.c b/sys/oss/gstossmixer.c
index a5c8a35b..e5630318 100644
--- a/sys/oss/gstossmixer.c
+++ b/sys/oss/gstossmixer.c
@@ -66,12 +66,8 @@ gst_ossmixer_open (GstOssMixer * mixer)
g_return_val_if_fail (mixer->mixer_fd == -1, FALSE);
mixer->mixer_fd = open (mixer->device, O_RDWR);
- if (mixer->mixer_fd == -1) {
- /* this is valid. OSS devices don't need to expose a mixer */
- GST_DEBUG ("Failed to open mixer device %s, mixing disabled: %s",
- mixer->device, strerror (errno));
- return FALSE;
- }
+ if (mixer->mixer_fd == -1)
+ goto open_failed;
/* get masks */
if (ioctl (mixer->mixer_fd, SOUND_MIXER_READ_RECMASK, &mixer->recmask) < 0
@@ -79,23 +75,40 @@ gst_ossmixer_open (GstOssMixer * mixer)
|| ioctl (mixer->mixer_fd, SOUND_MIXER_READ_STEREODEVS,
&mixer->stereomask) < 0
|| ioctl (mixer->mixer_fd, SOUND_MIXER_READ_DEVMASK, &mixer->devmask) < 0
- || ioctl (mixer->mixer_fd, SOUND_MIXER_READ_CAPS, &mixer->mixcaps) < 0) {
- GST_DEBUG ("Failed to get device masks");
- close (mixer->mixer_fd);
- mixer->mixer_fd = -1;
- return FALSE;
- }
+ || ioctl (mixer->mixer_fd, SOUND_MIXER_READ_CAPS, &mixer->mixcaps) < 0)
+ goto masks_failed;
- /* get name */
+ /* get name, not fatal */
+ g_free (mixer->cardname);
#ifdef SOUND_MIXER_INFO
if (ioctl (mixer->mixer_fd, SOUND_MIXER_INFO, &minfo) == 0) {
mixer->cardname = g_strdup (minfo.name);
- }
-#else
- oss->cardname = g_strdup ("Unknown");
+ GST_INFO ("Card name = %s", GST_STR_NULL (mixer->cardname));
+ } else
#endif
+ {
+ mixer->cardname = g_strdup ("Unknown");
+ GST_INFO ("Unknown card name");
+ }
+ GST_INFO ("Opened mixer for device %s", mixer->device);
return TRUE;
+
+ /* ERRORS */
+open_failed:
+ {
+ /* this is valid. OSS devices don't need to expose a mixer */
+ GST_DEBUG ("Failed to open mixer device %s, mixing disabled: %s",
+ mixer->device, strerror (errno));
+ return FALSE;
+ }
+masks_failed:
+ {
+ GST_DEBUG ("Failed to get device masks");
+ close (mixer->mixer_fd);
+ mixer->mixer_fd = -1;
+ return FALSE;
+ }
}
static void
@@ -166,11 +179,12 @@ gst_ossmixer_new (const char *device, GstOssMixerDirection dir)
return ret;
+ /* ERRORS */
error:
- if (ret)
+ {
gst_ossmixer_free (ret);
-
- return NULL;
+ return NULL;
+ }
}
void