]> git.sesse.net Git - vlc/blobdiff - src/input/control.c
* src/input/input.c: fixed memory leak.
[vlc] / src / input / control.c
index 792818291a6a7804c89e95fa6b7ec34ac98aaae3..aa89488aeebedf681acc61cab9e5a353c7b7e67c 100644 (file)
@@ -131,7 +131,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
 
         case INPUT_ADD_INFO:
         {
-            /* FIXME : Impossible to use vlc_input_item_AddInfo because of
+            /* FIXME : Impossible to use input_ItemAddInfo because of
              * the ... problem ? */
             char *psz_cat = (char *)va_arg( args, char * );
             char *psz_name = (char *)va_arg( args, char * );
@@ -195,7 +195,8 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
 
             vlc_mutex_unlock( &p_input->input.p_item->lock );
 
-            NotifyPlaylist( p_input );
+            if( !p_input->b_preparsing )
+                NotifyPlaylist( p_input );
         }
         return VLC_SUCCESS;
 
@@ -240,7 +241,8 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             if( i >= p_cat->i_infos )
                 return VLC_EGENERIC;
 
-            NotifyPlaylist( p_input );
+            if( !p_input->b_preparsing )
+                NotifyPlaylist( p_input );
         }
         return VLC_SUCCESS;
 
@@ -253,7 +255,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             int i_ret = VLC_EGENERIC;
             *ppsz_value = NULL;
 
-            *ppsz_value = vlc_input_item_GetInfo( p_input->input.p_item,
+            *ppsz_value = input_ItemGetInfo( p_input->input.p_item,
                                                   psz_cat, psz_name );
             return i_ret;
         }
@@ -270,7 +272,8 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             p_input->input.p_item->psz_name = strdup( psz_name );
             vlc_mutex_unlock( &p_input->input.p_item->lock );
 
-            NotifyPlaylist( p_input );
+            if( !p_input->b_preparsing )
+                NotifyPlaylist( p_input );
 
             return VLC_SUCCESS;
         }
@@ -530,15 +533,10 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
 
 static void NotifyPlaylist( input_thread_t *p_input )
 {
-    playlist_t *p_playlist =
-        (playlist_t *)vlc_object_find( p_input, VLC_OBJECT_PLAYLIST,
-                                       FIND_PARENT );
-    if( p_playlist )
-    {
-        var_SetInteger( p_playlist, "item-change",
-                        p_input->input.p_item->i_id );
-        vlc_object_release( p_playlist );
-    }
+    playlist_t *p_playlist = pl_Yield( p_input );
+    var_SetInteger( p_playlist, "item-change",
+                    p_input->input.p_item->i_id );
+    pl_Release( p_input );
 }
 
 static void UpdateBookmarksOption( input_thread_t *p_input )