]> git.sesse.net Git - vlc/commitdiff
audio_output: Use a destructor.
authorPierre d'Herbemont <pdherbemont@videolan.org>
Wed, 28 May 2008 01:06:14 +0000 (03:06 +0200)
committerPierre d'Herbemont <pdherbemont@videolan.org>
Wed, 28 May 2008 01:06:44 +0000 (03:06 +0200)
src/audio_output/aout_internal.h
src/audio_output/common.c
src/input/decoder.c

index b1d71bf75caf564fe5faa0d8789249265afeaed3..d5442fdc198a0757e6da86d5ef42392f2793aa06 100644 (file)
@@ -110,8 +110,8 @@ void aout_OutputDelete( aout_instance_t * p_aout );
 
 /* From common.c : */
 #define aout_New(a) __aout_New(VLC_OBJECT(a))
+/* Release with vlc_object_release() */
 aout_instance_t * __aout_New ( vlc_object_t * );
-void aout_Delete ( aout_instance_t * );
 
 void aout_FifoInit( aout_instance_t *, aout_fifo_t *, uint32_t );
 mtime_t aout_FifoNextStart( aout_instance_t *, aout_fifo_t * );
index 742b1b174f6c2ed86547a3be2ea53370b7375ddf..672819441ef73f9396ab2a6093baa0b6f7236273 100644 (file)
@@ -36,6 +36,9 @@
  * Instances management (internal and external)
  */
 
+/* Local functions */
+static void aout_Destructor( vlc_object_t * p_this );
+
 /*****************************************************************************
  * aout_New: initialize aout structure
  *****************************************************************************/
@@ -65,16 +68,17 @@ aout_instance_t * __aout_New( vlc_object_t * p_parent )
     val.b_bool = true;
     var_Set( p_aout, "intf-change", val );
 
+    vlc_object_set_destructor( p_parent, aout_Destructor );
+
     return p_aout;
 }
 
 /*****************************************************************************
- * aout_Delete: destroy aout structure
+ * aout_Destructor: destroy aout structure
  *****************************************************************************/
-void aout_Delete( aout_instance_t * p_aout )
+static void aout_Destructor( vlc_object_t * p_this )
 {
-    var_Destroy( p_aout, "intf-change" );
-
+    aout_instance_t * p_aout = (aout_instance_t *)p_this;
     vlc_mutex_destroy( &p_aout->input_fifos_lock );
     vlc_mutex_destroy( &p_aout->mixer_lock );
     vlc_mutex_destroy( &p_aout->output_fifo_lock );
index d7768c2dd4b516e2e5d501fd9e47ae82665d6e48..6955f7f93b5a8000cf37800a5e354024d1fb34de 100644 (file)
@@ -988,7 +988,7 @@ static void DeleteDecoder( decoder_t * p_dec )
         aout_DecDelete( p_dec->p_owner->p_aout, p_dec->p_owner->p_aout_input );
     if( p_dec->p_owner->p_aout )
     {
-        aout_Delete( p_dec->p_owner->p_aout );
+        vlc_object_release( p_dec->p_owner->p_aout );
         p_dec->p_owner->p_aout = NULL;
     }
     if( p_dec->p_owner->p_vout )