Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (10)
......@@ -273,7 +273,6 @@ int ScanLuaCallback( vlc_object_t *p_this, const char *psz_filename,
{
VLC_UNUSED(dummy);
extensions_manager_t *p_mgr = ( extensions_manager_t* ) p_this;
bool b_ok = false;
msg_Dbg( p_mgr, "Scanning Lua script %s", psz_filename );
......@@ -339,7 +338,7 @@ int ScanLuaCallback( vlc_object_t *p_this, const char *psz_filename,
msg_Warn( p_mgr, "Error loading script %s: %s", psz_script,
lua_tostring( L, lua_gettop( L ) ) );
lua_pop( L, 1 );
goto exit;
goto discard;
}
/* Scan script for capabilities */
......@@ -349,7 +348,7 @@ int ScanLuaCallback( vlc_object_t *p_this, const char *psz_filename,
{
msg_Warn( p_mgr, "Error while running script %s, "
"function descriptor() not found", psz_script );
goto exit;
goto discard;
}
if( lua_pcall( L, 0, 1, 0 ) )
......@@ -357,125 +356,117 @@ int ScanLuaCallback( vlc_object_t *p_this, const char *psz_filename,
msg_Warn( p_mgr, "Error while running script %s, "
"function descriptor(): %s", psz_script,
lua_tostring( L, lua_gettop( L ) ) );
goto exit;
goto discard;
}
if( lua_gettop( L ) )
if (lua_gettop(L) == 0)
{
if( lua_istable( L, -1 ) )
msg_Err(p_mgr, "Script %s went completely foobar", psz_script);
goto discard;
}
if (!lua_istable(L, -1))
{
msg_Warn(p_mgr, "In script %s, function descriptor() "
"did not return a table!", psz_script);
goto discard;
}
/* Get caps */
lua_getfield(L, -1, "capabilities");
if (lua_istable(L, -1))
{
lua_pushnil(L);
while (lua_next(L, -2) != 0)
{
/* Get caps */
lua_getfield( L, -1, "capabilities" );
if( lua_istable( L, -1 ) )
/* Key is at index -2 and value at index -1. Discard key */
const char *psz_cap = luaL_checkstring(L, -1);
bool found = false;
/* Find this capability's flag */
for (size_t i = 0; i < ARRAY_SIZE(caps); i++)
{
lua_pushnil( L );
while( lua_next( L, -2 ) != 0 )
if (!strcmp(caps[i], psz_cap))
{
/* Key is at index -2 and value at index -1. Discard key */
const char *psz_cap = luaL_checkstring( L, -1 );
bool found = false;
/* Find this capability's flag */
for( size_t i = 0; i < ARRAY_SIZE(caps); i++ )
{
if( !strcmp( caps[i], psz_cap ) )
{
/* Flag it! */
sys->i_capabilities |= 1 << i;
found = true;
break;
}
}
if( !found )
{
msg_Warn( p_mgr, "Extension capability '%s' unknown in"
" script %s", psz_cap, psz_script );
}
/* Removes 'value'; keeps 'key' for next iteration */
lua_pop( L, 1 );
/* Flag it! */
sys->i_capabilities |= 1 << i;
found = true;
break;
}
}
else
{
msg_Warn( p_mgr, "In script %s, function descriptor() "
"did not return a table of capabilities.",
psz_script );
}
lua_pop( L, 1 );
/* Get title */
lua_getfield( L, -1, "title" );
if( lua_isstring( L, -1 ) )
if (!found)
{
p_ext->psz_title = strdup( luaL_checkstring( L, -1 ) );
msg_Warn(p_mgr, "Extension capability '%s' unknown in"
" script %s", psz_cap, psz_script);
}
else
{
msg_Dbg( p_mgr, "In script %s, function descriptor() "
"did not return a string as title.",
psz_script );
p_ext->psz_title = strdup( psz_script );
}
lua_pop( L, 1 );
/* Get the fields from the extension manifest. */
p_ext->psz_author = GetStringFieldOrNull(L, "author");
p_ext->psz_description = GetStringFieldOrNull(L, "description");
p_ext->psz_shortdescription = GetStringFieldOrNull(L, "shortdesc");
p_ext->psz_url = GetStringFieldOrNull(L, "url");
p_ext->psz_version = GetStringFieldOrNull(L, "version");
/* Get icon data */
lua_getfield( L, -1, "icon" );
if( !lua_isnil( L, -1 ) && lua_isstring( L, -1 ) )
{
int len = lua_strlen( L, -1 );
p_ext->p_icondata = malloc( len );
if( p_ext->p_icondata )
{
p_ext->i_icondata_size = len;
memcpy( p_ext->p_icondata, lua_tostring( L, -1 ), len );
}
}
lua_pop( L, 1 );
}
else
{
msg_Warn( p_mgr, "In script %s, function descriptor() "
"did not return a table!", psz_script );
goto exit;
/* Removes 'value'; keeps 'key' for next iteration */
lua_pop(L, 1);
}
}
else
{
msg_Err( p_mgr, "Script %s went completely foobar", psz_script );
goto exit;
msg_Warn(p_mgr, "In script %s, function descriptor() "
"did not return a table of capabilities.",
psz_script);
}
lua_pop(L, 1);
msg_Dbg(p_mgr, "Script %s has the following capability flags: 0x%x",
psz_script, sys->i_capabilities);
b_ok = true;
exit:
lua_close( L );
if( !b_ok )
/* Get title */
lua_getfield(L, -1, "title");
if (lua_isstring(L, -1))
{
free( p_ext->psz_name );
free( p_ext->psz_title );
free( p_ext->psz_url );
free( p_ext->psz_author );
free( p_ext->psz_description );
free( p_ext->psz_shortdescription );
free( p_ext->psz_version );
free(sys);
free( p_ext );
p_ext->psz_title = strdup(luaL_checkstring(L, -1));
}
else
{
/* Add the extension to the list of known extensions */
ARRAY_APPEND( p_mgr->extensions, p_ext );
msg_Dbg(p_mgr,"In script %s, function descriptor() "
"did not return a string as title.",
psz_script);
p_ext->psz_title = strdup(psz_script);
}
lua_pop(L, 1);
/* Get the fields from the extension manifest. */
p_ext->psz_author = GetStringFieldOrNull(L, "author");
p_ext->psz_description = GetStringFieldOrNull(L, "description");
p_ext->psz_shortdescription = GetStringFieldOrNull(L, "shortdesc");
p_ext->psz_url = GetStringFieldOrNull(L, "url");
p_ext->psz_version = GetStringFieldOrNull(L, "version");
/* Get icon data */
lua_getfield(L, -1, "icon");
if (!lua_isnil(L, -1) && lua_isstring(L, -1))
{
int len = lua_strlen(L, -1);
p_ext->p_icondata = malloc(len);
if (p_ext->p_icondata)
{
p_ext->i_icondata_size = len;
memcpy(p_ext->p_icondata, lua_tostring(L, -1), len);
}
}
lua_pop(L, 1);
msg_Dbg(p_mgr, "Script %s has the following capability flags: 0x%x",
psz_script, sys->i_capabilities);
lua_close( L );
/* Add the extension to the list of known extensions */
ARRAY_APPEND(p_mgr->extensions, p_ext);
/* Continue batch execution */
return VLC_EGENERIC;
discard:
lua_close(L);
free(p_ext->psz_name);
free(p_ext->psz_title);
free(p_ext->psz_url);
free(p_ext->psz_author);
free(p_ext->psz_description);
free(p_ext->psz_shortdescription);
free(p_ext->psz_version);
free(p_ext);
free(sys);
return VLC_EGENERIC;
}
static int Control(extensions_manager_t *p_mgr, int i_control,
......@@ -672,46 +663,42 @@ static int GetMenuEntries( extensions_manager_t *p_mgr, extension_t *p_ext,
goto exit;
}
if( lua_gettop( L ) )
if (lua_gettop(L) == 0)
{
if( lua_istable( L, -1 ) )
{
/* Get table size */
size_t i_size = lua_objlen( L, -1 );
*pppsz_titles = ( char** ) calloc( i_size+1, sizeof( char* ) );
*ppi_ids = ( uint16_t* ) calloc( i_size+1, sizeof( uint16_t ) );
/* Walk table */
size_t i_idx = 0;
lua_pushnil( L );
while( lua_next( L, -2 ) != 0 )
{
assert( i_idx < i_size );
if( (!lua_isstring( L, -1 )) || (!lua_isnumber( L, -2 )) )
{
msg_Warn( p_mgr, "In script %s, an entry in "
"the menu table is invalid!", p_ext->psz_name );
goto exit;
}
(*pppsz_titles)[ i_idx ] = strdup( luaL_checkstring( L, -1 ) );
(*ppi_ids)[ i_idx ] = luaL_checkinteger( L, -2 ) & 0xFFFF;
i_idx++;
lua_pop( L, 1 );
}
}
else
{
msg_Warn( p_mgr, "Function menu() in script %s "
"did not return a table", p_ext->psz_name );
goto exit;
}
msg_Warn(p_mgr, "Script %s went completely foobar", p_ext->psz_name);
goto exit;
}
else
if (!lua_istable(L, -1))
{
msg_Warn( p_mgr, "Script %s went completely foobar", p_ext->psz_name );
msg_Warn(p_mgr, "Function menu() in script %s "
"did not return a table", p_ext->psz_name);
goto exit;
}
/* Get table size */
size_t i_size = lua_objlen( L, -1 );
*pppsz_titles = calloc(i_size+1, sizeof(char*));
*ppi_ids = calloc(i_size+1, sizeof(uint16_t));
/* Walk table */
size_t i_idx = 0;
lua_pushnil(L);
while (lua_next(L, -2) != 0)
{
assert(i_idx < i_size);
if(!lua_isstring(L, -1) || !lua_isnumber(L, -2))
{
msg_Warn(p_mgr, "In script %s, an entry in "
"the menu table is invalid!", p_ext->psz_name);
goto exit;
}
(*pppsz_titles)[i_idx] = strdup(luaL_checkstring(L, -1));
(*ppi_ids)[i_idx] = luaL_checkinteger(L, -2) & 0xFFFF;
i_idx++;
lua_pop(L, 1);
}
i_ret = VLC_SUCCESS;
exit:
......@@ -730,90 +717,89 @@ static lua_State* GetLuaState( extensions_manager_t *p_mgr,
{
assert( p_ext != NULL );
struct lua_extension *sys = p_ext->p_sys;
lua_State *L = sys->L;
if( !L )
if (sys->L != NULL)
return sys->L;
lua_State *L = luaL_newstate();
if (L == NULL)
{
L = luaL_newstate();
if( !L )
{
msg_Err( p_mgr, "Could not create new Lua State" );
return NULL;
}
vlclua_set_this( L, p_mgr );
intf_thread_t *intf = (intf_thread_t *) vlc_object_parent(p_mgr);
vlc_playlist_t *playlist = vlc_intf_GetMainPlaylist(intf);
vlclua_set_playlist_internal(L, playlist);
vlclua_extension_set( L, p_ext );
luaL_openlibs( L );
luaL_register_namespace( L, "vlc", p_reg );
luaopen_msg( L );
/* Load more libraries */
luaopen_config( L );
luaopen_dialog( L, p_ext );
luaopen_input( L );
luaopen_msg( L );
if (vlclua_fd_init(L, &sys->dtable))
{
lua_close( L );
return NULL;
}
luaopen_object( L );
luaopen_osd( L );
luaopen_playlist( L );
luaopen_stream( L );
luaopen_strings( L );
luaopen_variables( L );
luaopen_video( L );
luaopen_vlm( L );
luaopen_volume( L );
luaopen_xml( L );
luaopen_vlcio( L );
luaopen_errno( L );
luaopen_rand( L );
luaopen_rd( L );
luaopen_ml( L );
msg_Err(p_mgr, "Could not create new Lua State");
return NULL;
}
vlclua_set_this(L, p_mgr);
intf_thread_t *intf = (intf_thread_t *)vlc_object_parent(p_mgr);
vlc_playlist_t *playlist = vlc_intf_GetMainPlaylist(intf);
vlclua_set_playlist_internal(L, playlist);
vlclua_extension_set(L, p_ext);
luaL_openlibs(L);
luaL_register_namespace(L, "vlc", p_reg);
luaopen_msg(L);
/* Load more libraries */
luaopen_config(L);
luaopen_dialog(L, p_ext);
luaopen_input(L);
luaopen_msg(L);
if (vlclua_fd_init(L, &sys->dtable))
{
lua_close(L);
return NULL;
}
luaopen_object(L);
luaopen_osd(L);
luaopen_playlist(L);
luaopen_stream(L);
luaopen_strings(L);
luaopen_variables(L);
luaopen_video(L);
luaopen_vlm(L);
luaopen_volume(L);
luaopen_xml(L);
luaopen_vlcio(L);
luaopen_errno(L);
luaopen_rand(L);
luaopen_rd(L);
luaopen_ml(L);
#if defined(_WIN32) && !defined(VLC_WINSTORE_APP)
luaopen_win( L );
luaopen_win(L);
#endif
/* Register extension specific functions */
lua_getglobal( L, "vlc" );
lua_pushcfunction( L, vlclua_extension_deactivate );
lua_setfield( L, -2, "deactivate" );
lua_pushcfunction( L, vlclua_extension_keep_alive );
lua_setfield( L, -2, "keep_alive" );
/* Setup the module search path */
if( !strncmp( p_ext->psz_name, "zip://", 6 ) )
{
/* Load all required modules manually */
lua_register( L, "require", &vlclua_extension_require );
}
else if (vlclua_add_modules_path(L, p_ext->psz_name))
{
msg_Warn(p_mgr, "Error while setting the module "
"search path for %s", p_ext->psz_name);
vlclua_fd_cleanup(&sys->dtable);
lua_close(L);
return NULL;
}
/* Register extension specific functions */
lua_getglobal(L, "vlc");
lua_pushcfunction(L, vlclua_extension_deactivate);
lua_setfield(L, -2, "deactivate");
lua_pushcfunction(L, vlclua_extension_keep_alive);
lua_setfield(L, -2, "keep_alive");
/* Load and run the script(s) */
if( vlclua_dofile( VLC_OBJECT( p_mgr ), L, p_ext->psz_name ) )
{
msg_Warn( p_mgr, "Error loading script %s: %s", p_ext->psz_name,
lua_tostring( L, lua_gettop( L ) ) );
vlclua_fd_cleanup(&sys->dtable);
lua_close( L );
return NULL;
}
/* Setup the module search path */
if (!strncmp(p_ext->psz_name, "zip://", 6))
{
/* Load all required modules manually */
lua_register(L, "require", &vlclua_extension_require);
}
else if (vlclua_add_modules_path(L, p_ext->psz_name))
{
msg_Warn(p_mgr, "Error while setting the module "
"search path for %s", p_ext->psz_name);
vlclua_fd_cleanup(&sys->dtable);
lua_close(L);
return NULL;
}
sys->L = L;
/* Load and run the script(s) */
if (vlclua_dofile(VLC_OBJECT(p_mgr), L, p_ext->psz_name))
{
msg_Warn(p_mgr, "Error loading script %s: %s", p_ext->psz_name,
lua_tostring(L, lua_gettop(L)));
vlclua_fd_cleanup(&sys->dtable);
lua_close(L);
return NULL;
}
sys->L = L;
return L;
}
......