]> git.sesse.net Git - vlc/commitdiff
Playlist simplification in leaf-to-parent management
authorJean-Baptiste Kempf <jb@videolan.org>
Fri, 20 May 2011 16:21:21 +0000 (18:21 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Fri, 20 May 2011 16:22:31 +0000 (18:22 +0200)
include/vlc_playlist.h
modules/gui/qt4/components/playlist/standardpanel.cpp
modules/gui/qt4/components/playlist/standardpanel.hpp
modules/gui/qt4/input_manager.cpp
modules/gui/qt4/input_manager.hpp
src/playlist/item.c

index de907db73aaa1826876d26462c0029f86c01e1dc..96b9e6337b92fe64fbb3d8667ca2cac074a2e118 100644 (file)
@@ -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
index 1e52992a43a844bf08f178a212429223f8381d72..8f9e6dbb44de025d4c82aaeb681e103cc76acb28 100644 (file)
@@ -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( in),
+              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 )
index 14c0791be8ded71669f595d20a702c2da3afc61c..6b936a0c8bddeede81b9303f3c06b32abb5a8b67 100644 (file)
@@ -111,7 +111,7 @@ private slots:
     void activate( const QModelIndex & );
 
     void browseInto();
-    void browseInto( input_item_t * );
+    void browseInto( int );
 
     void gotoPlayingItem();
 
index f541992b7190f2bc04571b2cbdca925443263743..5a2b8d054d4660109f56f13411c65fc3c17fa1ea 100644 (file)
@@ -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;
 }
index db9db7e646bec6154f5b77506ffcf38853048253..f7533d948beb6080c8ab10ed9630d0534ba2552c 100644 (file)
@@ -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
index 0de77a537ab875d3d1a323a191b214b9df37c146..faf31916d6de9185c4cec48c1e24564f256b12e0 100644 (file)
@@ -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 )