p_new->p_private = NULL;
/* Initialize mutexes and condvars */
- vlc_mutex_init( &p_priv->lock );
vlc_mutex_init( &p_priv->var_lock );
vlc_cond_init( &p_priv->var_wait );
p_priv->pipes[0] = p_priv->pipes[1] = -1;
FREENULL( p_this->psz_object_name );
vlc_spin_destroy( &p_priv->ref_spin );
- vlc_mutex_destroy( &p_priv->lock );
if( p_priv->pipes[1] != -1 && p_priv->pipes[1] != p_priv->pipes[0] )
close( p_priv->pipes[1] );
if( p_priv->pipes[0] != -1 )
}
-/** Inter-object signaling */
-
-void __vlc_object_lock( vlc_object_t *obj )
-{
- vlc_mutex_lock( &(vlc_internals(obj)->lock) );
-}
-
-void __vlc_object_unlock( vlc_object_t *obj )
-{
- vlc_assert_locked( &(vlc_internals(obj)->lock) );
- vlc_mutex_unlock( &(vlc_internals(obj)->lock) );
-}
-
#ifdef WIN32
# include <winsock2.h>
# include <ws2tcpip.h>
#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()).
{
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: */
write (internals->pipes[1], &(uint64_t){ 1 }, sizeof (uint64_t));
}
}
- vlc_object_unlock (obj);
+ vlc_mutex_unlock (&pipe_lock);
return internals->pipes[0];
}
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];
}
/* This also serves as a memory barrier toward vlc_object_alive(): */
- vlc_object_unlock( p_this );
+ vlc_mutex_unlock( &pipe_lock );
if (fd != -1)
{