summaryrefslogtreecommitdiffstats
path: root/libao2
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
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')
-rw-r--r--libao2/ao_alsa1x.c2
-rw-r--r--libao2/ao_alsa5.c2
-rw-r--r--libao2/ao_alsa9.c2
-rw-r--r--libao2/ao_arts.c2
-rw-r--r--libao2/ao_dxr2.c2
-rw-r--r--libao2/ao_esd.c2
-rw-r--r--libao2/ao_macosx.c2
-rw-r--r--libao2/ao_mpegpes.c2
-rw-r--r--libao2/ao_nas.c2
-rw-r--r--libao2/ao_null.c2
-rw-r--r--libao2/ao_oss.c14
-rw-r--r--libao2/ao_pcm.c2
-rw-r--r--libao2/ao_plugin.c4
-rw-r--r--libao2/ao_sdl.c2
-rw-r--r--libao2/ao_sgi.c2
-rw-r--r--libao2/ao_sun.c5
-rw-r--r--libao2/ao_win32.c2
-rw-r--r--libao2/audio_out.h2
18 files changed, 30 insertions, 23 deletions
diff --git a/libao2/ao_alsa1x.c b/libao2/ao_alsa1x.c
index d1ce259c56..bc2040de34 100644
--- a/libao2/ao_alsa1x.c
+++ b/libao2/ao_alsa1x.c
@@ -736,7 +736,7 @@ static int init(int rate_hz, int channels, int format, int flags)
/* close audio device */
-static void uninit()
+static void uninit(int immed)
{
if (alsa_handler) {
diff --git a/libao2/ao_alsa5.c b/libao2/ao_alsa5.c
index 95a555d7f1..2a7799fab9 100644
--- a/libao2/ao_alsa5.c
+++ b/libao2/ao_alsa5.c
@@ -236,7 +236,7 @@ static int init(int rate_hz, int channels, int format, int flags)
}
/* close audio device */
-static void uninit()
+static void uninit(int immed)
{
int err;
diff --git a/libao2/ao_alsa9.c b/libao2/ao_alsa9.c
index 0ce5b51257..3795db4f26 100644
--- a/libao2/ao_alsa9.c
+++ b/libao2/ao_alsa9.c
@@ -723,7 +723,7 @@ static int init(int rate_hz, int channels, int format, int flags)
/* close audio device */
-static void uninit()
+static void uninit(int immed)
{
if (alsa_handler) {
diff --git a/libao2/ao_arts.c b/libao2/ao_arts.c
index 38fedef72c..d5704d7a28 100644
--- a/libao2/ao_arts.c
+++ b/libao2/ao_arts.c
@@ -100,7 +100,7 @@ static int init(int rate_hz, int channels, int format, int flags)
return 1;
}
-static void uninit()
+static void uninit(int immed)
{
arts_close_stream(stream);
arts_free();
diff --git a/libao2/ao_dxr2.c b/libao2/ao_dxr2.c
index aec87f0a68..9f996fdce8 100644
--- a/libao2/ao_dxr2.c
+++ b/libao2/ao_dxr2.c
@@ -118,7 +118,7 @@ static int init(int rate,int channels,int format,int flags){
}
// close audio device
-static void uninit(){
+static void uninit(int immed){
}
diff --git a/libao2/ao_esd.c b/libao2/ao_esd.c
index 9318174c4c..807a639679 100644
--- a/libao2/ao_esd.c
+++ b/libao2/ao_esd.c
@@ -274,7 +274,7 @@ static int init(int rate_hz, int channels, int format, int flags)
/*
* close audio device
*/
-static void uninit()
+static void uninit(int immed)
{
if (esd_play_fd >= 0) {
esd_close(esd_play_fd);
diff --git a/libao2/ao_macosx.c b/libao2/ao_macosx.c
index af8635ddfc..8b799ae785 100644
--- a/libao2/ao_macosx.c
+++ b/libao2/ao_macosx.c
@@ -353,7 +353,7 @@ static float get_delay()
/* unload plugin and deregister from coreaudio */
-static void uninit()
+static void uninit(int immed)
{
int i;
OSErr status;
diff --git a/libao2/ao_mpegpes.c b/libao2/ao_mpegpes.c
index 3fdf67855c..d26336e27a 100644
--- a/libao2/ao_mpegpes.c
+++ b/libao2/ao_mpegpes.c
@@ -131,7 +131,7 @@ retry:
}
// close audio device
-static void uninit(){
+static void uninit(int immed){
}
diff --git a/libao2/ao_nas.c b/libao2/ao_nas.c
index 80617c1f91..b3d8f1523a 100644
--- a/libao2/ao_nas.c
+++ b/libao2/ao_nas.c
@@ -476,7 +476,7 @@ static int init(int rate,int channels,int format,int flags)
}
// close audio device
-static void uninit(){
+static void uninit(int immed){
mp_msg(MSGT_AO, MSGL_DBG3, "ao_nas: uninit()\n");
diff --git a/libao2/ao_null.c b/libao2/ao_null.c
index d35f9f42bc..17f4fe8bad 100644
--- a/libao2/ao_null.c
+++ b/libao2/ao_null.c
@@ -64,7 +64,7 @@ static int init(int rate,int channels,int format,int flags){
}
// close audio device
-static void uninit(){
+static void uninit(int immed){
}
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()
diff --git a/libao2/ao_pcm.c b/libao2/ao_pcm.c
index f7be0bdb72..e3484fa871 100644
--- a/libao2/ao_pcm.c
+++ b/libao2/ao_pcm.c
@@ -132,7 +132,7 @@ static int init(int rate,int channels,int format,int flags){
}
// close audio device
-static void uninit(){
+static void uninit(int immed){
if(ao_pcm_waveheader && fseek(fp, 0, SEEK_SET) == 0){ /* Write wave header */
wavhdr.file_length = wavhdr.data_length + sizeof(wavhdr) - 8;
diff --git a/libao2/ao_plugin.c b/libao2/ao_plugin.c
index f420a25e2b..6cb2f85c55 100644
--- a/libao2/ao_plugin.c
+++ b/libao2/ao_plugin.c
@@ -197,9 +197,9 @@ static int init(int rate,int channels,int format,int flags){
}
// close audio device
-static void uninit(){
+static void uninit(int immed){
int i=0;
- driver()->uninit();
+ driver()->uninit(immed);
while(plugin(i))
plugin(i++)->uninit();
if(ao_plugin_local_data.plugins)
diff --git a/libao2/ao_sdl.c b/libao2/ao_sdl.c
index b3c2619844..115eef130b 100644
--- a/libao2/ao_sdl.c
+++ b/libao2/ao_sdl.c
@@ -265,7 +265,7 @@ void callback(void *userdata, Uint8 *stream, int len); userdata is the pointer s
}
// close audio device
-static void uninit(){
+static void uninit(int immed){
mp_msg(MSGT_AO,MSGL_V,"SDL: Audio Subsystem shutting down!\n");
while(buffered_bytes > 0)
usec_sleep(50000);
diff --git a/libao2/ao_sgi.c b/libao2/ao_sgi.c
index 77f694a3c7..3c08b10eb9 100644
--- a/libao2/ao_sgi.c
+++ b/libao2/ao_sgi.c
@@ -118,7 +118,7 @@ static int init(int rate, int channels, int format, int flags) {
}
// close audio device
-static void uninit() {
+static void uninit(int immed) {
/* TODO: samplerate should be set back to the value before mplayer was started! */
diff --git a/libao2/ao_sun.c b/libao2/ao_sun.c
index ea50876857..085117d9cc 100644
--- a/libao2/ao_sun.c
+++ b/libao2/ao_sun.c
@@ -615,10 +615,11 @@ static int init(int rate,int channels,int format,int flags){
}
// close audio device
-static void uninit(){
+static void uninit(int immed){
#ifdef __svr4__
// throw away buffered data in the audio driver's STREAMS queue
- ioctl(audio_fd, I_FLUSH, FLUSHW);
+ if (immed)
+ ioctl(audio_fd, I_FLUSH, FLUSHW);
#endif
close(audio_fd);
}
diff --git a/libao2/ao_win32.c b/libao2/ao_win32.c
index 124c612d37..cab59b4969 100644
--- a/libao2/ao_win32.c
+++ b/libao2/ao_win32.c
@@ -167,7 +167,7 @@ static int init(int rate,int channels,int format,int flags)
}
// close audio device
-static void uninit()
+static void uninit(int immed)
{
while (buffered_bytes > 0)
usec_sleep(50000);
diff --git a/libao2/audio_out.h b/libao2/audio_out.h
index 9930b79403..c2b814beba 100644
--- a/libao2/audio_out.h
+++ b/libao2/audio_out.h
@@ -20,7 +20,7 @@ typedef struct ao_functions_s
ao_info_t *info;
int (*control)(int cmd,void *arg);
int (*init)(int rate,int channels,int format,int flags);
- void (*uninit)();
+ void (*uninit)(int immed);
void (*reset)();
int (*get_space)();
int (*play)(void* data,int len,int flags);