vlc | branch: master | Felix Paul Kühne <[email protected]> | Sat Apr 27 17:09:40 
2019 +0200| [7f9a2f8a848edb7c2fcf671387e4b193f89a4160] | committer: Felix Paul 
Kühne

macosx/playlist: add API to append items if we already have an input item

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

 .../gui/macosx/playlist/VLCPlaylistController.h    | 11 +++++++++++
 .../gui/macosx/playlist/VLCPlaylistController.m    | 23 ++++++++++++++++++++++
 2 files changed, 34 insertions(+)

diff --git a/modules/gui/macosx/playlist/VLCPlaylistController.h 
b/modules/gui/macosx/playlist/VLCPlaylistController.h
index cc5b4abf31..639e5f2459 100644
--- a/modules/gui/macosx/playlist/VLCPlaylistController.h
+++ b/modules/gui/macosx/playlist/VLCPlaylistController.h
@@ -121,6 +121,17 @@ extern NSString *VLCPlaylistItemsRemoved;
            startPlayback:(BOOL)startPlayback;
 
 /**
+ * Add new item to the playlist if you already have an input item
+ * @param p_inputItem the input item you already from somewhere
+ * @param insertionIndex index for new item, -1 for appending at end
+ * @param startPlayback starts playback of the item if true
+ * @return returns VLC_SUCCESS or an error
+ */
+- (int)addInputItem:(input_item_t *)p_inputItem
+         atPosition:(size_t)insertionIndex
+      startPlayback:(BOOL)startPlayback;
+
+/**
  * Remove the item at the given index (if any)
  * @param index the index to remove
  */
diff --git a/modules/gui/macosx/playlist/VLCPlaylistController.m 
b/modules/gui/macosx/playlist/VLCPlaylistController.m
index aea9cfeecb..49b05714da 100644
--- a/modules/gui/macosx/playlist/VLCPlaylistController.m
+++ b/modules/gui/macosx/playlist/VLCPlaylistController.m
@@ -363,6 +363,29 @@ static const struct vlc_playlist_callbacks 
playlist_callbacks = {
     }
 }
 
+- (int)addInputItem:(input_item_t *)p_inputItem 
atPosition:(size_t)insertionIndex startPlayback:(BOOL)startPlayback
+{
+    if (p_inputItem == NULL) {
+        return VLC_EBADVAR;
+    }
+    int ret = 0;
+
+    vlc_playlist_Lock(_p_playlist);
+    if (insertionIndex == -1) {
+        insertionIndex = vlc_playlist_Count(_p_playlist);
+    }
+    ret = vlc_playlist_InsertOne(_p_playlist, insertionIndex, p_inputItem);
+    if (ret != VLC_SUCCESS) {
+        vlc_playlist_Unlock(_p_playlist);
+        return ret;
+    }
+    if (startPlayback) {
+        ret = vlc_playlist_PlayAt(_p_playlist, insertionIndex);
+    }
+    vlc_playlist_Unlock(_p_playlist);
+    return ret;
+}
+
 - (void)removeItemAtIndex:(size_t)index
 {
     /* note: we don't remove the cached data from the model here

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to