summaryrefslogtreecommitdiffstats
path: root/libao2
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-02-21 13:37:47 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-02-21 13:37:47 +0000
commit0ef6b6a546e1a4feb3c87b9eaf435f8311a90f20 (patch)
tree7b55186a473282341b55aae5a13f8e8be92302ad /libao2
parentdb74aa4315402c814eca56b38516e135d1057562 (diff)
downloadmpv-0ef6b6a546e1a4feb3c87b9eaf435f8311a90f20.tar.bz2
mpv-0ef6b6a546e1a4feb3c87b9eaf435f8311a90f20.tar.xz
Move resetting audio_info_t samples, eof and error in ao_sun.c to reset(), avoids
duplication code from init() and fixes hangs after seeking. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28689 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libao2')
-rw-r--r--libao2/ao_sun.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/libao2/ao_sun.c b/libao2/ao_sun.c
index ebe17c7926..cae2287f6c 100644
--- a/libao2/ao_sun.c
+++ b/libao2/ao_sun.c
@@ -584,14 +584,7 @@ static int init(int rate,int channels,int format,int flags){
ao_data.bps = byte_per_sec = bytes_per_sample * ao_data.samplerate;
ao_data.outburst = byte_per_sec > 100000 ? 16384 : 8192;
- AUDIO_INITINFO(&info);
- info.play.samples = 0;
- info.play.eof = 0;
- info.play.error = 0;
- ioctl (audio_fd, AUDIO_SETINFO, &info);
-
- queued_bursts = 0;
- queued_samples = 0;
+ reset();
return 1;
}
@@ -608,7 +601,15 @@ static void uninit(int immed){
// stop playing and empty buffers (for seeking/pause)
static void reset(void){
+ audio_info_t info;
flush_audio(audio_fd);
+
+ AUDIO_INITINFO(&info);
+ info.play.samples = 0;
+ info.play.eof = 0;
+ info.play.error = 0;
+ ioctl(audio_fd, AUDIO_SETINFO, &info);
+
queued_bursts = 0;
queued_samples = 0;
}