vlc_custom_create (vlc_object_t *p_this, size_t i_size, int i_type,
const char *psz_type);
-/* Signal an object without checking for locking consistency. This is wrong. */
-#ifdef __GNUC__
-__attribute__((deprecated))
-#endif
-static inline void
-vlc_object_signal_maybe (vlc_object_t *p_this)
-{
- vlc_cond_signal (&p_this->object_wait);
-}
-
/**
* libvlc_global_data_t (global variable)
*
bool b_thread;
/* Objects thread synchronization */
+ vlc_mutex_t lock;
+ vlc_cond_t wait;
int pipes[2];
vlc_spinlock_t spin;
#define vlc_internals( obj ) (((vlc_object_internals_t*)(VLC_OBJECT(obj)))-1)
+/* Signal an object without checking for locking consistency. This is wrong. */
+#ifdef __GNUC__
+__attribute__((deprecated))
+#endif
+static inline void
+vlc_object_signal_maybe (vlc_object_t *p_this)
+{
+ vlc_cond_signal (&(vlc_internals(p_this)->wait));
+}
+
/**
* Private LibVLC instance data.
*/
p_new->p_private = NULL;
/* Initialize mutexes and condvars */
- vlc_mutex_init( &p_new->object_lock );
- vlc_cond_init( p_new, &p_new->object_wait );
+ vlc_mutex_init( &p_priv->lock );
+ vlc_cond_init( p_new, &p_priv->wait );
vlc_mutex_init( &p_priv->var_lock );
vlc_spin_init( &p_priv->spin );
p_priv->pipes[0] = p_priv->pipes[1] = -1;
#endif
vlc_spin_destroy( &p_priv->ref_spin );
- vlc_mutex_destroy( &p_this->object_lock );
- vlc_cond_destroy( &p_this->object_wait );
+ vlc_mutex_destroy( &p_priv->lock );
+ vlc_cond_destroy( &p_priv->wait );
vlc_spin_destroy( &p_priv->spin );
if( p_priv->pipes[1] != -1 )
close( p_priv->pipes[1] );
void __vlc_object_lock( vlc_object_t *obj )
{
- vlc_mutex_lock( &obj->object_lock );
+ vlc_mutex_lock( &(vlc_internals(obj)->lock) );
}
void __vlc_object_unlock( vlc_object_t *obj )
{
- vlc_assert_locked( &obj->object_lock );
- vlc_mutex_unlock( &obj->object_lock );
+ vlc_assert_locked( &(vlc_internals(obj)->lock) );
+ vlc_mutex_unlock( &(vlc_internals(obj)->lock) );
}
#ifdef WIN32
*/
void __vlc_object_wait( vlc_object_t *obj )
{
- vlc_assert_locked( &obj->object_lock );
- vlc_cond_wait( &obj->object_wait, &obj->object_lock );
+ vlc_object_internals_t *priv = vlc_internals( obj );
+ vlc_assert_locked( &priv->lock);
+ vlc_cond_wait( &priv->wait, &priv->lock );
}
*/
int __vlc_object_timedwait( vlc_object_t *obj, mtime_t deadline )
{
- vlc_assert_locked( &obj->object_lock );
- return vlc_cond_timedwait( &obj->object_wait, &obj->object_lock, deadline );
+ vlc_object_internals_t *priv = vlc_internals( obj );
+ vlc_assert_locked( &priv->lock);
+ return vlc_cond_timedwait( &priv->wait, &priv->lock, deadline );
}
*/
bool __vlc_object_alive( vlc_object_t *obj )
{
- vlc_assert_locked( &obj->object_lock );
+ vlc_assert_locked( &(vlc_internals(obj)->lock) );
return !obj->b_die;
}
*/
void __vlc_object_signal_unlocked( vlc_object_t *obj )
{
- vlc_assert_locked (&obj->object_lock);
- vlc_cond_signal( &obj->object_wait );
+ vlc_assert_locked (&(vlc_internals(obj)->lock));
+ vlc_cond_signal( &(vlc_internals(obj)->wait) );
}
/* Internals */
void playlist_release_current_input( playlist_t * p_playlist )
{
- vlc_assert_locked( &p_playlist->object_lock );
+ vlc_assert_locked( &(vlc_internals(p_playlist)->lock) );
if( !p_playlist->p_input ) return;
void playlist_set_current_input(
playlist_t * p_playlist, input_thread_t * p_input )
{
- vlc_assert_locked( &p_playlist->object_lock );
+ vlc_assert_locked( &(vlc_internals(p_playlist)->lock) );
playlist_release_current_input( p_playlist );