[vlc-commits] opensles: implement drain with msleep

Rafaël Carré git at videolan.org
Sat Dec 15 15:48:49 CET 2012


vlc | branch: master | Rafaël Carré <funman at videolan.org> | Sat Dec 15 15:35:20 2012 +0100| [a5779e7c4f71e670522bbde9e04973670f46517d] | committer: Rafaël Carré

opensles: implement drain with msleep

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a5779e7c4f71e670522bbde9e04973670f46517d
---

 modules/audio_output/opensles_android.c |   31 +++++++++++++++++++------------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/modules/audio_output/opensles_android.c b/modules/audio_output/opensles_android.c
index c639eec..9715c00 100644
--- a/modules/audio_output/opensles_android.c
+++ b/modules/audio_output/opensles_android.c
@@ -115,20 +115,27 @@ static void Clean( aout_sys_t *p_sys )
     free( p_sys );
 }
 
-static void Flush(audio_output_t *p_aout, bool wait)
+static void Flush(audio_output_t *p_aout, bool drain)
 {
-    (void)wait; /* FIXME */
     aout_sys_t *p_sys = p_aout->sys;
 
-    vlc_mutex_lock( &p_sys->lock );
-    SetPlayState( p_sys->playerPlay, SL_PLAYSTATE_STOPPED );
-    Clear( p_sys->playerBufferQueue );
-    SetPlayState( p_sys->playerPlay, SL_PLAYSTATE_PLAYING );
-    block_ChainRelease( p_sys->p_chain );
-    p_sys->p_chain = NULL;
-    p_sys->pp_last = &p_sys->p_chain;
-    p_sys->length = 0;
-    vlc_mutex_unlock( &p_sys->lock );
+    if (drain) {
+        mtime_t delay;
+        vlc_mutex_lock( &p_sys->lock );
+        delay = p_sys->length;
+        vlc_mutex_unlock( &p_sys->lock );
+        msleep(delay);
+    } else {
+        vlc_mutex_lock( &p_sys->lock );
+        SetPlayState( p_sys->playerPlay, SL_PLAYSTATE_STOPPED );
+        Clear( p_sys->playerBufferQueue );
+        SetPlayState( p_sys->playerPlay, SL_PLAYSTATE_PLAYING );
+        block_ChainRelease( p_sys->p_chain );
+        p_sys->p_chain = NULL;
+        p_sys->pp_last = &p_sys->p_chain;
+        p_sys->length = 0;
+        vlc_mutex_unlock( &p_sys->lock );
+    }
 }
 
 static void Pause(audio_output_t *p_aout, bool pause, mtime_t date)
@@ -386,7 +393,7 @@ static int Start( audio_output_t *p_aout, audio_sample_format_t *restrict fmt )
     fmt->i_physical_channels   = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
     p_aout->play               = Play;
     p_aout->pause              = Pause;
-    p_aout->flush               = Flush;
+    p_aout->flush              = Flush;
 
     aout_FormatPrepare( fmt );
 



More information about the vlc-commits mailing list