[vlc-commits] input/input: handle the "input-slave" option in LoadSlaves

Thomas Guillem git at videolan.org
Tue Jun 7 18:25:59 CEST 2016


vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Tue Jun  7 13:44:09 2016 +0200| [c34d719fb430f4dd441ddf3a645cdaa29aa138ba] | committer: Thomas Guillem

input/input: handle the "input-slave" option in LoadSlaves

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c34d719fb430f4dd441ddf3a645cdaa29aa138ba
---

 src/input/input.c |   23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/input/input.c b/src/input/input.c
index 240cb8a..e421b33 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -989,12 +989,16 @@ static void SetSubtitlesOptions( input_thread_t *p_input )
         var_SetInteger( p_input, "spu-delay", (mtime_t)i_delay * 100000 );
 }
 
-static void LoadVarSlaves( input_thread_t *p_input )
+static void GetVarSlaves( input_thread_t *p_input,
+                          input_item_slave_t ***ppp_slaves, int *p_slaves )
 {
     char *psz = var_GetNonEmptyString( p_input, "input-slave" );
     if( !psz )
         return;
 
+    input_item_slave_t **pp_slaves = *ppp_slaves;
+    int i_slaves = *p_slaves;
+
     char *psz_org = psz;
     while( psz && *psz )
     {
@@ -1013,14 +1017,19 @@ static void LoadVarSlaves( input_thread_t *p_input )
         psz = psz_delim;
         if( uri == NULL )
             continue;
-        msg_Dbg( p_input, "adding slave input '%s'", uri );
 
-        input_source_t *p_slave = InputSourceNew( p_input, uri, NULL, false );
-        if( p_slave )
-            TAB_APPEND( p_input->p->i_slave, p_input->p->slave, p_slave );
+        input_item_slave_t *p_slave =
+            input_item_slave_New( uri, SLAVE_TYPE_AUDIO, SLAVE_PRIORITY_USER );
         free( uri );
+
+        if( unlikely( p_slave == NULL ) )
+            break;
+        INSERT_ELEM( pp_slaves, i_slaves, i_slaves, p_slave );
     }
     free( psz_org );
+
+    *ppp_slaves = pp_slaves; /* in case of realloc */
+    *p_slaves = i_slaves;
 }
 
 static void LoadSlaves( input_thread_t *p_input )
@@ -1092,6 +1101,9 @@ static void LoadSlaves( input_thread_t *p_input )
     }
     TAB_CLEAN( p_item->i_slaves, p_item->pp_slaves );
 
+    /* Add slaves from the "input-slave" option */
+    GetVarSlaves( p_input, &pp_slaves, &i_slaves );
+
     if( i_slaves > 0 )
     {
         qsort( pp_slaves, i_slaves, sizeof (input_item_slave_t*),
@@ -1312,7 +1324,6 @@ static int Init( input_thread_t * p_input )
         StartTitle( p_input );
         SetSubtitlesOptions( p_input );
         LoadSlaves( p_input );
-        LoadVarSlaves( p_input );
         InitPrograms( p_input );
 
         double f_rate = var_InheritFloat( p_input, "rate" );



More information about the vlc-commits mailing list