]> git.sesse.net Git - vlc/commitdiff
Really fix race VLC_Die condition
authorRémi Denis-Courmont <rem@videolan.org>
Sat, 3 Mar 2007 14:25:31 +0000 (14:25 +0000)
committerRémi Denis-Courmont <rem@videolan.org>
Sat, 3 Mar 2007 14:25:31 +0000 (14:25 +0000)
src/vlc.c

index defa5c11dfbb2ba1b925445bd6630c8c28d8151a..4d61b1ca03ca19c1d38551d137a6538d9bb3545c 100644 (file)
--- a/src/vlc.c
+++ b/src/vlc.c
@@ -242,16 +242,18 @@ static void *SigHandler (void *data)
 }
 
 
-static void KillOnce (void)
-{
-    VLC_Die (0);
-}
-
-
+#include <stdbool.h>
 static void Kill (void)
 {
-    static pthread_once_t once = PTHREAD_ONCE_INIT;
-    pthread_once (&once, KillOnce);
+    static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
+    static bool killed = false;;
+    pthread_mutex_lock (&lock);
+    if (!killed)
+    {
+        VLC_Die (0);
+        killed = true;
+    }
+    pthread_mutex_unlock (&lock);
 }
 
 #endif