diff options
| author | Jerry Tan <jerry.tan@sun.com> | 2006-12-08 14:32:51 +0000 | 
|---|---|---|
| committer | Jan Schmidt <thaytan@mad.scientist.com> | 2006-12-08 14:32:51 +0000 | 
| commit | 6c58a6baea08b449fec5909d7421c744ab0e65fd (patch) | |
| tree | 5a08c005bcea897878037655a69d0024dd620be0 | |
| parent | 6b01538bca460e8a97eb5a7a73a3b76aee61734e (diff) | |
sys/sunaudio/gstsunaudiosrc.c: Apply patch to open the mixer control and set the MULTIPLE_OPEN ioctl. On solaris, the...
Original commit message from CVS:
* sys/sunaudio/gstsunaudiosrc.c: (gst_sunaudiosrc_open):
Apply patch to open the mixer control and set the MULTIPLE_OPEN
ioctl. On solaris, the mixer device doesn't need opening non-blocking
- it can be opened by multiple processes by default, but needs the ioctl 	for multiple opens within 1 process.
Patch by: Jerry Tan <jerry.tan at sun dot com>
Fixes: #349015
| -rw-r--r-- | ChangeLog | 9 | ||||
| -rw-r--r-- | sys/sunaudio/gstsunaudiosrc.c | 8 | 
2 files changed, 14 insertions, 3 deletions
@@ -1,3 +1,12 @@ +2006-12-08  Jan Schmidt  <thaytan@mad.scientist.com> + +	* sys/sunaudio/gstsunaudiosrc.c: (gst_sunaudiosrc_open): +	Apply patch to open the mixer control and set the MULTIPLE_OPEN +	ioctl. On solaris, the mixer device doesn't need opening non-blocking  +	- it can be opened by multiple processes by default, but needs the ioctl 	for multiple opens within 1 process. +	Patch by: Jerry Tan <jerry.tan at sun dot com> +	Fixes: #349015 +  2006-12-07  Wim Taymans  <wim@fluendo.com>  	* gst/smpte/gstmask.h: diff --git a/sys/sunaudio/gstsunaudiosrc.c b/sys/sunaudio/gstsunaudiosrc.c index ffad1372..0993ed97 100644 --- a/sys/sunaudio/gstsunaudiosrc.c +++ b/sys/sunaudio/gstsunaudiosrc.c @@ -46,6 +46,7 @@  #include <string.h>  #include <unistd.h>  #include <stropts.h> +#include <sys/mixer.h>  #include "gstsunaudiosrc.h" @@ -241,11 +242,12 @@ static gboolean  gst_sunaudiosrc_open (GstAudioSrc * asrc)  {    GstSunAudioSrc *sunaudiosrc = GST_SUNAUDIO_SRC (asrc); -  int fd, ret; +  int fd, ret, err; -  fd = open (sunaudiosrc->device, O_RDWR | O_NONBLOCK); +  fd = open (sunaudiosrc->device, O_RDONLY); +  err = ioctl (fd, AUDIO_MIXER_MULTIPLE_OPEN); -  if (fd == -1) { +  if (fd == -1 || err == -1) {      GST_ELEMENT_ERROR (sunaudiosrc, RESOURCE, OPEN_READ, (NULL),          ("can't open connection to Sun Audio device %s", sunaudiosrc->device));  | 
