]> git.sesse.net Git - vlc/commitdiff
decoder: remove decoder_DeleteSubpicture() and fix a leak
authorRémi Denis-Courmont <remi@remlab.net>
Sat, 1 Nov 2014 16:30:39 +0000 (18:30 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Sat, 1 Nov 2014 16:31:01 +0000 (18:31 +0200)
include/vlc_codec.h
modules/codec/cvdsub.c
modules/codec/kate.c
modules/codec/libass.c
modules/codec/spudec/parse.c
modules/codec/svcdsub.c
modules/codec/telx.c
modules/codec/zvbi.c
modules/stream_out/transcode/spu.c
src/input/decoder.c
src/libvlccore.sym

index 7c439923e450a6ecd1d1fadb3ce7a4c31e129956..8f331652e3e6a68748616ac99a6d9fc759dd33fa 100644 (file)
@@ -109,9 +109,8 @@ struct decoder_t
     int             (*pf_aout_format_update)( decoder_t * );
 
     /* SPU output callbacks
-     * XXX use decoder_NewSubpicture and decoder_DeleteSubpicture */
+     * XXX use decoder_NewSubpicture */
     subpicture_t   *(*pf_spu_buffer_new)( decoder_t *, const subpicture_updater_t * );
-    void            (*pf_spu_buffer_del)( decoder_t *, subpicture_t * );
 
     /* Input attachments
      * XXX use decoder_GetInputAttachments */
@@ -218,16 +217,11 @@ VLC_API block_t * decoder_NewAudioBuffer( decoder_t *, int i_size ) VLC_USED;
 
 /**
  * This function will return a new subpicture usable by a decoder as an output
- * buffer. You have to release it using decoder_DeleteSubpicture or by returning
+ * buffer. You have to release it using subpicture_Delete() or by returning
  * it to the caller as a pf_decode_sub return value.
  */
 VLC_API subpicture_t * decoder_NewSubpicture( decoder_t *, const subpicture_updater_t * ) VLC_USED;
 
-/**
- * This function will release a subpicture created by decoder_NewSubicture.
- */
-VLC_API void decoder_DeleteSubpicture( decoder_t *, subpicture_t *p_subpicture );
-
 /**
  * This function gives all input attachments at once.
  *
index aaaa2035e66ef403d841887f687b1d55552e7dde..21098b16c438aa8c6e6ef4c9218cc325bc15f72f 100644 (file)
@@ -526,7 +526,7 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, block_t *p_data )
     if( !p_region )
     {
         msg_Err( p_dec, "cannot allocate SPU region" );
-        decoder_DeleteSubpicture( p_dec, p_spu );
+        subpicture_Delete( p_spu );
         return NULL;
     }
 
index 93cbb3d48f372909d1ce88f3ee5da4eadb447b93..b006ddc73ef90cb33e638048977e4526b0e6e787 100644 (file)
@@ -1261,7 +1261,7 @@ static subpicture_t *SetupSimpleKateSPU( decoder_t *p_dec, subpicture_t *p_spu,
         if( !p_bitmap_region )
         {
             msg_Err( p_dec, "cannot allocate SPU region" );
-            decoder_DeleteSubpicture( p_dec, p_spu );
+            subpicture_Delete( p_dec, p_spu );
             return NULL;
         }
 
@@ -1283,7 +1283,7 @@ static subpicture_t *SetupSimpleKateSPU( decoder_t *p_dec, subpicture_t *p_spu,
         msg_Err( p_dec, "cannot allocate SPU region" );
         if( p_bitmap_region )
             subpicture_region_Delete( p_bitmap_region );
-        decoder_DeleteSubpicture( p_dec, p_spu );
+        subpicture_Delete( p_spu );
         return NULL;
     }
 
index 5590df15375907f1578337948e8d10c67c49d5f6..9ea4f382f7d622e945f2e61dccb0f03f26c2faf0 100644 (file)
@@ -350,7 +350,7 @@ static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
     p_spu_sys->i_pts = p_block->i_pts;
     if( !p_spu_sys->p_subs_data )
     {
-        decoder_DeleteSubpicture( p_dec, p_spu );
+        subpicture_Delete( p_spu );
         block_Release( p_block );
         return NULL;
     }
index ccc8cb6f0ffbe0b6a1b7a9636d7def2275241c77..60ed0dd37edf51e0a6d9989b048dc47fda0dea7b 100644 (file)
@@ -113,7 +113,7 @@ subpicture_t * ParsePacket( decoder_t *p_dec )
     if( ParseControlSeq( p_dec, p_spu, &spu_data, &spu_properties, p_sys->i_pts ) )
     {
         /* There was a parse error, delete the subpicture */
-        decoder_DeleteSubpicture( p_dec, p_spu );
+        subpicture_Delete( p_spu );
         return NULL;
     }
 
@@ -131,7 +131,7 @@ subpicture_t * ParsePacket( decoder_t *p_dec )
     if( ParseRLE( p_dec, &spu_data, &spu_properties ) )
     {
         /* There was a parse error, delete the subpicture */
-        decoder_DeleteSubpicture( p_dec, p_spu );
+        subpicture_Delete( p_spu );
         free( spu_data.p_data );
         return NULL;
     }
index 953070b68b6e8727aeda88706dd4ef53e9bbf72e..574e2d4c9e2a586c0d8c3ca1a79d09559b77719c 100644 (file)
@@ -465,7 +465,7 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, block_t *p_data )
     if( !p_region )
     {
         msg_Err( p_dec, "cannot allocate SVCD subtitle region" );
-        decoder_DeleteSubpicture( p_dec, p_spu );
+        subpicture_Delete( p_spu );
         return NULL;
     }
 
