]> git.sesse.net Git - vlc/commitdiff
decoder: remove broken pause assertion (fix #6566)
authorRémi Denis-Courmont <remi@remlab.net>
Sat, 2 Jun 2012 08:06:28 +0000 (11:06 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Sat, 2 Jun 2012 08:06:28 +0000 (11:06 +0300)
Arguably, this patch is really just a work-around for a bug in the
E/S output.

src/input/decoder.c

index f0949c0e3032db3fd75395d9fa0e99956ecd8d62..a98367f0296a41b57b1b4a7a724b650cf4ebbd08 100644 (file)
@@ -516,16 +516,17 @@ void input_DecoderChangePause( decoder_t *p_dec, bool b_paused, mtime_t i_date )
     decoder_owner_sys_t *p_owner = p_dec->p_owner;
 
     vlc_mutex_lock( &p_owner->lock );
+    /* Normally, p_owner->b_paused != b_paused here. But if a track is added
+     * while the input is paused (e.g. add sub file), then b_paused is
+     * (incorrectly) false. */
+    if( likely(p_owner->b_paused != b_paused) ) {
+        p_owner->b_paused = b_paused;
+        p_owner->pause.i_date = i_date;
+        p_owner->pause.i_ignore = 0;
+        vlc_cond_signal( &p_owner->wait_request );
 
-    assert( p_owner->b_paused != b_paused );
-
-    p_owner->b_paused = b_paused;
-    p_owner->pause.i_date = i_date;
-    p_owner->pause.i_ignore = 0;
-    vlc_cond_signal( &p_owner->wait_request );
-
-    DecoderOutputChangePause( p_dec, b_paused, i_date );
-
+        DecoderOutputChangePause( p_dec, b_paused, i_date );
+    }
     vlc_mutex_unlock( &p_owner->lock );
 }