#include "../vlc.h"
#include "../libs.h"
+#include "input.h"
#include "playlist.h"
#include "variables.h"
return i_ret;
}
-static int vlclua_playlist_goto( lua_State * L )
+static int vlclua_playlist_gotoitem( lua_State * L )
{
int i_id = luaL_checkint( L, 1 );
playlist_t *p_playlist = vlclua_get_playlist_internal( L );
int i_id = luaL_checkint( L, 1 );
playlist_t *p_playlist = vlclua_get_playlist_internal( L );
PL_LOCK;
- int i_ret = playlist_DeleteFromInput(p_playlist, playlist_ItemGetById( p_playlist, i_id ) -> p_input, true );
+ playlist_item_t *p_item = playlist_ItemGetById( p_playlist, i_id );
+ if( !p_item )
+ {
+ PL_UNLOCK;
+ return vlclua_push_ret( L, -1 );
+ }
+ int i_ret = playlist_DeleteFromInput( p_playlist, p_item -> p_input, true );
+ PL_UNLOCK;
+ return vlclua_push_ret( L, i_ret );
+}
+
+static int vlclua_playlist_move( lua_State * L )
+{
+ int i_item = luaL_checkint( L, 1 );
+ int i_target = luaL_checkint( L, 2 );
+ playlist_t *p_playlist = vlclua_get_playlist_internal( L );
+ PL_LOCK;
+ playlist_item_t *p_item = playlist_ItemGetById( p_playlist, i_item );
+ playlist_item_t *p_target = playlist_ItemGetById( p_playlist, i_target );
+ if( !p_item || !p_target )
+ {
+ PL_UNLOCK;
+ return vlclua_push_ret( L, -1 );
+ }
+ int i_ret;
+ if( p_target->i_children != -1 )
+ i_ret = playlist_TreeMove( p_playlist, p_item, p_target, 0 );
+ else
+ i_ret = playlist_TreeMove( p_playlist, p_item, p_target->p_parent, p_target->i_id - p_target->p_parent->pp_children[0]->i_id + 1 );
PL_UNLOCK;
return vlclua_push_ret( L, i_ret );
}
lua_setfield( L, -2, "duration" );
lua_pushinteger( L, p_input->i_nb_played );
lua_setfield( L, -2, "nb_played" );
+ luaopen_input_item( L, p_input );
/* TODO: add (optional) info categories, meta, options, es */
}
if( p_item->i_children >= 0 )
{ "repeat_", vlclua_playlist_repeat }, // ... provide repeat_ too.
{ "loop", vlclua_playlist_loop },
{ "random", vlclua_playlist_random },
- { "goto", vlclua_playlist_goto },
+ { "goto", vlclua_playlist_gotoitem },
+ { "gotoitem", vlclua_playlist_gotoitem },
{ "add", vlclua_playlist_add },
{ "enqueue", vlclua_playlist_enqueue },
{ "get", vlclua_playlist_get },
{ "sort", vlclua_playlist_sort },
{ "status", vlclua_playlist_status },
{ "delete", vlclua_playlist_delete },
+ { "move", vlclua_playlist_move },
{ NULL, NULL }
};