]> git.sesse.net Git - vlc/commitdiff
input_item: new input_item_Copy()
authorJakob Leben <jleben@videolan.org>
Thu, 11 Mar 2010 18:20:20 +0000 (19:20 +0100)
committerJakob Leben <jleben@videolan.org>
Sat, 13 Mar 2010 16:16:37 +0000 (17:16 +0100)
include/vlc_input_item.h
src/input/item.c
src/libvlccore.sym

index d4858c9180d61ea977aef66111fa0d5ab1e1e8f9..3ad41a69882489a3eeff4733dca497987aa9cad0 100644 (file)
@@ -263,6 +263,12 @@ VLC_EXPORT( input_item_t *, input_item_NewExt, (vlc_object_t *, const char *psz_
  */
 #define input_item_New( a,b,c ) input_item_NewExt( a, b, c, 0, NULL, 0, -1 )
 
+/**
+ * This function creates a new input_item_t as a copy of another.
+ */
+VLC_EXPORT( input_item_t *, input_item_Copy, (vlc_object_t *, input_item_t * ) );
+
+
 /******************
  * Input stats
  ******************/
index f10067a7a2912afae66573ea2300560b5d1e4556..32b5586c57f30b4334c2d61076f6c5c183cdb519 100644 (file)
@@ -876,6 +876,31 @@ input_item_t *input_item_NewWithType( vlc_object_t *p_obj, const char *psz_uri,
     return p_input;
 }
 
+input_item_t *input_item_Copy( vlc_object_t *p_obj, input_item_t *p_input )
+{
+    vlc_mutex_lock( &p_input->lock );
+
+    input_item_t *p_new_input =
+        input_item_NewWithType( p_obj,
+                                p_input->psz_uri, p_input->psz_name,
+                                0, NULL, 0, p_input->i_duration,
+                                p_input->i_type );
+
+    if( p_new_input )
+    {
+        for( int i = 0 ; i< p_input->i_options; i++ )
+        {
+            input_item_AddOption( p_new_input,
+                                  p_input->ppsz_options[i],
+                                  p_input->optflagv[i] );
+        }
+    }
+
+    vlc_mutex_unlock( &p_input->lock );
+
+    return p_new_input;
+}
+
 struct item_type_entry
 {
     const char psz_scheme[7];
index ae488f8d93d42e49d40a8869820829c7b022af4c..4343aa1635507fef8984bd0d9098c314fd309834 100644 (file)
@@ -189,6 +189,7 @@ input_DetachResource
 input_GetItem
 input_item_AddInfo
 input_item_AddOption
+input_item_Copy
 input_item_CopyOptions
 input_item_DelInfo
 input_item_GetDuration