mirror of https://github.com/mpv-player/mpv
nonblock open is not legal for OSS (see OSS api docs), and causes problems on freebsd (and maybe other OSs)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@5908 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
4298359af2
commit
97506370eb
|
@ -103,17 +103,23 @@ static int init(int rate,int channels,int format,int flags){
|
|||
if (verbose)
|
||||
printf("audio_setup: using '%s' dsp device\n", dsp);
|
||||
|
||||
#ifdef __linux__
|
||||
audio_fd=open(dsp, O_WRONLY | O_NONBLOCK);
|
||||
#else
|
||||
audio_fd=open(dsp, O_WRONLY);
|
||||
#endif
|
||||
if(audio_fd<0){
|
||||
printf("Can't open audio device %s: %s -> no sound\n", dsp, strerror(errno));
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
/* Remove the non-blocking flag */
|
||||
if(fcntl(audio_fd, F_SETFL, 0) < 0) {
|
||||
printf("Can't make filedescriptor non-blocking: %s -> no sound\n", strerror(errno));
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
ao_data.bps=channels*rate;
|
||||
if(format != AFMT_U8 && format != AFMT_S8)
|
||||
|
@ -217,8 +223,13 @@ static void uninit(){
|
|||
// stop playing and empty buffers (for seeking/pause)
|
||||
static void reset(){
|
||||
uninit();
|
||||
#ifdef __linux__
|
||||
audio_fd=open(dsp, O_WRONLY | O_NONBLOCK);
|
||||
if(audio_fd < 0 || fcntl(audio_fd, F_SETFL, 0) < 0){
|
||||
#else
|
||||
audio_fd=open(dsp, O_WRONLY);
|
||||
if(audio_fd < 0){
|
||||
#endif
|
||||
printf("\nFatal error: *** CANNOT RE-OPEN / RESET AUDIO DEVICE *** %s\n", strerror(errno));
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue