From 8bf64ccc76a40c0ba7c2089ed5e08f58a5f405f3 Mon Sep 17 00:00:00 2001 From: Pierre d'Herbemont Date: Wed, 26 Mar 2008 00:39:59 +0100 Subject: [PATCH] threads: Make sure we vlc_thread_join() won't block when run from joined thread using the pthread implementation. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémi Denis-Courmont --- src/misc/threads.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/misc/threads.c b/src/misc/threads.c index 23dcf71191..633e0634c2 100644 --- a/src/misc/threads.c +++ b/src/misc/threads.c @@ -834,8 +834,12 @@ void __vlc_thread_join( vlc_object_t *p_this, const char * psz_file, int i_line i_ret = (B_OK == wait_for_thread( p_priv->thread_id, &exit_value )); #elif defined( LIBVLC_USE_PTHREAD ) - i_ret = pthread_join( p_priv->thread_id, NULL ); - + /* Make sure we do return if we are calling vlc_thread_join() + * from the joined thread */ + if (pthread_equal (pthread_self (), p_priv->thread_id)) + i_ret = pthread_detach (p_priv->thread_id); + else + i_ret = pthread_join (p_priv->thread_id, NULL); #endif if( i_ret ) -- GitLab