summaryrefslogtreecommitdiffstats
path: root/libao2/ao_oss.c
diff options
context:
space:
mode:
authoralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-04-06 17:55:36 +0000
committeralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-04-06 17:55:36 +0000
commit504270e54921864509859049c7b914fdb38f0e5d (patch)
treedd1bd31225ab41235c87124d9f927d35e0ccc5cf /libao2/ao_oss.c
parent3de39541198b226051881eac511af7fca95dcfa1 (diff)
downloadmpv-504270e54921864509859049c7b914fdb38f0e5d.tar.bz2
mpv-504270e54921864509859049c7b914fdb38f0e5d.tar.xz
uninit immed flag
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@12146 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libao2/ao_oss.c')
-rw-r--r--libao2/ao_oss.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/libao2/ao_oss.c b/libao2/ao_oss.c
index 3591a41adb..25545f9b75 100644
--- a/libao2/ao_oss.c
+++ b/libao2/ao_oss.c
@@ -263,10 +263,16 @@ ac3_retry:
}
// close audio device
-static void uninit(){
+static void uninit(int immed){
if(audio_fd == -1) return;
+#ifdef SNDCTL_DSP_SYNC
+ // to get the buffer played
+ if (!immed)
+ ioctl(audio_fd, SNDCTL_DSP_SYNC, NULL);
+#endif
#ifdef SNDCTL_DSP_RESET
- ioctl(audio_fd, SNDCTL_DSP_RESET, NULL);
+ if (immed)
+ ioctl(audio_fd, SNDCTL_DSP_RESET, NULL);
#endif
close(audio_fd);
audio_fd = -1;
@@ -274,7 +280,7 @@ static void uninit(){
// stop playing and empty buffers (for seeking/pause)
static void reset(){
- uninit();
+ uninit(1);
audio_fd=open(dsp, O_WRONLY);
if(audio_fd < 0){
mp_msg(MSGT_AO,MSGL_ERR,"\nFatal error: *** CANNOT RE-OPEN / RESET AUDIO DEVICE *** %s\n", strerror(errno));
@@ -300,7 +306,7 @@ static void reset(){
// stop playing, keep buffers (for pause)
static void audio_pause()
{
- uninit();
+ uninit(1);
}
// resume playing, after audio_pause()