index 95fa9dafd09550736ccb6049c6f306262311ac78..9e4228b37e0f80ed37ede5547ace176ba50819bc 100644 (file)
@@ -722,7 +722,7 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block )
 error:
     if ( p_spu != NULL )
     {
-        decoder_DeleteSubpicture( p_dec, p_spu );
+        subpicture_Delete( p_spu );
         p_spu = NULL;
     }
 
index 29db306a44f5a007b800627a44fda6ab4ab01142..2d2d32f4a3043626f4f9b9db578837c018d6b530 100644 (file)
@@ -523,7 +523,7 @@ static subpicture_t *Subpicture( decoder_t *p_dec, video_format_t *p_fmt,
     if( p_spu->p_region == NULL )
     {
         msg_Err( p_dec, "cannot allocate SPU region" );
-        decoder_DeleteSubpicture( p_dec, p_spu );
+        subpicture_Delete( p_spu );
         return NULL;
     }
 
index 50d9e2d73258e4d6eaafc90cc232dfa6de38a6d6..1250dcc9c1d5737a46a7fb0a0a8e0ebab78f7b4d 100644 (file)
@@ -45,11 +45,6 @@ static subpicture_t *spu_new_buffer( decoder_t *p_dec,
     return p_subpicture;
 }
 
-static void spu_del_buffer( decoder_t *p_dec, subpicture_t *p_subpic )
-{
-    VLC_UNUSED( p_dec );
-    subpicture_Delete( p_subpic );
-}
 int transcode_spu_new( sout_stream_t *p_stream, sout_stream_id_sys_t *id )
 {
     sout_stream_sys_t *p_sys = p_stream->p_sys;
@@ -61,7 +56,6 @@ int transcode_spu_new( sout_stream_t *p_stream, sout_stream_id_sys_t *id )
     /* Initialization of decoder structures */
     id->p_decoder->pf_decode_sub = NULL;
     id->p_decoder->pf_spu_buffer_new = spu_new_buffer;
-    id->p_decoder->pf_spu_buffer_del = spu_del_buffer;
     id->p_decoder->p_owner = (decoder_owner_sys_t *)p_stream;
     /* id->p_decoder->p_cfg = p_sys->p_spu_cfg; */
 
@@ -151,7 +145,7 @@ int transcode_spu_process( sout_stream_t *p_stream,
         block_t *p_block;
 
         p_block = id->p_encoder->pf_encode_sub( id->p_encoder, p_subpic );
-        spu_del_buffer( id->p_decoder, p_subpic );
+        subpicture_Delete( p_subpic );
         if( p_block )
         {
             block_ChainAppend( out, p_block );
index 7c0c7850e9d0db455a7b22ebc9911ed8c768fbb9..fd615d767a654c4bdd2651a6c17f0d787ebf8d42 100644 (file)
@@ -70,7 +70,6 @@ static int vout_update_format( decoder_t * );
 static picture_t *vout_new_buffer( decoder_t * );
 static int aout_update_format( decoder_t * );
 static subpicture_t *spu_new_buffer( decoder_t *, const subpicture_updater_t * );
-static void spu_del_buffer( decoder_t *, subpicture_t * );
 
 struct decoder_owner_sys_t
 {
@@ -192,11 +191,6 @@ subpicture_t *decoder_NewSubpicture( decoder_t *p_decoder,
     return p_subpicture;
 }
 
-void decoder_DeleteSubpicture( decoder_t *p_decoder, subpicture_t *p_subpicture )
-{
-    p_decoder->pf_spu_buffer_del( p_decoder, p_subpicture );
-}
-
 /* decoder_GetInputAttachments:
  */
 int decoder_GetInputAttachments( decoder_t *p_dec,
@@ -770,7 +764,6 @@ static decoder_t * CreateDecoder( vlc_object_t *p_parent,
     p_dec->pf_vout_format_update = vout_update_format;
     p_dec->pf_vout_buffer_new = vout_new_buffer;
     p_dec->pf_spu_buffer_new  = spu_new_buffer;
-    p_dec->pf_spu_buffer_del  = spu_del_buffer;
     /* */
     p_dec->pf_get_attachments  = DecoderGetInputAttachments;
     p_dec->pf_get_display_date = DecoderGetDisplayDate;
@@ -2218,22 +2211,3 @@ static subpicture_t *spu_new_buffer( decoder_t *p_dec,
 
     return p_subpic;
 }
-
-static void spu_del_buffer( decoder_t *p_dec, subpicture_t *p_subpic )
-{
-    decoder_owner_sys_t *p_owner = p_dec->p_owner;
-    vout_thread_t *p_vout = NULL;
-
-    p_vout = input_resource_HoldVout( p_owner->p_resource );
-    if( !p_vout || p_owner->p_spu_vout != p_vout )
-    {
-        if( p_vout )
-            vlc_object_release( p_vout );
-        msg_Warn( p_dec, "no vout found, leaking subpicture" );
-        return;
-    }
-
-    subpicture_Delete( p_subpic );
-
-    vlc_object_release( p_vout );
-}
index dcf591df06f5cea7ca53bb7932bc066dc06ff52b..b53ad9dfa66b18d3bc1aba78ea4b8beaea526c0d 100644 (file)
@@ -72,7 +72,6 @@ date_Increment
 date_Init
 date_Move
 date_Set
-decoder_DeleteSubpicture
 decoder_GetDisplayDate
 decoder_GetDisplayRate
 decoder_GetInputAttachments