[vlc-commits] Playlist simplification in leaf-to-parent management

Jean-Baptiste Kempf git at videolan.org
Fri May 20 18:41:10 CEST 2011


vlc | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Fri May 20 18:21:21 2011 +0200| [874efde6d6888434ce369c833830ba09c01a0daf] | committer: Jean-Baptiste Kempf

Playlist simplification in leaf-to-parent management

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

 include/vlc_playlist.h                             |    5 ++---
 .../gui/qt4/components/playlist/standardpanel.cpp  |   19 +++++--------------
 .../gui/qt4/components/playlist/standardpanel.hpp  |    2 +-
 modules/gui/qt4/input_manager.cpp                  |    8 ++++----
 modules/gui/qt4/input_manager.hpp                  |   10 +++++++---
 src/playlist/item.c                                |    2 +-
 6 files changed, 20 insertions(+), 26 deletions(-)

diff --git a/include/vlc_playlist.h b/include/vlc_playlist.h
index de907db..96b9e63 100644
--- a/include/vlc_playlist.h
+++ b/include/vlc_playlist.h
@@ -109,9 +109,8 @@ TYPEDEF_ARRAY(playlist_item_t*, playlist_item_array_t)
  * - "playlist-item-deleted": It will contain the playlist_item_t->i_id of a
  * deleted playlist_item_t.
  *
- * - "leaf-to-parent": Set when an item gets subitems and is transformed to a
- * node. It will contain a pointer to the input_item_t bound to the transformed
- * playlist item.
+ * - "leaf-to-parent": It will contain the playlist_item_t->i_id of an item that is transformed
+ *   into a node.
  *
  * The playlist contains rate-variable which is propagated to current input if available
  * also rate-slower/rate-faster is in use
diff --git a/modules/gui/qt4/components/playlist/standardpanel.cpp b/modules/gui/qt4/components/playlist/standardpanel.cpp
index 1e52992..8f9e6db 100644
--- a/modules/gui/qt4/components/playlist/standardpanel.cpp
+++ b/modules/gui/qt4/components/playlist/standardpanel.cpp
@@ -79,8 +79,8 @@ StandardPLPanel::StandardPLPanel( PlaylistWidget *_parent,
     int i_savedViewMode = getSettings()->value( "Playlist/view-mode", TREE_VIEW ).toInt();
     showView( i_savedViewMode );
 
-    DCONNECT( THEMIM, leafBecameParent( input_item_t *),
-              this, browseInto( input_item_t * ) );
+    DCONNECT( THEMIM, leafBecameParent( int ),
+              this, browseInto( int ) );
 
     CONNECT( model, currentChanged( const QModelIndex& ),
              this, handleExpansion( const QModelIndex& ) );
@@ -451,20 +451,11 @@ void StandardPLPanel::activate( const QModelIndex &index )
     }
 }
 
-void StandardPLPanel::browseInto( input_item_t *p_input )
+void StandardPLPanel::browseInto( int i_id )
 {
-    if( p_input->i_id != lastActivatedId ) return;
+    if( i_id != lastActivatedId ) return;
 
-    playlist_Lock( THEPL );
-
-    playlist_item_t *p_item = playlist_ItemGetByInput( THEPL, p_input );
-    if( !p_item )
-    {
-        playlist_Unlock( THEPL );
-        return;
-    }
-
-    QModelIndex index = model->index( p_item->i_id, 0 );
+    QModelIndex index = model->index( i_id, 0 );
     playlist_Unlock( THEPL );
 
     if( currentView == treeView )
diff --git a/modules/gui/qt4/components/playlist/standardpanel.hpp b/modules/gui/qt4/components/playlist/standardpanel.hpp
index 14c0791..6b936a0 100644
--- a/modules/gui/qt4/components/playlist/standardpanel.hpp
+++ b/modules/gui/qt4/components/playlist/standardpanel.hpp
@@ -111,7 +111,7 @@ private slots:
     void activate( const QModelIndex & );
 
     void browseInto();
-    void browseInto( input_item_t * );
+    void browseInto( int );
 
     void gotoPlayingItem();
 
diff --git a/modules/gui/qt4/input_manager.cpp b/modules/gui/qt4/input_manager.cpp
index f541992..5a2b8d0 100644
--- a/modules/gui/qt4/input_manager.cpp
+++ b/modules/gui/qt4/input_manager.cpp
@@ -1027,8 +1027,8 @@ void MainInputManager::customEvent( QEvent *event )
         notifyRepeatLoop();
         return;
     case LeafToParent_Type:
-        imEv = static_cast<IMEvent*>( event );
-        emit leafBecameParent( imEv->p_item );
+        plEv = static_cast<PLEvent*>( event );
+        emit leafBecameParent( plEv->i_item );
         return;
     default:
         if( type != ItemChanged_Type ) return;
@@ -1186,8 +1186,8 @@ static int LeafToParent( vlc_object_t *p_this, const char *psz_var,
     VLC_UNUSED( p_this ); VLC_UNUSED( psz_var ); VLC_UNUSED( oldval );
     MainInputManager *mim = (MainInputManager*)param;
 
-    IMEvent *event = new IMEvent( LeafToParent_Type,
-                                  static_cast<input_item_t*>( newval.p_address ) );
+    PLEvent *event = new PLEvent( LeafToParent_Type, newval.i_int );
+
     QApplication::postEvent( mim, event );
     return VLC_SUCCESS;
 }
diff --git a/modules/gui/qt4/input_manager.hpp b/modules/gui/qt4/input_manager.hpp
index db9db7e..f7533d9 100644
--- a/modules/gui/qt4/input_manager.hpp
+++ b/modules/gui/qt4/input_manager.hpp
@@ -107,9 +107,13 @@ enum PLEventTypes
 class PLEvent : public QEvent
 {
 public:
-    PLEvent( PLEventTypes t, int i, int p )
-        : QEvent( (QEvent::Type)t ), i_item(i), i_parent(p) {}
+    PLEvent( int t, int i, int p = 0 )
+        : QEvent( (QEvent::Type)(t) ), i_item(i), i_parent(p) {}
+
+    /* Needed for "playlist-item*" and "leaf-to-parent" callbacks
+     * !! Can be a input_item_t->i_id or a playlist_item_t->i_id */
     int i_item;
+    // Needed for "playlist-item-append" callback, notably
     int i_parent;
 };
 
@@ -290,7 +294,7 @@ signals:
     void playlistItemRemoved( int itemId );
     void randomChanged( bool );
     void repeatLoopChanged( int );
-    void leafBecameParent( input_item_t * );
+    void leafBecameParent( int );
 };
 
 #endif
diff --git a/src/playlist/item.c b/src/playlist/item.c
index 0de77a5..faf3191 100644
--- a/src/playlist/item.c
+++ b/src/playlist/item.c
@@ -126,7 +126,7 @@ static void input_item_add_subitem_tree ( const vlc_event_t * p_event,
                                                  pos,
                                                  b_flat );
 
-    if( !b_flat ) var_SetAddress( p_playlist, "leaf-to-parent", p_input );
+    if( !b_flat ) var_SetAddress( p_playlist, "leaf-to-parent", p_item->i_id );
 
     //control playback only if it was the current playing item that got subitems
     if( b_current )



More information about the vlc-commits mailing list