X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_playlist.h;h=daf234b4c690841c0c45dd33e82e909f013fc121;hb=8b6e26a823cc53624ecfbadd76db7847bb6fda57;hp=2490a136e2d50442773e55bdfcd80d365d1c444f;hpb=d90d8b7da24381831dcf067618836e4cb4a5bb05;p=vlc diff --git a/include/vlc_playlist.h b/include/vlc_playlist.h index 2490a136e2..daf234b4c6 100644 --- a/include/vlc_playlist.h +++ b/include/vlc_playlist.h @@ -260,6 +260,12 @@ struct playlist_add_t #define PLAYLIST_END -666 +enum pl_locked_state +{ + pl_Locked = true, + pl_Unlocked = false +}; + /***************************************************************************** * Prototypes *****************************************************************************/ @@ -340,7 +346,7 @@ VLC_EXPORT( int, playlist_Export, ( playlist_t *p_playlist, const char *psz_nam /*************************** Item creation **************************/ -VLC_EXPORT( playlist_item_t* , playlist_ItemNewWithType, ( vlc_object_t *,const char *,const char *, int , const char *const *, int, int) ); +VLC_EXPORT( playlist_item_t* , playlist_ItemNewWithType, ( playlist_t *,const char *,const char *, int , const char *const *, int, int) ); /** Create a new item, without adding it to the playlist * \param p_obj a vlc object (anyone will do) @@ -351,8 +357,6 @@ VLC_EXPORT( playlist_item_t* , playlist_ItemNewWithType, ( vlc_object_t *,const #define playlist_ItemNew( a , b, c ) \ playlist_ItemNewWithType( VLC_OBJECT(a) , b , c, 0, NULL, -1, 0 ) -#define playlist_ItemNewFromInput(a,b) __playlist_ItemNewFromInput(VLC_OBJECT(a),b) -VLC_EXPORT( playlist_item_t *, __playlist_ItemNewFromInput, ( vlc_object_t *p_obj,input_item_t *p_input ) ); /*************************** Item deletion **************************/ VLC_EXPORT( int, playlist_DeleteFromInput, ( playlist_t *, int, bool ) ); @@ -415,9 +419,23 @@ static inline int playlist_Import( playlist_t *p_playlist, const char *psz_file) return VLC_SUCCESS; } +/** Small helper tp get current playing input or NULL. Release the input after use. */ +#define pl_CurrentInput(a) __pl_CurrentInput( VLC_OBJECT(a) ) +static inline input_thread_t * __pl_CurrentInput( vlc_object_t * p_this ) +{ + playlist_t * p_playlist = pl_Yield( p_this ); + if( !p_playlist ) return NULL; + input_thread_t * p_input = playlist_CurrentInput( p_playlist ); + pl_Release( p_this ); + return p_input; +} /** Tell if the playlist is currently running */ -#define playlist_IsPlaying( pl ) ( pl->status.i_status == PLAYLIST_RUNNING ) +#define playlist_IsPlaying( pl ) ( pl->status.i_status == PLAYLIST_RUNNING && \ + !(pl->request.b_request && pl->request.i_status == PLAYLIST_STOPPED) ) + +#define playlist_IsStopped( pl ) ( pl->status.i_status == PLAYLIST_STOPPED || \ + (pl->request.b_request && pl->request.i_status == PLAYLIST_STOPPED) ) /** Tell if the playlist is empty */ #define playlist_IsEmpty( pl ) ( pl->items.i_size == 0 )