Commit bfdc79f1 authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

control/media_list.c: Replace set_name/name by...

control/media_list.c: Replace set_name/name by set_media_descriptor/media_descriptor. This is the md from which the media_list is a subitem, if any.
parent 6dd0250f
...@@ -453,12 +453,12 @@ VLC_PUBLIC_API void ...@@ -453,12 +453,12 @@ VLC_PUBLIC_API void
libvlc_exception_t * p_e ); libvlc_exception_t * p_e );
VLC_PUBLIC_API void VLC_PUBLIC_API void
libvlc_media_list_set_name( libvlc_media_list_t *, libvlc_media_list_set_media_descriptor( libvlc_media_list_t *,
const char * psz_name, libvlc_media_descriptor_t *,
libvlc_exception_t *); libvlc_exception_t *);
VLC_PUBLIC_API char * VLC_PUBLIC_API libvlc_media_descriptor_t *
libvlc_media_list_name( libvlc_media_list_t *, libvlc_media_list_media_descriptor( libvlc_media_list_t *,
libvlc_exception_t *); libvlc_exception_t *);
VLC_PUBLIC_API void VLC_PUBLIC_API void
......
...@@ -104,7 +104,8 @@ struct libvlc_media_list_t ...@@ -104,7 +104,8 @@ struct libvlc_media_list_t
libvlc_instance_t * p_libvlc_instance; libvlc_instance_t * p_libvlc_instance;
int i_refcount; int i_refcount;
vlc_mutex_t object_lock; vlc_mutex_t object_lock;
char * psz_name; /* Usually NULL */ libvlc_media_descriptor_t * p_md; /* The media_descriptor from which the
* mlist comes, if any. */
DECL_ARRAY(void *) items; DECL_ARRAY(void *) items;
/* Other way to see that media list */ /* Other way to see that media list */
......
...@@ -116,7 +116,7 @@ libvlc_media_list_new( libvlc_instance_t * p_inst, ...@@ -116,7 +116,7 @@ libvlc_media_list_new( libvlc_instance_t * p_inst,
ARRAY_INIT(p_mlist->items); ARRAY_INIT(p_mlist->items);
p_mlist->i_refcount = 1; p_mlist->i_refcount = 1;
p_mlist->psz_name = NULL; p_mlist->p_md = NULL;
return p_mlist; return p_mlist;
} }
...@@ -146,6 +146,9 @@ void libvlc_media_list_release( libvlc_media_list_t * p_mlist ) ...@@ -146,6 +146,9 @@ void libvlc_media_list_release( libvlc_media_list_t * p_mlist )
libvlc_event_manager_release( p_mlist->p_event_manager ); libvlc_event_manager_release( p_mlist->p_event_manager );
if( p_mlist->p_md )
libvlc_media_descriptor_release( p_mlist->p_md );
FOREACH_ARRAY( p_md, p_mlist->items ) FOREACH_ARRAY( p_md, p_mlist->items )
libvlc_media_descriptor_release( p_md ); libvlc_media_descriptor_release( p_md );
FOREACH_END() FOREACH_END()
...@@ -206,34 +209,45 @@ libvlc_media_list_add_file_content( libvlc_media_list_t * p_mlist, ...@@ -206,34 +209,45 @@ libvlc_media_list_add_file_content( libvlc_media_list_t * p_mlist,
} }
/************************************************************************** /**************************************************************************
* set_name (Public) * set_media_descriptor (Public)
**************************************************************************/ **************************************************************************/
void libvlc_media_list_set_name( libvlc_media_list_t * p_mlist, void libvlc_media_list_set_media_descriptor( libvlc_media_list_t * p_mlist,
const char * psz_name, libvlc_media_descriptor_t * p_md,
libvlc_exception_t * p_e) libvlc_exception_t * p_e)
{ {
(void)p_e; (void)p_e;
vlc_mutex_lock( &p_mlist->object_lock ); vlc_mutex_lock( &p_mlist->object_lock );
free( p_mlist->psz_name ); if( p_mlist->p_md )
p_mlist->psz_name = psz_name ? strdup( psz_name ) : NULL; libvlc_media_descriptor_release( p_mlist->p_md );
libvlc_media_descriptor_retain( p_md );
p_mlist->p_md = p_md;
vlc_mutex_unlock( &p_mlist->object_lock ); vlc_mutex_unlock( &p_mlist->object_lock );
} }
/************************************************************************** /**************************************************************************
* name (Public) * media_descriptor (Public)
*
* If this media_list comes is a media_descriptor's subitems,
* This holds the corresponding media_descriptor.
* This md is also seen as the information holder for the media_list.
* Indeed a media_list can have meta information through this
* media_descriptor.
**************************************************************************/ **************************************************************************/
char * libvlc_media_list_name( libvlc_media_list_t * p_mlist, libvlc_media_descriptor_t *
libvlc_media_list_media_descriptor( libvlc_media_list_t * p_mlist,
libvlc_exception_t * p_e) libvlc_exception_t * p_e)
{ {
char *ret; libvlc_media_descriptor_t *p_md;
(void)p_e; (void)p_e;
vlc_mutex_lock( &p_mlist->object_lock ); vlc_mutex_lock( &p_mlist->object_lock );
ret = p_mlist->psz_name ? strdup( p_mlist->psz_name ) : NULL; p_md = p_mlist->p_md;
if( p_md )
libvlc_media_descriptor_retain( p_md );
vlc_mutex_unlock( &p_mlist->object_lock ); vlc_mutex_unlock( &p_mlist->object_lock );
return ret; return p_md;
} }
/************************************************************************** /**************************************************************************
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment