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

Thomas Guillem thomas at gllm.fr
Wed Feb 12 15:43:25 CET 2020


Rename EsOutProgramFind() to EsOutProgramFindOrAdd().
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;
-- 
2.20.1



More information about the vlc-devel mailing list