#define PAS_LONGTEXT N_( \
"Stop the playlist after each played playlist item." )
+#define PAE_TEXT N_("Play and exit")
+#define PAE_LONGTEXT N_( \
+ "Exit if there are no more items in the playlist." )
+
#define ML_TEXT N_("Use media library")
#define ML_LONGTEXT N_( \
"The media library is automatically saved and reloaded each time you " \
change_short('L');
add_bool( "repeat", 0, NULL, REPEAT_TEXT, REPEAT_LONGTEXT, VLC_FALSE );
change_short('R');
+ add_bool( "play-and-exit", 0, NULL, PAE_TEXT, PAE_LONGTEXT, VLC_FALSE );
add_bool( "play-and-stop", 0, NULL, PAS_TEXT, PAS_LONGTEXT, VLC_FALSE );
add_bool( "media-library", 1, NULL, ML_TEXT, ML_LONGTEXT, VLC_FALSE );
add_integer( "playlist-tree", 0, NULL, PLTREE_TEXT, PLTREE_LONGTEXT,
var_Destroy( p_playlist, "intf-popmenu" );
var_Destroy( p_playlist, "intf-show" );
var_Destroy( p_playlist, "play-and-stop" );
+ var_Destroy( p_playlist, "play-and-exit" );
var_Destroy( p_playlist, "random" );
var_Destroy( p_playlist, "repeat" );
var_Destroy( p_playlist, "loop" );
void playlist_MainLoop( playlist_t *p_playlist )
{
playlist_item_t *p_item = NULL;
-
-
+ vlc_bool_t b_playexit = var_GetBool( p_playlist, "play-and-exit" );
PL_LOCK
/* First, check if we have something to do */
if( p_item == NULL )
{
msg_Dbg( p_playlist, "nothing to play" );
+ if( b_playexit == VLC_TRUE )
+ {
+ msg_Info( p_playlist, "end of playlist, exiting" );
+ p_playlist->p_vlc->b_die = VLC_TRUE;
+ }
p_playlist->status.i_status = PLAYLIST_STOPPED;
PL_UNLOCK
return;
/* Variables to control playback */
var_CreateGetBool( p_playlist, "play-and-stop" );
+ var_CreateGetBool( p_playlist, "play-and-exit" );
var_CreateGetBool( p_playlist, "random" );
var_CreateGetBool( p_playlist, "repeat" );
var_CreateGetBool( p_playlist, "loop" );