[vlc-devel] [PATCH 4/8] playlist/item: add_subitem_tree: fix next on flat playlist and empty node

Filip Roséen filip at atch.se
Sun May 21 20:48:14 CEST 2017


---
 src/playlist/item.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/playlist/item.c b/src/playlist/item.c
index e912b0bcbc..5be9bba118 100644
--- a/src/playlist/item.c
+++ b/src/playlist/item.c
@@ -190,6 +190,26 @@ static void input_item_add_subitem_tree ( const vlc_event_t * p_event,
 
             playlist_ViewPlay( p_playlist, NULL, p_play_item );
         }
+        else if( b_flat && p_playlist->current.i_size > 0 )
+        {
+            /* If the playlist is flat, empty nodes are automatically deleted;
+             * meaning that moving from the current index (the index of the now
+             * removed node) to the next would result in a skip of one entry
+             * (as the empty node is deleted, the logical next item would be
+             * the one that now resides in its place).
+             *
+             * By resetting the currently playing to the item immediately
+             * before the insertion point of the non-existing children, or the
+             * start of the playlist if we are at offset 0, this problem is
+             * fixed.
+             **/
+            if( last_pos )
+                ResetCurrentlyPlaying( p_playlist,
+                    ARRAY_VAL( p_playlist->current, last_pos - 1 ) );
+            else
+                playlist_ViewPlay( p_playlist, NULL,
+                    ARRAY_VAL( p_playlist->current, 0 ) );
+        }
     }
 
     PL_UNLOCK;
-- 
2.13.0


More information about the vlc-devel mailing list