]> git.sesse.net Git - vlc/commitdiff
Don't wait for signal if the object is already dying.
authorRémi Denis-Courmont <rem@videolan.org>
Mon, 22 Oct 2007 17:35:27 +0000 (17:35 +0000)
committerRémi Denis-Courmont <rem@videolan.org>
Mon, 22 Oct 2007 17:35:27 +0000 (17:35 +0000)
Better solution would be to make sure interface threads lock their object ALL THE TIME, except when waiting on its condition variable, so we do never "loose" condition signals. However, I am not sure if this would not result in a deadlock, should the interface need to lock another object (typically, playlist, input and/or vout).  Also, we would need to have all thread call vlc_thread_ready(), otherwise, we could also miss the signal if it happens right after the thread is created => this requires fixing every interface, except those that don't have a pf_run.

include/vlc_objects.h

index bbf3121601ef0498c923c1ae01ecafda07f73ef4..348e56d0f759990ca2d2a9663f057d9714402aae 100644 (file)
@@ -159,7 +159,7 @@ vlc_bool_t __vlc_object_lock_and_wait( vlc_object_t *obj )
     vlc_bool_t b;
 
     vlc_object_lock( obj );
-    b = vlc_object_wait( obj );
+    b = obj->b_die ? VLC_TRUE : vlc_object_wait( obj );
     vlc_object_unlock( obj );
     return b;
 }