]> git.sesse.net Git - vlc/commitdiff
Privatize the object pipe lock
authorRémi Denis-Courmont <remi@remlab.net>
Thu, 5 Mar 2009 17:07:53 +0000 (19:07 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Thu, 5 Mar 2009 17:07:53 +0000 (19:07 +0200)
src/misc/objects.c

index 828903e327a10f22df315e188f30f65e7a8a036b..6b0f5696c73882786a6f585be6fd7762565bc10a 100644 (file)
@@ -370,6 +370,8 @@ error:
 #define close( a )       closesocket (a)
 #endif /* WIN32 */
 
+static vlc_mutex_t pipe_lock = VLC_STATIC_MUTEX;
+
 /**
  * Returns the readable end of a pipe that becomes readable once termination
  * of the object is requested (vlc_object_kill()).
@@ -386,7 +388,7 @@ int vlc_object_waitpipe( vlc_object_t *obj )
 {
     vlc_object_internals_t *internals = vlc_internals( obj );
 
-    vlc_object_lock (obj);
+    vlc_mutex_lock (&pipe_lock);
     if (internals->pipes[0] == -1)
     {
         /* This can only ever happen if someone killed us without locking: */
@@ -407,7 +409,7 @@ int vlc_object_waitpipe( vlc_object_t *obj )
             write (internals->pipes[1], &(uint64_t){ 1 }, sizeof (uint64_t));
         }
     }
-    vlc_object_unlock (obj);
+    vlc_mutex_unlock (&pipe_lock);
     return internals->pipes[0];
 }
 
@@ -422,7 +424,7 @@ void __vlc_object_kill( vlc_object_t *p_this )
     int fd = -1;
 
     vlc_thread_cancel( p_this );
-    vlc_object_lock( p_this );
+    vlc_mutex_lock( &pipe_lock );
     if( !p_this->b_die )
     {
         fd = priv->pipes[1];
@@ -430,7 +432,7 @@ void __vlc_object_kill( vlc_object_t *p_this )
     }
 
     /* This also serves as a memory barrier toward vlc_object_alive(): */
-    vlc_object_unlock( p_this );
+    vlc_mutex_unlock( &pipe_lock );
 
     if (fd != -1)
     {