From: RĂ©mi Denis-Courmont Date: Sat, 19 Dec 2009 23:27:59 +0000 (+0200) Subject: vlc_sd_GetNames: use probe X-Git-Tag: 1.1.0-ff~1819 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=1cfe42c98fe6b715632a447957a733b5f6d0c36f;p=vlc vlc_sd_GetNames: use probe --- diff --git a/src/playlist/services_discovery.c b/src/playlist/services_discovery.c index 53a314be44..35547c87bd 100644 --- a/src/playlist/services_discovery.c +++ b/src/playlist/services_discovery.c @@ -29,9 +29,49 @@ #include "vlc_playlist.h" #include "vlc_events.h" #include +#include #include "playlist_internal.h" #include "../libvlc.h" +#undef vlc_sd_GetNames + +typedef struct +{ + char *name; + char *longname; +} vlc_sd_probe_t; + +/** + * Gets the list of available services discovery plugins. + */ +char **vlc_sd_GetNames (vlc_object_t *obj, char ***pppsz_longnames) +{ + size_t count; + vlc_sd_probe_t *tab = vlc_probe (obj, "services probe", &count); + + if (count == 0) + { + free (tab); + return NULL; + } + + char **names = malloc (sizeof(char *) * (count + 1)); + char **longnames = malloc (sizeof(char *) * (count + 1)); + + if (unlikely (names == NULL || longnames == NULL)) + abort(); + for( size_t i = 0; i < count; i++ ) + { + names[i] = tab[i].name; + longnames[i] = tab[i].longname; + } + free (tab); + names[count] = longnames[count] = NULL; + *pppsz_longnames = longnames; + return names; +} + + struct vlc_sd_internal_t { /* the playlist items for category and onelevel */ @@ -50,17 +90,6 @@ static void services_discovery_Destructor ( vlc_object_t *p_obj ); * That's how the playlist get's Service Discovery information */ -#undef vlc_sd_GetNames - -/** - * Gets the list of available services discovery plugins. - */ -char **vlc_sd_GetNames( vlc_object_t *obj, char ***pppsz_longnames ) -{ - return module_GetModulesNamesForCapability( "services_discovery", - pppsz_longnames ); -} - /*********************************************************************** * Create ***********************************************************************/