vlc | branch: master | Rémi Denis-Courmont <r...@remlab.net> | Sat Nov 15 12:28:40 2014 +0200| [84ec01684530f5bb7a8cb2bc86c8da4dd6c94341] | committer: Rémi Denis-Courmont
playlist: reduce lock contention and do not pretend to handle error > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=84ec01684530f5bb7a8cb2bc86c8da4dd6c94341 --- src/playlist/engine.c | 45 +++++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/src/playlist/engine.c b/src/playlist/engine.c index 00bfb61..990bcb1 100644 --- a/src/playlist/engine.c +++ b/src/playlist/engine.c @@ -229,38 +229,27 @@ playlist_t *playlist_Create( vlc_object_t *p_parent ) pl_priv(p_playlist)->b_tree = var_InheritBool( p_parent, "playlist-tree" ); - /* Create the root node */ - PL_LOCK; - p_playlist->p_root = playlist_NodeCreate( p_playlist, NULL, NULL, - PLAYLIST_END, 0, NULL ); - PL_UNLOCK; - if( !p_playlist->p_root ) return NULL; + /* Create the root, playing items and meida library nodes */ + playlist_item_t *root, *playing, *ml; - /* Create currently playing items node */ PL_LOCK; - p_playlist->p_playing = playlist_NodeCreate( - p_playlist, _( "Playlist" ), p_playlist->p_root, - PLAYLIST_END, PLAYLIST_RO_FLAG, NULL ); - + root = playlist_NodeCreate( p_playlist, NULL, NULL, + PLAYLIST_END, 0, NULL ); + playing = playlist_NodeCreate( p_playlist, _( "Playlist" ), root, + PLAYLIST_END, PLAYLIST_RO_FLAG, NULL ); + if( var_InheritBool( p_parent, "media-library") ) + ml = playlist_NodeCreate( p_playlist, _( "Media Library" ), root, + PLAYLIST_END, PLAYLIST_RO_FLAG, NULL ); + else + ml = NULL; PL_UNLOCK; - if( !p_playlist->p_playing ) return NULL; - - /* Create media library node */ - const bool b_ml = var_InheritBool( p_parent, "media-library"); - if( b_ml ) - { - PL_LOCK; - p_playlist->p_media_library = playlist_NodeCreate( - p_playlist, _( "Media Library" ), p_playlist->p_root, - PLAYLIST_END, PLAYLIST_RO_FLAG, NULL ); - PL_UNLOCK; - } - else - { - p_playlist->p_media_library = NULL; - } + if( unlikely(root == NULL || playing == NULL || ml == NULL) ) + abort(); + p_playlist->p_root = root; + p_playlist->p_playing = playing; + p_playlist->p_media_library = ml; p_playlist->p_root_category = p_playlist->p_root; p_playlist->p_root_onelevel = p_playlist->p_root; p_playlist->p_local_category = p_playlist->p_playing; @@ -274,7 +263,7 @@ playlist_t *playlist_Create( vlc_object_t *p_parent ) pl_priv(p_playlist)->request.b_request = false; pl_priv(p_playlist)->status.i_status = PLAYLIST_STOPPED; - if(b_ml) + if (ml != NULL) playlist_MLLoad( p_playlist ); /* Preparser (and meta retriever) _after_ the Media Library*/ _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits