<!DOCTYPE html><html><head><title></title><style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div><br></div><div>On Mon, Mar 4, 2019, at 12:34, Rémi Denis-Courmont wrote:<br></div><blockquote type="cite" id="fastmail-quoted"><div>Nack. This feature is the only sane way to debug SD in a clean runtime environment at the moment. Qt definitely is not.<br></div></blockquote><div><br></div><div>There is an other way to debug SD, using the libvlc media discoverer test.<br></div><div><br></div><div>You can get a list of all SD modules:<br></div><div><br></div><div>$ ./test_libvlc_media_discoverer<br></div><div>testapi: == getting list of media_discoverer for 0 category ==<br></div><div>testapi: = discoverer: name: 'v4l', longname: 'Video capture' =<br></div><div>testapi: = discoverer: name: 'disc', longname: 'Discs' =<br></div><div>testapi: = discoverer: name: 'xcb_apps', longname: 'Screen capture' =<br></div><div>testapi: = discoverer: name: 'mtp', longname: 'MTP devices' =<br></div><div>testapi: = discoverer: name: 'pulse', longname: 'Audio capture' =<br></div><div>testapi: == getting list of media_discoverer for 1 category ==<br></div><div>testapi: = discoverer: name: 'avahi', longname: 'Zeroconf network services' =<br></div><div>testapi: = discoverer: name: 'microdns', longname: 'mDNS Network Discovery' =<br></div><div>testapi: = discoverer: name: 'upnp', longname: 'Universal Plug'n'Play' =<br></div><div>testapi: = discoverer: name: 'sap', longname: 'Network streams (SAP)' =<br></div><div>testapi: == getting list of media_discoverer for 2 category ==<br></div><div>testapi: = discoverer: name: 'podcast', longname: 'Podcasts' =<br></div><div>testapi: == getting list of media_discoverer for 3 category ==<br></div><div>testapi: = discoverer: name: 'video_dir', longname: 'My Videos' =<br></div><div>testapi: = discoverer: name: 'audio_dir', longname: 'My Music' =<br></div><div>testapi: = discoverer: name: 'picture_dir', longname: 'My Pictures' =<br></div><div><br></div><div>And also run discovery modules by their names.<br></div><div><br></div><div>$ ./test_libvlc_media_discoverer microdns<br></div><div>testapi: creating and starting discoverer microdns<br></div><div>testapi: Press any keys to stop<br></div><div>testapi: item added(0): 'sftp://192.168.1.35:22'<br></div><div>testapi: item added(1): 'smb://192.168.1.115:445'<br></div><div>testapi: item added(2): 'smb://192.168.1.61:445'<br></div><div>testapi: item added(3): 'smb://192.168.1.146:445'<br></div><div>testapi: item added(4): 'smb://192.168.1.213:445'<br></div><div>testapi: item added(5): 'rtsp://169.254.224.172:554'<br></div><div><br></div><div>We could use your reasoning from the "libvlc: dump object types abd names when leaking" discussion.<br></div><div><br></div><div>> ...<br></div><div>><span dir="auto" class="message_body"> 2) This pokes into the internals 
and ossifies the implementation. And the developer most likely to have 
to fight with this upon future refactoring is me or my successor. You're
 optimising for your convenience at the expense of somebody else here.</span><br></div><div>><br></div><div><span dir="auto" class="message_body">> And in all likelihood, it takes no more code to script this within a memory debugger than this patch.</span><br></div><div><br></div><div><span dir="auto" class="message_body">(replace script with libvlc sample code that is already written in tests)</span><br></div><div><br></div><div>I think that the service discovery API should be hidden (and use vlc_media_tree/source API instead). This is the only remaining code that will use it after the big switch to player/playlist/media_source.<br></div><div><br></div><blockquote type="cite" id="fastmail-quoted"><div><br></div><div class="fastmail-quoted-gmail_quote"><div>Le 4 mars 2019 12:53:28 GMT+02:00, Romain Vimont <rom1v@videolabs.io> a écrit :<br></div><blockquote style="margin-top:0pt;margin-right:0pt;margin-bottom:0pt;margin-left:0.8ex;border-left-color:rgb(204, 204, 204);border-left-style:solid;border-left-width:1px;padding-left:1ex;" class="fastmail-quoted-gmail_quote"><pre class="fastmail-quoted-k9mail"><div>Services discovery media were displayed via the old playlist, which<br></div><div>allowed to display their tree.<br></div><div><br></div><div>The new playlist is not a tree, but a list, so it can't be used to<br></div><div>display services discovery trees. This lua API is only used from<br></div><div>cli.lua, and we consider it's not worth it to implement this feature for<br></div><div>now, so just remove it.<hr> modules/lua/extension.c |  1 -<br></div><div> modules/lua/intf.c      |  1 -<br></div><div> modules/lua/libs/sd.c   | 57 -----------------------------------------<br></div><div> share/lua/intf/cli.lua  | 23 -----------------<br></div><div> 4 files changed, 82 deletions(-)<br></div><div><br></div><div>diff --git a/modules/lua/extension.c b/modules/lua/extension.c<br></div><div>index 475bd06767..ba25d432a8 100644<br></div><div>--- a/modules/lua/extension.c<br></div><div>+++ b/modules/lua/extension.c<br></div><div>@@ -840,7 +840,6 @@ static lua_State* GetLuaState( extensions_manager_t *p_mgr,<br></div><div>         luaopen_object( L );<br></div><div>         luaopen_osd( L );<br></div><div>         luaopen_playlist( L );<br></div><div>-        luaopen_sd_intf( L );<br></div><div>         luaopen_stream( L );<br></div><div>         luaopen_strings( L );<br></div><div>         luaopen_variables( L );<br></div><div>diff --git a/modules/lua/intf.c b/modules/lua/intf.c<br></div><div>index cd906b4591..63c902bf21 100644<br></div><div>--- a/modules/lua/intf.c<br></div><div>+++ b/modules/lua/intf.c<br></div><div>@@ -274,7 +274,6 @@ static int Start_LuaIntf( vlc_object_t *p_this, const char *name )<br></div><div>     luaopen_object( L );<br></div><div>     luaopen_osd( L );<br></div><div>     luaopen_playlist( L );<br></div><div>-    luaopen_sd_intf( L );<br></div><div>     luaopen_stream( L );<br></div><div>     luaopen_strings( L );<br></div><div>     luaopen_variables( L );<br></div><div>diff --git a/modules/lua/libs/sd.c b/modules/lua/libs/sd.c<br></div><div>index a35091154d..d0dc85d6c2 100644<br></div><div>--- a/modules/lua/libs/sd.c<br></div><div>+++ b/modules/lua/libs/sd.c<br></div><div>@@ -398,60 +398,3 @@ void luaopen_sd_sd( lua_State *L )<br></div><div>     luaL_register( L, NULL, vlclua_sd_sd_reg );<br></div><div>     lua_setfield( L, -2, "sd" );<br></div><div> }<br></div><div>-<br></div><div>-<br></div><div>-/*** SD management (for user interfaces) ***/<br></div><div>-<br></div><div>-static int vlclua_sd_get_services_names( lua_State *L )<br></div><div>-{<br></div><div>-    playlist_t *p_playlist = vlclua_get_playlist_internal( L );<br></div><div>-    char **ppsz_longnames;<br></div><div>-    char **ppsz_names = vlc_sd_GetNames( p_playlist, &ppsz_longnames, NULL );<br></div><div>-    if( !ppsz_names )<br></div><div>-        return 0;<br></div><div>-<br></div><div>-    char **ppsz_longname = ppsz_longnames;<br></div><div>-    char **ppsz_name = ppsz_names;<br></div><div>-    lua_settop( L, 0 );<br></div><div>-    lua_newtable( L );<br></div><div>-    for( ; *ppsz_name; ppsz_name++,ppsz_longname++ )<br></div><div>-    {<br></div><div>-        lua_pushstring( L, *ppsz_longname );<br></div><div>-        lua_setfield( L, -2, *ppsz_name );<br></div><div>-        free( *ppsz_name );<br></div><div>-        free( *ppsz_longname );<br></div><div>-    }<br></div><div>-    free( ppsz_names );<br></div><div>-    free( ppsz_longnames );<br></div><div>-    return 1;<br></div><div>-}<br></div><div>-<br></div><div>-static int vlclua_sd_add( lua_State *L )<br></div><div>-{<br></div><div>-    const char *psz_sd = luaL_checkstring( L, 1 );<br></div><div>-    playlist_t *p_playlist = vlclua_get_playlist_internal( L );<br></div><div>-    int i_ret = playlist_ServicesDiscoveryAdd( p_playlist, psz_sd );<br></div><div>-    return vlclua_push_ret( L, i_ret );<br></div><div>-}<br></div><div>-<br></div><div>-static int vlclua_sd_remove( lua_State *L )<br></div><div>-{<br></div><div>-    const char *psz_sd = luaL_checkstring( L, 1 );<br></div><div>-    playlist_t *p_playlist = vlclua_get_playlist_internal( L );<br></div><div>-    int i_ret = playlist_ServicesDiscoveryRemove( p_playlist, psz_sd );<br></div><div>-    return vlclua_push_ret( L, i_ret );<br></div><div>-}<br></div><div>-<br></div><div>-static const luaL_Reg vlclua_sd_intf_reg[] = {<br></div><div>-    { "get_services_names", vlclua_sd_get_services_names },<br></div><div>-    { "add", vlclua_sd_add },<br></div><div>-    { "remove", vlclua_sd_remove },<br></div><div>-    { NULL, NULL }<br></div><div>-};<br></div><div>-<br></div><div>-void luaopen_sd_intf( lua_State *L )<br></div><div>-{<br></div><div>-    lua_newtable( L );<br></div><div>-    luaL_register( L, NULL, vlclua_sd_intf_reg );<br></div><div>-    lua_setfield( L, -2, "sd" );<br></div><div>-}<br></div><div>diff --git a/share/lua/intf/cli.lua b/share/lua/intf/cli.lua<br></div><div>index 58501d10d5..02c6967abb 100644<br></div><div>--- a/share/lua/intf/cli.lua<br></div><div>+++ b/share/lua/intf/cli.lua<br></div><div>@@ -250,26 +250,6 @@ function playlist_sort(name,client,arg)<br></div><div>     end<br></div><div> end<br></div><div> <br></div><div>-function sd_add(name,client,arg)<br></div><div>-    vlc.sd.add(arg)<br></div><div>-    client:append(arg.." enabled.")<br></div><div>-end<br></div><div>-<br></div><div>-function sd_remove(name,client,arg)<br></div><div>-    vlc.sd.remove(arg)<br></div><div>-    client:append(arg.." disabled.")<br></div><div>-end<br></div><div>-<br></div><div>-function services_discovery(name,client,arg)<br></div><div>-    local sd = vlc.sd.get_services_names()<br></div><div>-    client:append("+----[ Services discovery ]")<br></div><div>-    for n,ln in pairs(sd) do<br></div><div>-        client:append("| "..n..": " .. ln)<br></div><div>-    end<br></div><div>-    client:append("+----[ End of services discovery ]")<br></div><div>-    client:append("Enabled services discovery sources appear in the playlist.")<br></div><div>-end<br></div><div>-<br></div><div> function load_vlm(name, client, value)<br></div><div>     if vlm == nil then<br></div><div>         vlm = vlc.vlm()<br></div><div>@@ -585,9 +565,6 @@ commands_ordered = {<br></div><div>     { "delete"; { func = skip2(vlc.playlist.delete); args = "[X]"; help = "delete item X in playlist" } };<br></div><div>     { "move"; { func = move; args = "[X][Y]"; help = "move item X in playlist after Y" } };<br></div><div>     { "sort"; { func = playlist_sort; args = "key"; help = "sort the playlist" } };<br></div><div>-    { "sd"; { func = services_discovery; args = "[sd]"; help = "show services discovery or toggle" } };<br></div><div>-    { "sd_add"; { func = sd_add; args = "sd"; help = "add services discovery" } };<br></div><div>-    { "sd_remove"; { func = sd_remove; args = "sd"; help = "remove services discovery" } };<br></div><div>     { "play"; { func = skip2(vlc.playlist.play); help = "play stream" } };<br></div><div>     { "stop"; { func = skip2(vlc.playlist.stop); help = "stop stream" } };<br></div><div>     { "next"; { func = skip2(vlc.playlist.next); help = "next playlist item" } };<br></div></pre></blockquote></div><div><br></div><div>-- <br></div><div>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté. <br></div><div>_______________________________________________<br></div><div>vlc-devel mailing list<br></div><div>To unsubscribe or modify your subscription options:<br></div><div>https://mailman.videolan.org/listinfo/vlc-devel<br></div></blockquote><div><br></div></body></html>