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.
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;
}