]> git.sesse.net Git - vlc/commitdiff
decoder: simplify and avoid immediate unlock/lock pair
authorRémi Denis-Courmont <remi@remlab.net>
Mon, 23 Apr 2012 15:59:23 +0000 (18:59 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Mon, 23 Apr 2012 16:00:44 +0000 (19:00 +0300)
src/input/decoder.c

index 24c0b20f56ddb3acb30f9bbb5786133033fe9f71..e63070355a4e505e13c9add671d6d33822fd8e55 100644 (file)
@@ -1138,21 +1138,18 @@ static void DecoderWaitDate( decoder_t *p_dec,
     if( *pb_reject || i_deadline < 0 )
         return;
 
-    for( ;; )
+    vlc_mutex_lock( &p_owner->lock );
+    do
     {
-        vlc_mutex_lock( &p_owner->lock );
         if( p_owner->b_flushing || p_owner->b_exit )
         {
             *pb_reject = true;
-            vlc_mutex_unlock( &p_owner->lock );
             break;
         }
-        int i_ret = vlc_cond_timedwait( &p_owner->wait_request, &p_owner->lock,
-                                        i_deadline );
-        vlc_mutex_unlock( &p_owner->lock );
-        if( i_ret )
-            break;
     }
+    while( vlc_cond_timedwait( &p_owner->wait_request, &p_owner->lock,
+                               i_deadline ) == 0 );
+    vlc_mutex_unlock( &p_owner->lock );
 }
 
 static void DecoderPlayAudio( decoder_t *p_dec, aout_buffer_t *p_audio,