[vlc-commits] core: playlist: expose a main playlist instance
Romain Vimont
git at videolan.org
Thu Nov 15 17:29:16 CET 2018
vlc | branch: master | Romain Vimont <rom1v at videolabs.io> | Thu Sep 27 11:07:03 2018 +0200| [2477b6a47989804335520856a40b03be7814551a] | committer: Thomas Guillem
core: playlist: expose a main playlist instance
Store a main instance of the playlist in libvlc, accessible via
vlc_intf_GetMainPlaylist().
Signed-off-by: Thomas Guillem <thomas at gllm.fr>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2477b6a47989804335520856a40b03be7814551a
---
include/vlc_interface.h | 4 ++++
src/interface/interface.c | 6 ++++++
src/libvlc.c | 9 +++++++++
src/libvlc.h | 2 ++
src/libvlccore.sym | 1 +
5 files changed, 22 insertions(+)
diff --git a/include/vlc_interface.h b/include/vlc_interface.h
index f56eae598b..c18d32b2e7 100644
--- a/include/vlc_interface.h
+++ b/include/vlc_interface.h
@@ -30,6 +30,7 @@
extern "C" {
# endif
+typedef struct vlc_playlist vlc_playlist_t;
typedef struct intf_dialog_args_t intf_dialog_args_t;
/**
@@ -96,6 +97,9 @@ static inline playlist_t *pl_Get( struct intf_thread_t *intf )
return (playlist_t *)(intf->obj.parent);
}
+VLC_API vlc_playlist_t *
+vlc_intf_GetMainPlaylist(intf_thread_t *intf);
+
/**
* Retrieves the current input thread from the playlist.
* @note The returned object must be released with vlc_object_release().
diff --git a/src/interface/interface.c b/src/interface/interface.c
index 510516d5c4..0f47e06fd8 100644
--- a/src/interface/interface.c
+++ b/src/interface/interface.c
@@ -146,6 +146,12 @@ static playlist_t *intf_GetPlaylist(libvlc_int_t *libvlc)
return playlist;
}
+vlc_playlist_t *
+vlc_intf_GetMainPlaylist(intf_thread_t *intf)
+{
+ return libvlc_priv(intf->obj.libvlc)->main_playlist;
+}
+
/**
* Inserts an item in the playlist.
*
diff --git a/src/libvlc.c b/src/libvlc.c
index 6e4090efb0..7516c43b74 100644
--- a/src/libvlc.c
+++ b/src/libvlc.c
@@ -52,6 +52,7 @@
#include "config/vlc_getopt.h"
#include <vlc_playlist_legacy.h>
+#include <vlc_playlist.h>
#include <vlc_interface.h>
#include <vlc_actions.h>
@@ -94,6 +95,7 @@ libvlc_int_t * libvlc_InternalCreate( void )
priv = libvlc_priv (p_libvlc);
priv->playlist = NULL;
+ priv->main_playlist = NULL;
priv->p_vlm = NULL;
vlc_ExitInit( &priv->exit );
@@ -281,6 +283,10 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
}
#endif
+ priv->main_playlist = vlc_playlist_New(VLC_OBJECT(p_libvlc));
+ if (unlikely(!priv->main_playlist))
+ goto error;
+
/*
* Load background interfaces
*/
@@ -408,6 +414,9 @@ void libvlc_InternalCleanup( libvlc_int_t *p_libvlc )
if (priv->parser != NULL)
input_preparser_Delete(priv->parser);
+ if (priv->main_playlist)
+ vlc_playlist_Delete(priv->main_playlist);
+
libvlc_InternalActionsClean( p_libvlc );
/* Save the configuration */
diff --git a/src/libvlc.h b/src/libvlc.h
index 6b585807e4..c8bd7394e3 100644
--- a/src/libvlc.h
+++ b/src/libvlc.h
@@ -183,6 +183,7 @@ void vlc_objres_remove(vlc_object_t *obj, void *data,
typedef struct vlc_dialog_provider vlc_dialog_provider;
typedef struct vlc_keystore vlc_keystore;
typedef struct vlc_actions_t vlc_actions_t;
+typedef struct vlc_playlist vlc_playlist_t;
typedef struct libvlc_priv_t
{
@@ -194,6 +195,7 @@ typedef struct libvlc_priv_t
vlc_dialog_provider *p_dialog_provider; ///< dialog provider
vlc_keystore *p_memory_keystore; ///< memory keystore
struct playlist_t *playlist; ///< Playlist for interfaces
+ vlc_playlist_t *main_playlist;
struct input_preparser_t *parser; ///< Input item meta data handler
vlc_actions_t *actions; ///< Hotkeys handler
struct vlc_medialibrary_t *p_media_library; ///< Media library instance
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 1891e927be..a8f71c2a13 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -943,3 +943,4 @@ vlc_playlist_Stop
vlc_playlist_Pause
vlc_playlist_Resume
vlc_playlist_Preparse
+vlc_intf_GetMainPlaylist
More information about the vlc-commits
mailing list