diff --git a/ChangeLog b/ChangeLog index a228a97781..7647b4d949 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-12-08 Jan Schmidt + + * 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 + Fixes: #349015 + 2006-12-07 Wim Taymans * gst/smpte/gstmask.h: diff --git a/sys/sunaudio/gstsunaudiosrc.c b/sys/sunaudio/gstsunaudiosrc.c index ffad137213..0993ed9795 100644 --- a/sys/sunaudio/gstsunaudiosrc.c +++ b/sys/sunaudio/gstsunaudiosrc.c @@ -46,6 +46,7 @@ #include #include #include +#include #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));