From ed397bf9053a0321d5a7d10b29cc9c363a190669 Mon Sep 17 00:00:00 2001 From: Guenter Bartsch Date: Sun, 20 Oct 2002 23:58:52 +0000 Subject: more locking CVS patchset: 2895 CVS date: 2002/10/20 23:58:52 --- src/audio_out/audio_oss_out.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/audio_out/audio_oss_out.c b/src/audio_out/audio_oss_out.c index a81965f95..77832ab85 100644 --- a/src/audio_out/audio_oss_out.c +++ b/src/audio_out/audio_oss_out.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: audio_oss_out.c,v 1.78 2002/10/20 17:56:35 guenter Exp $ + * $Id: audio_oss_out.c,v 1.79 2002/10/20 23:58:52 guenter Exp $ * * 20-8-2001 First implementation of Audio sync and Audio driver separation. * Copyright (C) 2001 James Courtier-Dutton James@superbug.demon.co.uk @@ -168,9 +168,12 @@ static int ao_oss_open(xine_ao_driver_t *this_gen, return 0; } + pthread_mutex_lock (&this->lock); + if (this->audio_fd > -1) { if ( (mode == this->mode) && (rate == this->input_sample_rate) ) { + pthread_mutex_unlock (&this->lock); return this->output_sample_rate; } @@ -191,6 +194,7 @@ static int ao_oss_open(xine_ao_driver_t *this_gen, if(this->audio_fd < 0) { printf("audio_oss_out: Opening audio device %s: %s\n", this->audio_dev, strerror(errno)); + pthread_mutex_unlock (&this->lock); return 0; } @@ -216,6 +220,7 @@ static int ao_oss_open(xine_ao_driver_t *this_gen, tmp = 44100; if (ioctl(this->audio_fd,SNDCTL_DSP_SPEED, &tmp) == -1) { printf ("audio_oss_out: error: 44100 Hz sampling rate not supported\n"); + pthread_mutex_unlock (&this->lock); return 0; } } @@ -289,6 +294,7 @@ static int ao_oss_open(xine_ao_driver_t *this_gen, printf("audio_oss_out: ioctl succeeded but set format to 0x%x.\n",tmp); else printf("audio_oss_out: The AFMT_U8 ioctl failed.\n"); + pthread_mutex_unlock (&this->lock); return 0; } else { printf("audio_oss_out: SNDCTL_DSP_SETFMT failed for AFMT_S16_NE.\n"); @@ -296,6 +302,7 @@ static int ao_oss_open(xine_ao_driver_t *this_gen, printf("audio_oss_out: ioctl succeeded but set format to 0x%x.\n",tmp); else printf("audio_oss_out: The AFMT_S16_NE ioctl failed.\n"); + pthread_mutex_unlock (&this->lock); return 0; } } @@ -305,6 +312,7 @@ static int ao_oss_open(xine_ao_driver_t *this_gen, tmp = AFMT_AC3; if (ioctl(this->audio_fd, SNDCTL_DSP_SETFMT, &tmp) < 0 || tmp != AFMT_AC3) { printf("audio_oss_out: AC3 SNDCTL_DSP_SETFMT failed. %d\n",tmp); + pthread_mutex_unlock (&this->lock); return 0; } break; @@ -332,6 +340,8 @@ static int ao_oss_open(xine_ao_driver_t *this_gen, ioctl(this->audio_fd,SNDCTL_DSP_SETFRAGMENT,&tmp); */ + pthread_mutex_unlock (&this->lock); + return this->output_sample_rate; } -- cgit v1.2.3