]> git.sesse.net Git - vlc/blobdiff - src/playlist/item.c
No need to add a '\n' with msg_*
[vlc] / src / playlist / item.c
index 29142f536be40f65b75a0c710898233295f9804d..a993b79251bb15ed7c31ae55eb7004d89883ea8a 100644 (file)
@@ -38,6 +38,8 @@ static void ChangeToNode( playlist_t *p_playlist, playlist_item_t *p_item );
 static int DeleteInner( playlist_t * p_playlist, playlist_item_t *p_item,
                         bool b_stop );
 
+static playlist_item_t *ItemToNode( playlist_t *, playlist_item_t *, bool );
+
 /*****************************************************************************
  * An input item has gained a subitem (Event Callback)
  *****************************************************************************/
@@ -86,7 +88,7 @@ static void input_item_subitem_added( const vlc_event_t * p_event,
         /* If this item is already a node don't transform it */
         if( p_item_in_category->i_children == -1 )
         {
-            p_item_in_category = playlist_ItemToNode( p_playlist,
+            p_item_in_category = ItemToNode( p_playlist,
                     p_item_in_category, pl_Locked );
             p_item_in_category->p_input->i_type = ITEM_TYPE_PLAYLIST;
         }
@@ -113,9 +115,9 @@ static void input_item_subitem_added( const vlc_event_t * p_event,
 static void input_item_changed( const vlc_event_t * p_event,
                                 void * user_data )
 {
-    (void)p_event;
-    playlist_item_t * p_item = user_data;
-    var_SetInteger( p_item->p_playlist, "item-change", p_item->i_id );
+    playlist_item_t *p_item = user_data;
+    VLC_UNUSED( p_event );
+    var_SetInteger( p_item->p_playlist, "item-change", p_item->p_input->i_id );
 }
 
 /*****************************************************************************
@@ -547,9 +549,9 @@ playlist_item_t * playlist_NodeAddInput( playlist_t *p_playlist,
  * \param b_locked TRUE if the playlist is locked
  * \return the item transform in a node
  */
-playlist_item_t *playlist_ItemToNode( playlist_t *p_playlist,
-                                      playlist_item_t *p_item,
-                                      bool b_locked )
+static playlist_item_t *ItemToNode( playlist_t *p_playlist,
+                                    playlist_item_t *p_item,
+                                    bool b_locked )
 {
 
     playlist_item_t *p_item_in_category;
@@ -622,8 +624,7 @@ playlist_item_t *playlist_ItemToNode( playlist_t *p_playlist,
         }
         pl_priv(p_playlist)->b_reset_currently_playing = true;
         vlc_cond_signal( &pl_priv(p_playlist)->signal );
-        var_SetInteger( p_playlist, "item-change", p_item_in_category->
-                                                        p_input->i_id );
+        var_SetInteger( p_playlist, "item-change", p_item_in_category->p_input->i_id );
         PL_UNLOCK_IF( !b_locked );
         return p_item_in_category;
     }
@@ -774,22 +775,21 @@ int playlist_TreeMove( playlist_t * p_playlist, playlist_item_t *p_item,
 void playlist_SendAddNotify( playlist_t *p_playlist, int i_item_id,
                              int i_node_id, bool b_signal )
 {
-    vlc_value_t val;
+    playlist_private_t *p_sys = pl_priv(p_playlist);
     PL_ASSERT_LOCKED;
 
-    playlist_add_t *p_add = (playlist_add_t *)malloc( sizeof( playlist_add_t) );
-    if( !p_add )
-        return;
-
-    p_add->i_item = i_item_id;
-    p_add->i_node = i_node_id;
-    val.p_address = p_add;
-    pl_priv(p_playlist)->b_reset_currently_playing = true;
+    p_sys->b_reset_currently_playing = true;
     if( b_signal )
-        vlc_cond_signal( &pl_priv(p_playlist)->signal );
+        vlc_cond_signal( &p_sys->signal );
 
-    var_Set( p_playlist, "item-append", val );
-    free( p_add );
+    playlist_add_t add;
+    add.i_item = i_item_id;
+    add.i_node = i_node_id;
+
+    vlc_value_t val;
+    val.p_address = &add;
+
+    var_Set( p_playlist, "playlist-item-append", val );
 }
 
 /***************************************************************************
@@ -823,7 +823,7 @@ static void GoAndPreparse( playlist_t *p_playlist, int i_mode,
         pl_priv(p_playlist)->request.i_skip = 0;
         pl_priv(p_playlist)->request.p_item = p_toplay;
         if( pl_priv(p_playlist)->p_input )
-            input_StopThread( pl_priv(p_playlist)->p_input );
+            input_StopThread( pl_priv(p_playlist)->p_input, true );
         pl_priv(p_playlist)->request.i_status = PLAYLIST_RUNNING;
         vlc_cond_signal( &pl_priv(p_playlist)->signal );
     }
@@ -887,7 +887,7 @@ static int DeleteInner( playlist_t * p_playlist, playlist_item_t *p_item,
         return playlist_NodeDelete( p_playlist, p_item, true, false );
     }
     pl_priv(p_playlist)->b_reset_currently_playing = true;
-    var_SetInteger( p_playlist, "item-deleted", i_id );
+    var_SetInteger( p_playlist, "playlist-item-deleted", i_id );
 
     /* Remove the item from the bank */
     ARRAY_BSEARCH( p_playlist->all_items,->i_id, int, i_id, i );
@@ -899,17 +899,10 @@ static int DeleteInner( playlist_t * p_playlist, playlist_item_t *p_item,
         ARRAY_REMOVE( p_playlist->items, i );
 
     /* Check if it is the current item */
-    if( get_current_status_item( p_playlist ) == p_item )
+    if( get_current_status_item( p_playlist ) == p_item && b_stop )
     {
-        /* Hack we don't call playlist_Control for lock reasons */
-        if( b_stop )
-        {
-            pl_priv(p_playlist)->request.i_status = PLAYLIST_STOPPED;
-            pl_priv(p_playlist)->request.b_request = true;
-            pl_priv(p_playlist)->request.p_item = NULL;
-            msg_Info( p_playlist, "stopping playback" );
-            vlc_cond_signal( &pl_priv(p_playlist)->signal );
-        }
+        playlist_Control( p_playlist, PLAYLIST_STOP, pl_Locked );
+        msg_Info( p_playlist, "stopping playback" );
     }
 
     PL_DEBUG( "deleting item `%s'", p_item->p_input->psz_name );