[vlc-devel] [PATCH 3/3] item: always have a meta structure
Steve Lhomme
robux4 at ycbcr.xyz
Mon Sep 28 07:38:19 CEST 2020
You don't need patch [1/3] with this patch.
On 2020-09-27 20:04, RĂ©mi Denis-Courmont wrote:
> Nothing good will happen if setting the preparsed flag is ignored
> because the meta allocation failed. And in practice, it is almost
> always created anyway. So just create one up-front.
>
> This also simplifies the code quite a bit.
> ---
> src/input/item.c | 55 +++++++++++-------------------------------------
> 1 file changed, 12 insertions(+), 43 deletions(-)
>
> diff --git a/src/input/item.c b/src/input/item.c
> index 7a69f5b448..44db7acb0b 100644
> --- a/src/input/item.c
> +++ b/src/input/item.c
> @@ -71,9 +71,6 @@ void input_item_SetPreparsed( input_item_t *p_i, bool b_preparsed )
>
> vlc_mutex_lock( &p_i->lock );
>
> - if( !p_i->p_meta )
> - p_i->p_meta = vlc_meta_New();
> -
> int status = vlc_meta_GetStatus(p_i->p_meta);
> int new_status;
> if( b_preparsed )
> @@ -100,9 +97,6 @@ void input_item_SetArtNotFound( input_item_t *p_i, bool b_not_found )
> {
> vlc_mutex_lock( &p_i->lock );
>
> - if( !p_i->p_meta )
> - p_i->p_meta = vlc_meta_New();
> -
> int status = vlc_meta_GetStatus(p_i->p_meta);
>
> if( b_not_found )
> @@ -119,9 +113,6 @@ void input_item_SetArtFetched( input_item_t *p_i, bool b_art_fetched )
> {
> vlc_mutex_lock( &p_i->lock );
>
> - if( !p_i->p_meta )
> - p_i->p_meta = vlc_meta_New();
> -
> int status = vlc_meta_GetStatus(p_i->p_meta);
>
> if( b_art_fetched )
> @@ -137,8 +128,6 @@ void input_item_SetArtFetched( input_item_t *p_i, bool b_art_fetched )
> void input_item_SetMeta( input_item_t *p_i, vlc_meta_type_t meta_type, const char *psz_val )
> {
> vlc_mutex_lock( &p_i->lock );
> - if( !p_i->p_meta )
> - p_i->p_meta = vlc_meta_New();
> vlc_meta_Set( p_i->p_meta, meta_type, psz_val );
> vlc_mutex_unlock( &p_i->lock );
>
> @@ -237,11 +226,6 @@ bool input_item_MetaMatch( input_item_t *p_i,
> {
> vlc_mutex_lock( &p_i->lock );
>
> - if( !p_i->p_meta )
> - {
> - vlc_mutex_unlock( &p_i->lock );
> - return false;
> - }
> const char *psz_meta = vlc_meta_Get( p_i->p_meta, meta_type );
> bool b_ret = psz_meta && strcasestr( psz_meta, psz );
>
> @@ -255,9 +239,6 @@ const char *input_item_GetMetaLocked(input_item_t *item,
> {
> vlc_mutex_assert(&item->lock);
>
> - if (!item->p_meta)
> - return NULL;
> -
> return vlc_meta_Get(item->p_meta, meta_type);
> }
>
> @@ -276,13 +257,6 @@ char *input_item_GetTitleFbName( input_item_t *p_item )
> char *psz_ret;
> vlc_mutex_lock( &p_item->lock );
>
> - if( !p_item->p_meta )
> - {
> - psz_ret = p_item->psz_name ? strdup( p_item->psz_name ) : NULL;
> - vlc_mutex_unlock( &p_item->lock );
> - return psz_ret;
> - }
> -
> const char *psz_title = vlc_meta_Get( p_item->p_meta, vlc_meta_Title );
> if( !EMPTY_STR( psz_title ) )
> psz_ret = strdup( psz_title );
> @@ -439,7 +413,7 @@ char *input_item_GetNowPlayingFb( input_item_t *p_item )
> bool input_item_IsPreparsed( input_item_t *p_item )
> {
> vlc_mutex_lock( &p_item->lock );
> - bool b_preparsed = p_item->p_meta ? ( vlc_meta_GetStatus(p_item->p_meta) & ITEM_PREPARSED ) != 0 : false;
> + bool b_preparsed = vlc_meta_GetStatus(p_item->p_meta) & ITEM_PREPARSED;
> vlc_mutex_unlock( &p_item->lock );
>
> return b_preparsed;
> @@ -448,7 +422,7 @@ bool input_item_IsPreparsed( input_item_t *p_item )
> bool input_item_IsArtFetched( input_item_t *p_item )
> {
> vlc_mutex_lock( &p_item->lock );
> - bool b_fetched = p_item->p_meta ? ( vlc_meta_GetStatus(p_item->p_meta) & ITEM_ART_FETCHED ) != 0 : false;
> + bool b_fetched = vlc_meta_GetStatus(p_item->p_meta) & ITEM_ART_FETCHED;
> vlc_mutex_unlock( &p_item->lock );
>
> return b_fetched;
> @@ -485,9 +459,7 @@ void input_item_Release( input_item_t *p_item )
> free( p_item->psz_name );
> free( p_item->psz_uri );
> free( p_item->p_stats );
> -
> - if( p_item->p_meta != NULL )
> - vlc_meta_Delete( p_item->p_meta );
> + vlc_meta_Delete( p_item->p_meta );
>
> for( input_item_opaque_t *o = p_item->opaques, *next; o != NULL; o = next )
> {
> @@ -1062,6 +1034,13 @@ input_item_NewExt( const char *psz_uri, const char *psz_name,
> input_item_t *p_input = &owner->item;
> vlc_event_manager_t * p_em = &p_input->event_manager;
>
> + p_input->p_meta = vlc_meta_New();
> + if( unlikely(p_input->p_meta == NULL) )
> + {
> + free(owner);
> + return NULL;
> + }
> +
> vlc_mutex_init( &p_input->lock );
>
> p_input->psz_name = NULL;
> @@ -1086,7 +1065,6 @@ input_item_NewExt( const char *psz_uri, const char *psz_name,
> TAB_INIT( p_input->i_categories, p_input->pp_categories );
> TAB_INIT( p_input->i_es, p_input->es );
> p_input->p_stats = NULL;
> - p_input->p_meta = NULL;
> TAB_INIT( p_input->i_epg, p_input->pp_epg );
> TAB_INIT( p_input->i_slaves, p_input->pp_slaves );
>
> @@ -1103,9 +1081,7 @@ input_item_NewExt( const char *psz_uri, const char *psz_name,
>
> input_item_t *input_item_Copy( input_item_t *p_input )
> {
> - vlc_meta_t *meta = NULL;
> input_item_t *item;
> - bool b_net;
>
> vlc_mutex_lock( &p_input->lock );
>
> @@ -1118,13 +1094,8 @@ input_item_t *input_item_Copy( input_item_t *p_input )
> return NULL;
> }
>
> - if( p_input->p_meta != NULL )
> - {
> - meta = vlc_meta_New();
> - if( likely(meta != NULL) )
> - vlc_meta_Merge( meta, p_input->p_meta );
> - }
> - b_net = p_input->b_net;
> + vlc_meta_Merge( item->p_meta, p_input->p_meta );
> + item->b_net = p_input->b_net;
>
> if( p_input->i_slaves > 0 )
> {
> @@ -1145,8 +1116,6 @@ input_item_t *input_item_Copy( input_item_t *p_input )
>
> /* No need to lock; no other thread has seen this new item yet. */
> input_item_CopyOptions( item, p_input );
> - item->p_meta = meta;
> - item->b_net = b_net;
> return item;
> }
>
> --
> 2.28.0
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
>
More information about the vlc-devel
mailing list