/** * Add an input item to the playlist node * * \param p_playlist the playlist to add into * \param p_input the input item to add * \param i_mode the mode used when adding * \param i_pos the position in the playlist where to add. If this is * PLAYLIST_END the item will be added at the end of the playlist * regardless of its size * \param b_playlist TRUE for playlist, FALSE for media library * \param b_locked TRUE if the playlist is locked * \return VLC_SUCCESS or VLC_ENOMEM or VLC_EGENERIC */ int playlist_AddInput( playlist_t* p_playlist, input_item_t *p_input, int i_mode, int i_pos, bool b_playlist, bool b_locked ) { playlist_item_t *p_item; if( !pl_priv(p_playlist)->b_doing_ml ) PL_DEBUG( "adding item `%s' ( %s )", p_input->psz_name, p_input->psz_uri ); PL_LOCK_IF( !b_locked ); p_item = playlist_ItemNewFromInput( p_playlist, p_input ); if( p_item == NULL ) { PL_UNLOCK_IF( !b_locked ); return VLC_ENOMEM; } AddItem( p_playlist, p_item, b_playlist ? p_playlist->p_playing : p_playlist->p_media_library , i_mode, i_pos ); GoAndPreparse( p_playlist, i_mode, p_item ); PL_UNLOCK_IF( !b_locked ); return VLC_SUCCESS; }
/** * Add an input item to a given node * * \param p_playlist the playlist to add into * \param p_input the input item to add * \param p_parent the parent item to add into * \param i_mode the mode used when addin * \param i_pos the position in the playlist where to add. If this is * PLAYLIST_END the item will be added at the end of the playlist * regardless of its size * \param b_locked TRUE if the playlist is locked * \return the new playlist item */ playlist_item_t * playlist_NodeAddInput( playlist_t *p_playlist, input_item_t *p_input, playlist_item_t *p_parent, int i_mode, int i_pos, bool b_locked ) { playlist_item_t *p_item; assert( p_input ); assert( p_parent && p_parent->i_children != -1 ); /* FIXME: use b_killed instead: */ if( !vlc_object_alive(p_playlist) ) return NULL; PL_LOCK_IF( !b_locked ); p_item = playlist_ItemNewFromInput( p_playlist, p_input ); if( p_item == NULL ) return NULL; AddItem( p_playlist, p_item, p_parent, i_mode, i_pos ); GoAndPreparse( p_playlist, i_mode, p_item ); PL_UNLOCK_IF( !b_locked ); return p_item; }
/** * Delete from input * * Search anywhere in playlist for an an input item and delete it * \param p_playlist playlist object * \param p_input the input to delete * \param b_locked TRUE if the playlist is locked * \return VLC_SUCCESS or VLC_ENOITEM */ int playlist_DeleteFromInput( playlist_t *p_playlist, input_item_t *p_input, bool b_locked ) { int i_ret; PL_LOCK_IF( !b_locked ); i_ret = DeleteFromInput( p_playlist, p_input, p_playlist->p_root, true ); PL_UNLOCK_IF( !b_locked ); return ( i_ret == VLC_SUCCESS ? VLC_SUCCESS : VLC_ENOITEM ); }
/** * Delete input item * * Remove an input item when it appears from a root playlist item * \param p_playlist playlist object * \param p_input the input to delete * \param p_root root playlist item * \param b_locked TRUE if the playlist is locked * \return VLC_SUCCESS or VLC_EGENERIC */ int playlist_DeleteFromInputInParent( playlist_t *p_playlist, input_item_t *p_item, playlist_item_t *p_root, bool b_locked ) { int i_ret; PL_LOCK_IF( !b_locked ); i_ret = DeleteFromInput( p_playlist, p_item, p_root, true ); PL_UNLOCK_IF( !b_locked ); return i_ret; }
/** * Add an input item to the playlist node * * \param p_playlist the playlist to add into * \param p_input the input item to add * \param i_mode the mode used when adding * \param i_pos the position in the playlist where to add. If this is * PLAYLIST_END the item will be added at the end of the playlist * regardless of its size * \param b_playlist TRUE for playlist, FALSE for media library * \param b_locked TRUE if the playlist is locked * \return VLC_SUCCESS or VLC_ENOMEM or VLC_EGENERIC */ int playlist_AddInput( playlist_t* p_playlist, input_item_t *p_input, int i_mode, int i_pos, bool b_playlist, bool b_locked ) { playlist_item_t *p_item; PL_LOCK_IF( !b_locked ); p_item = playlist_ItemNewFromInput( p_playlist, p_input ); if( p_item == NULL ) { PL_UNLOCK_IF( !b_locked ); return VLC_ENOMEM; } AddItem( p_playlist, p_item, b_playlist ? p_playlist->p_playing : p_playlist->p_media_library , i_mode, i_pos ); GoAndPreparse( p_playlist, i_mode, p_item ); PL_UNLOCK_IF( !b_locked ); return VLC_SUCCESS; }
/** * Add an input item to a given node * * \param p_playlist the playlist to add into * \param p_input the input item to add * \param p_parent the parent item to add into * \param i_mode the mode used when addin * \param i_pos the position in the playlist where to add. If this is * PLAYLIST_END the item will be added at the end of the playlist * regardless of its size * \param b_locked TRUE if the playlist is locked * \return the new playlist item */ playlist_item_t * playlist_NodeAddInput( playlist_t *p_playlist, input_item_t *p_input, playlist_item_t *p_parent, int i_mode, int i_pos, bool b_locked ) { playlist_item_t *p_item; assert( p_input ); assert( p_parent && p_parent->i_children != -1 ); PL_LOCK_IF( !b_locked ); p_item = playlist_ItemNewFromInput( p_playlist, p_input ); if( p_item == NULL ) goto end; AddItem( p_playlist, p_item, p_parent, i_mode, i_pos ); GoAndPreparse( p_playlist, i_mode, p_item ); end: PL_UNLOCK_IF( !b_locked ); return p_item; }
/** * Add an input item to the playlist node * * \param p_playlist the playlist to add into * \param p_input the input item to add * \param i_mode the mode used when adding * \param i_pos the position in the playlist where to add. If this is * PLAYLIST_END the item will be added at the end of the playlist * regardless of its size * \param b_playlist TRUE for playlist, FALSE for media library * \param b_locked TRUE if the playlist is locked * \return VLC_SUCCESS or VLC_ENOMEM or VLC_EGENERIC */ int playlist_AddInput( playlist_t* p_playlist, input_item_t *p_input, int i_mode, int i_pos, bool b_playlist, bool b_locked ) { playlist_item_t *p_item; /* FIXME: use b_killed instead: */ if( !vlc_object_alive(p_playlist) ) return VLC_EGENERIC; if( !pl_priv(p_playlist)->b_doing_ml ) PL_DEBUG( "adding item `%s' ( %s )", p_input->psz_name, p_input->psz_uri ); PL_LOCK_IF( !b_locked ); p_item = playlist_ItemNewFromInput( p_playlist, p_input ); if( p_item == NULL ) return VLC_ENOMEM; AddItem( p_playlist, p_item, b_playlist ? p_playlist->p_playing : p_playlist->p_media_library , i_mode, i_pos ); GoAndPreparse( p_playlist, i_mode, p_item ); PL_UNLOCK_IF( !b_locked ); return VLC_SUCCESS; }
/** * Clear the playlist * * \param p_playlist playlist object * \param b_locked TRUE if the playlist is locked * \return nothing */ void playlist_Clear( playlist_t * p_playlist, bool b_locked ) { PL_LOCK_IF( !b_locked ); playlist_NodeEmpty( p_playlist, p_playlist->p_playing, true ); PL_UNLOCK_IF( !b_locked ); }