[vlc-devel] [RFC PATCH 7/9] es_out: refactor EsOutProgramFind()

Rémi Denis-Courmont remi at remlab.net
Wed Feb 12 17:57:43 CET 2020


Le keskiviikkona 12. helmikuuta 2020, 16.43.25 EET Thomas Guillem a écrit :
> Rename EsOutProgramFind() to EsOutProgramFindOrAdd().

You can use "insert" (probably most common) or "search" (POSIX style) here.

> Keep EsOutProgramFind() that will return NULL if the program is not found.
> 
> This remove program search code duplication between EsOutProgramDel()
> andEsOutProgramFind().
> 
> This will be useful for next commits since the program search will become a
> little more complicated.
> ---
>  src/input/es_out.c | 54 +++++++++++++++++++++++-----------------------
>  1 file changed, 27 insertions(+), 27 deletions(-)
> 
> diff --git a/src/input/es_out.c b/src/input/es_out.c
> index afb89b00e54..6a49be6ef75 100644
> --- a/src/input/es_out.c
> +++ b/src/input/es_out.c
> @@ -1379,6 +1379,27 @@ static es_out_pgrm_t *EsOutProgramAdd( es_out_t *out,
> int i_group ) return p_pgrm;
>  }
> 
> +/* EsOutProgramFind
> + */
> +static es_out_pgrm_t *EsOutProgramFind( es_out_t *p_out, int i_group )
> +{
> +    es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
> +    es_out_pgrm_t *pgrm;
> +
> +    vlc_list_foreach(pgrm, &p_sys->programs, node)
> +        if (pgrm->i_id == i_group)
> +            return pgrm;
> +    return NULL;
> +}
> +
> +/* EsOutProgramFindOrAdd
> + */
> +static es_out_pgrm_t *EsOutProgramFindOrAdd( es_out_t *p_out, int i_group )
> +{
> +    es_out_pgrm_t *pgrm = EsOutProgramFind( p_out, i_group );
> +    return pgrm ? pgrm : EsOutProgramAdd( p_out, i_group );
> +}
> +
>  /* EsOutDelProgram:
>   *  Delete a program
>   */
> @@ -1386,15 +1407,8 @@ static int EsOutProgramDel( es_out_t *out, int
> i_group ) {
>      es_out_sys_t *p_sys = container_of(out, es_out_sys_t, out);
>      input_thread_t    *p_input = p_sys->p_input;
> -    es_out_pgrm_t *p_pgrm = NULL, *pgrm;
> -
> -    vlc_list_foreach(pgrm, &p_sys->programs, node)
> -        if (pgrm->i_id == i_group)
> -        {
> -            p_pgrm = pgrm;
> -            break;
> -        }
> 
> +    es_out_pgrm_t *p_pgrm = EsOutProgramFind( out, i_group );
>      if( p_pgrm == NULL )
>          return VLC_EGENERIC;
> 
> @@ -1424,20 +1438,6 @@ static int EsOutProgramDel( es_out_t *out, int
> i_group ) return VLC_SUCCESS;
>  }
> 
> -/* EsOutProgramFind
> - */
> -static es_out_pgrm_t *EsOutProgramFind( es_out_t *p_out, int i_group )
> -{
> -    es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
> -    es_out_pgrm_t *pgrm;
> -
> -    vlc_list_foreach(pgrm, &p_sys->programs, node)
> -        if (pgrm->i_id == i_group)
> -            return pgrm;
> -
> -    return EsOutProgramAdd( p_out, i_group );
> -}
> -
>  /* EsOutProgramMeta:
>   */
>  static char *EsOutProgramGetMetaName( es_out_pgrm_t *p_pgrm )
> @@ -1512,7 +1512,7 @@ static void EsOutProgramMeta( es_out_t *out, int
> i_group, const vlc_meta_t *p_me /* Find program */
>      if( !EsOutIsProgramVisible( out, i_group ) )
>          return;
> -    p_pgrm = EsOutProgramFind( out, i_group );
> +    p_pgrm = EsOutProgramFindOrAdd( out, i_group );
>      if( !p_pgrm )
>          return;
> 
> @@ -1621,7 +1621,7 @@ static void EsOutProgramEpgEvent( es_out_t *out, int
> i_group, const vlc_epg_even /* Find program */
>      if( !EsOutIsProgramVisible( out, i_group ) )
>          return;
> -    p_pgrm = EsOutProgramFind( out, i_group );
> +    p_pgrm = EsOutProgramFindOrAdd( out, i_group );
>      if( !p_pgrm )
>          return;
> 
> @@ -1639,7 +1639,7 @@ static void EsOutProgramEpg( es_out_t *out, int
> i_group, const vlc_epg_t *p_epg /* Find program */
>      if( !EsOutIsProgramVisible( out, i_group ) )
>          return;
> -    p_pgrm = EsOutProgramFind( out, i_group );
> +    p_pgrm = EsOutProgramFindOrAdd( out, i_group );
>      if( !p_pgrm )
>          return;
> 
> @@ -1917,7 +1917,7 @@ static es_out_id_t *EsOutAddLocked( es_out_t *out,
> const es_format_t *fmt, es->fmt.i_original_fourcc = es->fmt.i_codec;
> 
>      /* Search the program */
> -    p_pgrm = EsOutProgramFind( out, fmt->i_group );
> +    p_pgrm = EsOutProgramFindOrAdd( out, fmt->i_group );
>      if( !p_pgrm )
>      {
>          es_format_Clean( &es->fmt );
> @@ -3044,7 +3044,7 @@ static int EsOutVaControlLocked( es_out_t *out,
> es_out_ctx_t *ctx, else
>          {
>              i_group = va_arg( args, int );
> -            p_pgrm = EsOutProgramFind( out, i_group );
> +            p_pgrm = EsOutProgramFindOrAdd( out, i_group );
>          }
>          if( !p_pgrm )
>              return VLC_EGENERIC;


-- 
雷米‧德尼-库尔蒙
http://www.remlab.net/





More information about the vlc-devel mailing list