[vlc-commits] macosx: improve playItem, make sure that the complete pl is queued

David Fuhrmann git at videolan.org
Fri Jan 2 21:58:35 CET 2015


vlc | branch: master | David Fuhrmann <dfuhrmann at videolan.org> | Fri Jan  2 14:30:38 2015 +0100| [8afbec2889afa4070fafb5da2cbae20aa0648198] | committer: David Fuhrmann

macosx: improve playItem, make sure that the complete pl is queued

Simplifies the playItem action. For the playlist call, the current
root is taken instead of the parent node. This ensures that
playback does not stop on folder/node boundaries.

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

 modules/gui/macosx/playlist.m |   26 ++++++++------------------
 1 file changed, 8 insertions(+), 18 deletions(-)

diff --git a/modules/gui/macosx/playlist.m b/modules/gui/macosx/playlist.m
index cdb34e8..66d72a1 100644
--- a/modules/gui/macosx/playlist.m
+++ b/modules/gui/macosx/playlist.m
@@ -465,31 +465,21 @@
 /* When called retrieves the selected outlineview row and plays that node or item */
 - (IBAction)playItem:(id)sender
 {
-    intf_thread_t * p_intf = VLCIntf;
-    playlist_t * p_playlist = pl_Get(p_intf);
-
-    playlist_item_t *p_item;
-    playlist_item_t *p_node = NULL;
+    playlist_t *p_playlist = pl_Get(VLCIntf);
 
     // ignore clicks on column header when handling double action
-    if (sender != nil && [o_outline_view clickedRow] == -1 && sender != o_mi_play)
+    if (sender == o_outline_view && [o_outline_view clickedRow] == -1)
         return;
 
-    PL_LOCK;
     PLItem *o_item = [o_outline_view itemAtRow:[o_outline_view selectedRow]];
-    p_item = playlist_ItemGetById(p_playlist, [o_item plItemId]);
+    if (!o_item)
+        return;
 
-    if (p_item) {
-        if (p_item->i_children == -1) {
-            p_node = p_item->p_parent;
-        } else {
-            p_node = p_item;
-            if (p_node->i_children > 0 && p_node->pp_children[0]->i_children == -1)
-                p_item = p_node->pp_children[0];
-            else
-                p_item = NULL;
-        }
+    PL_LOCK;
+    playlist_item_t *p_item = playlist_ItemGetById(p_playlist, [o_item plItemId]);
+    playlist_item_t *p_node = playlist_ItemGetById(p_playlist, [[[self model] rootItem] plItemId]);
 
+    if (p_item && p_node) {
         playlist_Control(p_playlist, PLAYLIST_VIEWPLAY, pl_Locked, p_node, p_item);
     }
     PL_UNLOCK;



More information about the vlc-commits mailing list