[vlc-commits] playlist: remove use of playlist_item_t.p_playlist in callbacks

Rémi Denis-Courmont git at videolan.org
Fri Nov 18 21:40:16 CET 2016


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Fri Nov 18 22:33:00 2016 +0200| [85a79664409176c6521bba5ae97cd5a2f0b100a7] | committer: Rémi Denis-Courmont

playlist: remove use of playlist_item_t.p_playlist in callbacks

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

 src/playlist/item.c | 76 ++++++++++++++++++++++++-----------------------------
 1 file changed, 34 insertions(+), 42 deletions(-)

diff --git a/src/playlist/item.c b/src/playlist/item.c
index 4231cb9..dcab46c 100644
--- a/src/playlist/item.c
+++ b/src/playlist/item.c
@@ -58,7 +58,7 @@ static void input_item_add_subitem_tree ( const vlc_event_t * p_event,
                                           void * user_data )
 {
     input_item_t *p_input = p_event->p_obj;
-    playlist_t *p_playlist = (( playlist_item_t* ) user_data)->p_playlist;
+    playlist_t *p_playlist = user_data;
     playlist_private_t *p_sys = pl_priv( p_playlist );
     input_item_node_t *p_new_root = p_event->u.input_item_subitem_tree_added.p_root;
 
@@ -226,46 +226,9 @@ static void input_item_add_subitem_tree ( const vlc_event_t * p_event,
 static void input_item_changed( const vlc_event_t * p_event,
                                 void * user_data )
 {
-    playlist_item_t *p_item = user_data;
-    VLC_UNUSED( p_event );
-    var_SetAddress( p_item->p_playlist, "item-change", p_item->p_input );
-}
-
-/*****************************************************************************
- * Listen to vlc_InputItemAddSubItem event
- *****************************************************************************/
-static void install_input_item_observer( playlist_item_t * p_item )
-{
-    vlc_event_manager_t * p_em = &p_item->p_input->event_manager;
-    vlc_event_attach( p_em, vlc_InputItemSubItemTreeAdded,
-                      input_item_add_subitem_tree, p_item );
-    vlc_event_attach( p_em, vlc_InputItemDurationChanged,
-                      input_item_changed, p_item );
-    vlc_event_attach( p_em, vlc_InputItemMetaChanged,
-                      input_item_changed, p_item );
-    vlc_event_attach( p_em, vlc_InputItemNameChanged,
-                      input_item_changed, p_item );
-    vlc_event_attach( p_em, vlc_InputItemInfoChanged,
-                      input_item_changed, p_item );
-    vlc_event_attach( p_em, vlc_InputItemErrorWhenReadingChanged,
-                      input_item_changed, p_item );
-}
+    playlist_t *p_playlist = user_data;
 
-static void uninstall_input_item_observer( playlist_item_t * p_item )
-{
-    vlc_event_manager_t * p_em = &p_item->p_input->event_manager;
-    vlc_event_detach( p_em, vlc_InputItemSubItemTreeAdded,
-                      input_item_add_subitem_tree, p_item );
-    vlc_event_detach( p_em, vlc_InputItemMetaChanged,
-                      input_item_changed, p_item );
-    vlc_event_detach( p_em, vlc_InputItemDurationChanged,
-                      input_item_changed, p_item );
-    vlc_event_detach( p_em, vlc_InputItemNameChanged,
-                      input_item_changed, p_item );
-    vlc_event_detach( p_em, vlc_InputItemInfoChanged,
-                      input_item_changed, p_item );
-    vlc_event_detach( p_em, vlc_InputItemErrorWhenReadingChanged,
-                      input_item_changed, p_item );
+    var_SetAddress( p_playlist, "item-change", p_event->p_obj );
 }
 
 static int playlist_ItemCmpId( const void *a, const void *b )
@@ -342,7 +305,22 @@ playlist_item_t *playlist_ItemNewFromInput( playlist_t *p_playlist,
 
     p->i_last_playlist_id = p_item->i_id;
     vlc_gc_incref( p_item->p_input );
-    install_input_item_observer( p_item );
+
+    vlc_event_manager_t *p_em = &p_item->p_input->event_manager;
+
+    vlc_event_attach( p_em, vlc_InputItemSubItemTreeAdded,
+                      input_item_add_subitem_tree, p_playlist );
+    vlc_event_attach( p_em, vlc_InputItemDurationChanged,
+                      input_item_changed, p_playlist );
+    vlc_event_attach( p_em, vlc_InputItemMetaChanged,
+                      input_item_changed, p_playlist );
+    vlc_event_attach( p_em, vlc_InputItemNameChanged,
+                      input_item_changed, p_playlist );
+    vlc_event_attach( p_em, vlc_InputItemInfoChanged,
+                      input_item_changed, p_playlist );
+    vlc_event_attach( p_em, vlc_InputItemErrorWhenReadingChanged,
+                      input_item_changed, p_playlist );
+
     return p_item;
 
 error:
@@ -365,7 +343,21 @@ void playlist_ItemRelease( playlist_t *p_playlist, playlist_item_t *p_item )
 
     PL_ASSERT_LOCKED;
 
-    uninstall_input_item_observer( p_item );
+    vlc_event_manager_t *p_em = &p_item->p_input->event_manager;
+
+    vlc_event_detach( p_em, vlc_InputItemSubItemTreeAdded,
+                      input_item_add_subitem_tree, p_playlist );
+    vlc_event_detach( p_em, vlc_InputItemMetaChanged,
+                      input_item_changed, p_playlist );
+    vlc_event_detach( p_em, vlc_InputItemDurationChanged,
+                      input_item_changed, p_playlist );
+    vlc_event_detach( p_em, vlc_InputItemNameChanged,
+                      input_item_changed, p_playlist );
+    vlc_event_detach( p_em, vlc_InputItemInfoChanged,
+                      input_item_changed, p_playlist );
+    vlc_event_detach( p_em, vlc_InputItemErrorWhenReadingChanged,
+                      input_item_changed, p_playlist );
+
     vlc_gc_decref( p_item->p_input );
 
     tdelete( p_item, &p->input_tree, playlist_ItemCmpInput );



More information about the vlc-commits mailing list