if( p_playlist->p_fetcher )
vlc_object_release( p_playlist->p_fetcher );
-#ifndef NDEBUG
- libvlc_priv (p_this->p_libvlc)->p_playlist = NULL; /* pl_Yield() will fail */
-#endif
}
/* Destroy remaining objects */
static void ObjectGarbageCollector( playlist_t *p_playlist, bool b_force )
{
- vlc_object_t *p_obj;
-
if( !b_force )
{
if( mdate() - p_playlist->gc_date < 1000000 )
}
vlc_mutex_lock( &p_playlist->gc_lock );
- while( ( p_obj = vlc_object_find( p_playlist->p_libvlc, VLC_OBJECT_VOUT,
- FIND_CHILD ) ) )
- {
- vlc_object_release( p_obj );
- if( p_obj->p_parent == VLC_OBJECT(p_playlist->p_libvlc) )
- {
- msg_Dbg( p_playlist, "garbage collector destroying 1 vout" );
- vlc_object_release( p_obj ); /* Hmm, is this (thread-)safe?? */
- }
- }
p_playlist->b_cant_sleep = false;
vlc_mutex_unlock( &p_playlist->gc_lock );
}
}
}
+/** Get current playing input.
+ */
+input_thread_t * playlist_CurrentInput( playlist_t * p_playlist )
+{
+ input_thread_t * p_input;
+ PL_LOCK;
+ p_input = p_playlist->p_input;
+ if( p_input ) vlc_object_yield( p_input );
+ PL_UNLOCK;
+ return p_input;
+}
+
/**
* @}