]> git.sesse.net Git - vlc/commitdiff
Kill LibVLC children without the libvlc lock
authorRémi Denis-Courmont <rdenis@simphalempin.com>
Sat, 31 May 2008 16:37:20 +0000 (19:37 +0300)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Sat, 31 May 2008 16:37:20 +0000 (19:37 +0300)
src/misc/objects.c

index 4830eda23a3121f87ce06731e819b69081063827..b4f3a6dfc60e4f7bacfe3cd3e93f8631ff865692 100644 (file)
@@ -621,12 +621,16 @@ void __vlc_object_kill( vlc_object_t *p_this )
         close (fd);
     }
 
-    if( p_this->i_object_type == VLC_OBJECT_LIBVLC )
-        for( int i = 0; i < internals->i_children ; i++ )
-            vlc_object_kill( internals->pp_children[i] );
-
     vlc_object_signal_unlocked( p_this );
     vlc_mutex_unlock( &p_this->object_lock );
+
+    if (p_this->i_object_type == VLC_OBJECT_LIBVLC)
+    {
+        vlc_list_t *children = vlc_list_children (p_this);
+        for (int i = 0; i < children->i_count; i++)
+            vlc_object_kill (children->p_values[i].p_object);
+        vlc_list_release (children);
+    }
 }