]> git.sesse.net Git - vlc/commitdiff
Split vout_FixLeaks into vout_FixLeaks and vout_Reset.
authorLaurent Aimar <fenrir@videolan.org>
Fri, 23 Apr 2010 20:46:48 +0000 (22:46 +0200)
committerLaurent Aimar <fenrir@videolan.org>
Fri, 23 Apr 2010 20:46:48 +0000 (22:46 +0200)
No functionnal changes.

src/input/decoder.c
src/video_output/video_output.c
src/video_output/vout_control.h

index a9594f1185191aa586f43b1b265aa306a6568121..5cf35bb0599775382b97eb3cbd8c560fd446868c 100644 (file)
@@ -2068,9 +2068,7 @@ static void DeleteDecoder( decoder_t * p_dec )
     {
         /* Hack to make sure all the the pictures are freed by the decoder
          * and that the vout is not paused anymore */
-        vout_FixLeaks( p_owner->p_vout, true );
-        if( p_owner->b_paused )
-            vout_ChangePause( p_owner->p_vout, false, mdate() );
+        vout_Reset( p_owner->p_vout );
 
         /* */
         input_resource_RequestVout( p_owner->p_input->p->p_resource, p_owner->p_vout, NULL, true );
@@ -2379,7 +2377,7 @@ static picture_t *vout_new_buffer( decoder_t *p_dec )
         DecoderSignalBuffering( p_dec, true );
 
         /* Check the decoder doesn't leak pictures */
-        vout_FixLeaks( p_owner->p_vout, false );
+        vout_FixLeaks( p_owner->p_vout );
 
         /* FIXME add a vout_WaitPictureAvailable (timedwait) */
         msleep( VOUT_OUTMEM_SLEEP );
index a5e7d00f5820d99b8f4cdaf1a9d01ca41503e494..30010e72896ccd2469bc44591d4ad777906a6369 100644 (file)
@@ -592,25 +592,22 @@ void vout_Flush(vout_thread_t *vout, mtime_t date)
     vlc_mutex_unlock(&vout->p->picture_lock);
 }
 
-static void vout_Reset(vout_thread_t *vout)
+void vout_Reset(vout_thread_t *vout)
 {
-#warning "TODO reset pause in vout_Reset"
     vlc_mutex_lock(&vout->p->picture_lock);
+
     Flush(vout, INT64_MAX, true);
     if (vout->p->decoder_pool)
         picture_pool_NonEmpty(vout->p->decoder_pool, true);
+    vout->p->pause.is_on = false;
+    vout->p->pause.date  = mdate();
+
     vlc_cond_signal( &vout->p->picture_wait );
     vlc_mutex_unlock(&vout->p->picture_lock);
 }
 
-void vout_FixLeaks( vout_thread_t *vout, bool b_forced )
+void vout_FixLeaks( vout_thread_t *vout )
 {
-#warning "TODO split vout_FixLeaks into vout_FixLeaks and vout_Reset"
-    if (b_forced) {
-        vout_Reset(vout);
-        return;
-    }
-
     vlc_mutex_lock(&vout->p->picture_lock);
 
     picture_t *picture = picture_fifo_Peek(vout->p->decoder_fifo);
index d44b06d6331a8bb7835e22a001aa3c5d3a52dc13..ff2c622eeafb05313439bc3bf918488968facaf0 100644 (file)
@@ -61,7 +61,12 @@ void vout_Flush( vout_thread_t *p_vout, mtime_t i_date );
  *
  * XXX This function is there to workaround bugs in decoder
  */
-void vout_FixLeaks( vout_thread_t *p_vout, bool b_forced );
+void vout_FixLeaks( vout_thread_t *p_vout );
+
+/*
+ * Reset the states of the vout.
+ */
+void vout_Reset( vout_thread_t *p_vout );
 
 /**
  * This functions will drop a picture retreived by vout_CreatePicture.