]> git.sesse.net Git - vlc/commitdiff
Fixed spu_t attach/detach sequence.
authorLaurent Aimar <fenrir@videolan.org>
Wed, 8 Apr 2009 21:30:31 +0000 (23:30 +0200)
committerLaurent Aimar <fenrir@videolan.org>
Wed, 8 Apr 2009 21:30:31 +0000 (23:30 +0200)
It should fix #2622 (segfault with vout-filter).

src/video_output/video_output.c
src/video_output/vout_subpictures.c

index 4677358d06a2a8354542d9bcffdab8914fdc41af..8dd1d601ef3d70cb6dda8c6c8a7ab466a003b698 100644 (file)
@@ -271,10 +271,11 @@ vout_thread_t *__vout_Request( vlc_object_t *p_this, vout_thread_t *p_vout,
         {
             msg_Dbg( p_this, "reusing provided vout" );
 
-            spu_Attach( p_vout->p_spu, p_this, true );
-
+            spu_Attach( p_vout->p_spu, VLC_OBJECT(p_vout), false );
             vlc_object_detach( p_vout );
+
             vlc_object_attach( p_vout, p_this );
+            spu_Attach( p_vout->p_spu, VLC_OBJECT(p_vout), true );
         }
     }
 
@@ -418,13 +419,15 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt )
 
     /* Initialize subpicture unit */
     p_vout->p_spu = spu_Create( p_vout );
-    spu_Attach( p_vout->p_spu, p_parent, true );
 
     /* Attach the new object now so we can use var inheritance below */
     vlc_object_attach( p_vout, p_parent );
 
+    /* */
     spu_Init( p_vout->p_spu );
 
+    spu_Attach( p_vout->p_spu, VLC_OBJECT(p_vout), true );
+
     /* Take care of some "interface/control" related initialisations */
     vout_IntfInit( p_vout );
 
index 1dc316ff4acad44e91874373a14d2dc3d887a161..393b4bbcec3d1de87bc771e50e4f65ae9e7d29ff 100644 (file)
@@ -300,7 +300,8 @@ void spu_Attach( spu_t *p_spu, vlc_object_t *p_this, bool b_attach )
     vlc_object_t *p_input;
 
     p_input = vlc_object_find( p_this, VLC_OBJECT_INPUT, FIND_PARENT );
-    if( !p_input ) return;
+    if( !p_input )
+        return;
 
     if( b_attach )
     {