From: Pierre d'Herbemont Date: Tue, 26 Feb 2008 00:29:12 +0000 (+0000) Subject: misc/objects.c: Don't rely on vlc_object_destroy() to destroy objects, but expects... X-Git-Tag: 0.9.0-test0~2482 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=a78e273ec53ff8a6c3993f3deda0b893f8dd709a;p=vlc misc/objects.c: Don't rely on vlc_object_destroy() to destroy objects, but expects vlc_object_release to do it when the refcount goes to zero. * Meaning, that when created objects gets a refcount to 1. * Destroying is instantaneous and we don't have to poll for a few secondss or so to wait until the object's refcount reach 0. * We now track vlc_object_t's mem leaks when libvlc_global is released (Hard error for now, so they don't get unoticed) * We fail hard if an object is released with a refcount of 1 without being detached from its parent and its children, to make sure such cases don't go unoticed. (make test or make check still pass after that one. VLC is known to leak one object when no module is loaded, this must be fixed). --- diff --git a/include/vlc_demux.h b/include/vlc_demux.h index 5357cb4c1d..355baf533b 100644 --- a/include/vlc_demux.h +++ b/include/vlc_demux.h @@ -232,7 +232,7 @@ static inline vlc_bool_t demux2_IsForced( demux_t *p_demux, const char *psz_name module_Need( location, "packetizer", NULL, 0 ); \ if( location->p_module == NULL ) \ { \ - vlc_object_destroy( location ); \ + vlc_object_release( location ); \ msg_Err( p_demux, "cannot find packetizer for " # msg ); \ free( p_sys ); \ return VLC_EGENERIC; \ @@ -240,7 +240,7 @@ static inline vlc_bool_t demux2_IsForced( demux_t *p_demux, const char *psz_name #define DESTROY_PACKETIZER( location ) \ if( location->p_module ) module_Unneed( location, location->p_module ); \ - vlc_object_destroy( location ); + vlc_object_release( location ); /** * @} diff --git a/include/vlc_objects.h b/include/vlc_objects.h index 9d92472488..9f9244acf8 100644 --- a/include/vlc_objects.h +++ b/include/vlc_objects.h @@ -95,7 +95,6 @@ struct vlc_object_t * Prototypes *****************************************************************************/ VLC_EXPORT( void *, __vlc_object_create, ( vlc_object_t *, int ) ); -VLC_EXPORT( void, __vlc_object_destroy, ( vlc_object_t * ) ); VLC_EXPORT( void, __vlc_object_attach, ( vlc_object_t *, vlc_object_t * ) ); VLC_EXPORT( void, __vlc_object_detach, ( vlc_object_t * ) ); VLC_EXPORT( void *, vlc_object_get, ( int ) ); @@ -111,10 +110,6 @@ VLC_EXPORT( void, vlc_list_release, ( vlc_list_t * ) ); #define vlc_object_create(a,b) \ __vlc_object_create( VLC_OBJECT(a), b ) -#define vlc_object_destroy(a) do { \ - __vlc_object_destroy( VLC_OBJECT(a) ); \ - (a) = NULL; } while(0) - #define vlc_object_detach(a) \ __vlc_object_detach( VLC_OBJECT(a) ) diff --git a/modules/access/dv.c b/modules/access/dv.c index 3661483c1c..c16be7e10f 100644 --- a/modules/access/dv.c +++ b/modules/access/dv.c @@ -271,7 +271,7 @@ static void Close( vlc_object_t *p_this ) p_sys->p_ev->pp_last = &p_sys->p_frame; vlc_mutex_unlock( &p_sys->p_ev->lock ); } - vlc_object_destroy( p_sys->p_ev ); + vlc_object_release( p_sys->p_ev ); } if( p_sys->p_frame ) diff --git a/modules/access/dvdnav.c b/modules/access/dvdnav.c index 3f2d4cf505..79fe01dd05 100644 --- a/modules/access/dvdnav.c +++ b/modules/access/dvdnav.c @@ -357,7 +357,7 @@ static void Close( vlc_object_t *p_this ) /* stop the event handler */ vlc_object_kill( p_sys->p_ev ); vlc_thread_join( p_sys->p_ev ); - vlc_object_destroy( p_sys->p_ev ); + vlc_object_release( p_sys->p_ev ); var_Destroy( p_sys->p_input, "highlight-mutex" ); var_Destroy( p_sys->p_input, "highlight" ); diff --git a/modules/access_output/bonjour.c b/modules/access_output/bonjour.c index d4dbc1456a..908673e6f1 100644 --- a/modules/access_output/bonjour.c +++ b/modules/access_output/bonjour.c @@ -269,7 +269,7 @@ void *bonjour_start_service( vlc_object_t *p_log, const char *psz_stype, error: if( p_sys->poll_thread != NULL ) - vlc_object_destroy( p_sys->poll_thread ); + vlc_object_release( p_sys->poll_thread ); if( p_sys->client != NULL ) avahi_client_free( p_sys->client ); if( p_sys->simple_poll != NULL ) @@ -295,7 +295,7 @@ void bonjour_stop_service( void *_p_sys ) vlc_object_kill( p_sys->poll_thread ); vlc_thread_join( p_sys->poll_thread ); - vlc_object_destroy( p_sys->poll_thread ); + vlc_object_release( p_sys->poll_thread ); if( p_sys->group != NULL ) avahi_entry_group_free( p_sys->group ); diff --git a/modules/access_output/udp.c b/modules/access_output/udp.c index 0d9277daa0..40964d4e69 100644 --- a/modules/access_output/udp.c +++ b/modules/access_output/udp.c @@ -232,7 +232,7 @@ static int Open( vlc_object_t *p_this ) if( i_handle == -1 ) { msg_Err( p_access, "failed to create raw UDP socket" ); - vlc_object_destroy (p_sys->p_thread); + vlc_object_release (p_sys->p_thread); free (p_sys); return VLC_EGENERIC; } @@ -271,7 +271,7 @@ static int Open( vlc_object_t *p_this ) { msg_Err( p_access->p_sout, "cannot spawn sout access thread" ); net_Close (i_handle); - vlc_object_destroy( p_sys->p_thread ); + vlc_object_release( p_sys->p_thread ); free (p_sys); return VLC_EGENERIC; } @@ -316,7 +316,7 @@ static void Close( vlc_object_t * p_this ) net_Close( p_sys->p_thread->i_handle ); vlc_object_detach( p_sys->p_thread ); - vlc_object_destroy( p_sys->p_thread ); + vlc_object_release( p_sys->p_thread ); /* update p_sout->i_out_pace_nocontrol */ p_access->p_sout->i_out_pace_nocontrol--; diff --git a/modules/audio_output/directx.c b/modules/audio_output/directx.c index f025028bc0..2117b6031b 100644 --- a/modules/audio_output/directx.c +++ b/modules/audio_output/directx.c @@ -374,7 +374,7 @@ static int OpenAudio( vlc_object_t *p_this ) { msg_Err( p_aout, "cannot create DirectSoundThread" ); CloseHandle( p_aout->output.p_sys->p_notif->event ); - vlc_object_destroy( p_aout->output.p_sys->p_notif ); + vlc_object_release( p_aout->output.p_sys->p_notif ); p_aout->output.p_sys->p_notif = NULL; goto error; } @@ -594,7 +594,7 @@ static void CloseAudio( vlc_object_t *p_this ) if( !p_sys->b_playing ) SetEvent( p_sys->p_notif->event ); vlc_thread_join( p_sys->p_notif ); - vlc_object_destroy( p_sys->p_notif ); + vlc_object_release( p_sys->p_notif ); } /* release the secondary buffer */ diff --git a/modules/audio_output/waveout.c b/modules/audio_output/waveout.c index b7efbe2c41..ef04607021 100644 --- a/modules/audio_output/waveout.c +++ b/modules/audio_output/waveout.c @@ -495,7 +495,7 @@ static void Close( vlc_object_t *p_this ) /* wake up the audio thread */ SetEvent( p_sys->event ); vlc_thread_join( p_sys->p_notif ); - vlc_object_destroy( p_sys->p_notif ); + vlc_object_release( p_sys->p_notif ); CloseHandle( p_sys->event ); /* Close the device */ diff --git a/modules/codec/ffmpeg/chroma.c b/modules/codec/ffmpeg/chroma.c index 669bf0bd8f..66e6ff405b 100644 --- a/modules/codec/ffmpeg/chroma.c +++ b/modules/codec/ffmpeg/chroma.c @@ -300,7 +300,7 @@ int E_(OpenChroma)( vlc_object_t *p_this ) if( !p_sys->p_swscaler->p_module || !p_sys->p_swscaler->p_owner ) { vlc_object_detach( p_sys->p_swscaler ); - vlc_object_destroy( p_sys->p_swscaler ); + vlc_object_release( p_sys->p_swscaler ); free( p_vout->chroma.p_sys ); return VLC_EGENERIC; } @@ -355,7 +355,7 @@ void E_(CloseChroma)( vlc_object_t *p_this ) free( p_sys->p_swscaler->p_owner ); module_Unneed( p_sys->p_swscaler, p_sys->p_swscaler->p_module ); vlc_object_detach( p_sys->p_swscaler ); - vlc_object_destroy( p_sys->p_swscaler ); + vlc_object_release( p_sys->p_swscaler ); p_sys->p_swscaler= NULL; } free( p_vout->chroma.p_sys ); diff --git a/modules/codec/ffmpeg/encoder.c b/modules/codec/ffmpeg/encoder.c index a126b9f327..c0ec8c827f 100644 --- a/modules/codec/ffmpeg/encoder.c +++ b/modules/codec/ffmpeg/encoder.c @@ -1036,7 +1036,7 @@ void E_(CloseEncoder)( vlc_object_t *p_this ) vlc_thread_join( pp_contexts[i] ); vlc_mutex_destroy( &pp_contexts[i]->lock ); vlc_cond_destroy( &pp_contexts[i]->cond ); - vlc_object_destroy( pp_contexts[i] ); + vlc_object_release( pp_contexts[i] ); } free( pp_contexts ); diff --git a/modules/demux/flac.c b/modules/demux/flac.c index 4995da366f..9be5869b68 100644 --- a/modules/demux/flac.c +++ b/modules/demux/flac.c @@ -152,7 +152,7 @@ static int Open( vlc_object_t * p_this ) { if( p_sys->p_packetizer->fmt_in.p_extra ) free( p_sys->p_packetizer->fmt_in.p_extra ); - vlc_object_destroy( p_sys->p_packetizer ); + vlc_object_release( p_sys->p_packetizer ); msg_Err( p_demux, "cannot find flac packetizer" ); return VLC_EGENERIC; @@ -193,7 +193,7 @@ static void Close( vlc_object_t * p_this ) free( p_sys->p_packetizer->fmt_in.p_extra ); /* Delete the decoder */ - vlc_object_destroy( p_sys->p_packetizer ); + vlc_object_release( p_sys->p_packetizer ); if( p_sys->p_meta ) vlc_meta_Delete( p_sys->p_meta ); free( p_sys ); diff --git a/modules/demux/live555.cpp b/modules/demux/live555.cpp index e965cd0750..710aa6a04b 100644 --- a/modules/demux/live555.cpp +++ b/modules/demux/live555.cpp @@ -398,7 +398,7 @@ error: vlc_object_kill( p_sys->p_timeout ); vlc_thread_join( p_sys->p_timeout ); vlc_object_detach( p_sys->p_timeout ); - vlc_object_destroy( p_sys->p_timeout ); + vlc_object_release( p_sys->p_timeout ); } if( p_sys->scheduler ) delete p_sys->scheduler; if( p_sys->p_sdp ) free( p_sys->p_sdp ); @@ -439,7 +439,7 @@ static void Close( vlc_object_t *p_this ) vlc_object_kill( p_sys->p_timeout ); vlc_thread_join( p_sys->p_timeout ); vlc_object_detach( p_sys->p_timeout ); - vlc_object_destroy( p_sys->p_timeout ); + vlc_object_release( p_sys->p_timeout ); } if( p_sys->scheduler ) delete p_sys->scheduler; if( p_sys->p_sdp ) free( p_sys->p_sdp ); @@ -1033,7 +1033,7 @@ static int Play( demux_t *p_demux ) VLC_THREAD_PRIORITY_LOW, VLC_TRUE ) ) { msg_Err( p_demux, "cannot spawn liveMedia timeout thread" ); - vlc_object_destroy( p_sys->p_timeout ); + vlc_object_release( p_sys->p_timeout ); } msg_Dbg( p_demux, "spawned timeout thread" ); vlc_object_attach( p_sys->p_timeout, p_demux ); diff --git a/modules/demux/mkv.cpp b/modules/demux/mkv.cpp index 344fdb4792..e0ea9a7a3f 100644 --- a/modules/demux/mkv.cpp +++ b/modules/demux/mkv.cpp @@ -2693,7 +2693,7 @@ void demux_sys_t::StopUiThread() { vlc_object_kill( p_ev ); vlc_thread_join( p_ev ); - vlc_object_destroy( p_ev ); + vlc_object_release( p_ev ); p_ev = NULL; diff --git a/modules/gui/fbosd.c b/modules/gui/fbosd.c index c1a7008fa5..9d72bcc901 100644 --- a/modules/gui/fbosd.c +++ b/modules/gui/fbosd.c @@ -546,7 +546,7 @@ static void CloseBlending( intf_thread_t *p_intf ) p_intf->p_sys->p_blend->p_module ); vlc_object_detach( p_intf->p_sys->p_blend ); - vlc_object_destroy( p_intf->p_sys->p_blend ); + vlc_object_release( p_intf->p_sys->p_blend ); } } #endif @@ -597,7 +597,7 @@ static void CloseTextRenderer( intf_thread_t *p_intf ) p_intf->p_sys->p_text->p_module ); vlc_object_detach( p_intf->p_sys->p_text ); - vlc_object_destroy( p_intf->p_sys->p_text ); + vlc_object_release( p_intf->p_sys->p_text ); } } #if 0 @@ -636,7 +636,7 @@ static int CloseScaling( intf_thread_t *p_intf ) p_intf->p_sys->p_scale->p_module ); vlc_object_detach( p_intf->p_sys->p_scale ); - vlc_object_destroy( p_intf->p_sys->p_scale ); + vlc_object_release( p_intf->p_sys->p_scale ); } } #endif diff --git a/modules/gui/skins2/src/dialogs.cpp b/modules/gui/skins2/src/dialogs.cpp index 968d6d6f35..732f7542c5 100644 --- a/modules/gui/skins2/src/dialogs.cpp +++ b/modules/gui/skins2/src/dialogs.cpp @@ -116,7 +116,7 @@ Dialogs::~Dialogs() vlc_object_detach( m_pProvider ); module_Unneed( m_pProvider, m_pModule ); - vlc_object_destroy( m_pProvider ); + vlc_object_release( m_pProvider ); } /* Unregister callbacks */ @@ -170,7 +170,7 @@ bool Dialogs::init() if( m_pModule == NULL ) { msg_Err( getIntf(), "no suitable dialogs provider found (hint: compile the wxWidgets plugin, and make sure it is loaded properly)" ); - vlc_object_destroy( m_pProvider ); + vlc_object_release( m_pProvider ); m_pProvider = NULL; return false; } diff --git a/modules/misc/audioscrobbler.c b/modules/misc/audioscrobbler.c index b55052932e..c27c937f30 100644 --- a/modules/misc/audioscrobbler.c +++ b/modules/misc/audioscrobbler.c @@ -249,7 +249,7 @@ static void Unload( intf_thread_t *p_this ) if( p_this->p_module ) module_Unneed( p_this, p_this->p_module ); vlc_mutex_destroy( &p_this->change_lock ); - vlc_object_destroy( p_this ); + vlc_object_release( p_this ); } /***************************************************************************** diff --git a/modules/misc/freetype.c b/modules/misc/freetype.c index 35f0d8c0a7..99fa03e992 100644 --- a/modules/misc/freetype.c +++ b/modules/misc/freetype.c @@ -408,7 +408,7 @@ static int Create( vlc_object_t *p_this ) } else { - vlc_object_destroy( p_fontbuilder ); + vlc_object_release( p_fontbuilder ); } } else diff --git a/modules/misc/gnutls.c b/modules/misc/gnutls.c index 29c8ccfcb2..fcccbe4782 100644 --- a/modules/misc/gnutls.c +++ b/modules/misc/gnutls.c @@ -936,7 +936,7 @@ gnutls_SessionClose (tls_server_t *p_server, tls_session_t *p_session) gnutls_deinit( p_sys->session ); vlc_object_detach( p_session ); - vlc_object_destroy( p_session ); + vlc_object_release( p_session ); free( p_sys ); } @@ -960,7 +960,7 @@ gnutls_ServerSessionPrepare( tls_server_t *p_server ) p_session->p_sys = malloc( sizeof(struct tls_session_sys_t) ); if( p_session->p_sys == NULL ) { - vlc_object_destroy( p_session ); + vlc_object_release( p_session ); return NULL; } @@ -1016,7 +1016,7 @@ gnutls_ServerSessionPrepare( tls_server_t *p_server ) error: free( p_session->p_sys ); vlc_object_detach( p_session ); - vlc_object_destroy( p_session ); + vlc_object_release( p_session ); return NULL; } diff --git a/modules/misc/gtk_main.c b/modules/misc/gtk_main.c index 127e59e455..51cef4ade8 100644 --- a/modules/misc/gtk_main.c +++ b/modules/misc/gtk_main.c @@ -111,7 +111,7 @@ static int Open( vlc_object_t *p_this ) if( vlc_thread_create( p_gtk_main, "gtk_main", GtkMain, VLC_THREAD_PRIORITY_LOW, VLC_TRUE ) ) { - vlc_object_destroy( p_gtk_main ); + vlc_object_release( p_gtk_main ); i_refcount--; vlc_mutex_unlock( lock ); return VLC_ETHREAD; @@ -143,7 +143,7 @@ static void Close( vlc_object_t *p_this ) gtk_main_quit(); vlc_thread_join( p_gtk_main ); - vlc_object_destroy( p_gtk_main ); + vlc_object_release( p_gtk_main ); p_gtk_main = NULL; vlc_mutex_unlock( lock ); diff --git a/modules/misc/qte_main.cpp b/modules/misc/qte_main.cpp index 7926433a75..61f4c92799 100644 --- a/modules/misc/qte_main.cpp +++ b/modules/misc/qte_main.cpp @@ -105,7 +105,7 @@ static int Open( vlc_object_t *p_this ) if( vlc_thread_create( p_qte_main, "qte_main", QteMain, VLC_THREAD_PRIORITY_LOW, VLC_TRUE ) ) { - vlc_object_destroy( p_qte_main ); + vlc_object_release( p_qte_main ); i_refcount--; vlc_mutex_unlock( lock ); return VLC_ETHREAD; @@ -145,7 +145,7 @@ static void Close( vlc_object_t *p_this ) msg_Dbg( p_this, "Detaching qte_main" ); vlc_object_detach( p_qte_main ); - vlc_object_destroy( p_qte_main ); + vlc_object_release( p_qte_main ); p_qte_main = NULL; vlc_mutex_unlock( lock ); diff --git a/modules/misc/testsuite/test4.c b/modules/misc/testsuite/test4.c index bfad7400b2..2349da1365 100644 --- a/modules/misc/testsuite/test4.c +++ b/modules/misc/testsuite/test4.c @@ -181,7 +181,7 @@ static int Callback( vlc_object_t *p_this, char const *psz_cmd, vlc_object_kill( pp_objects[i] ); vlc_thread_join( pp_objects[i] ); vlc_object_detach( pp_objects[i] ); - vlc_object_destroy( pp_objects[i] ); + vlc_object_release( pp_objects[i] ); } /* Clean our mess */ @@ -313,7 +313,7 @@ static int Stress( vlc_object_t *p_this, char const *psz_cmd, printf( " - destroying the objects (LIFO)\n" ); for( i = MAXOBJ * i_level; i--; ) { - vlc_object_destroy( pp_objects[i] ); + vlc_object_release( pp_objects[i] ); } printf( "done (%fs).\n", (mdate() - start) / 1000000.0 ); @@ -393,7 +393,7 @@ static int Stress( vlc_object_t *p_this, char const *psz_cmd, { pp_objects[i]->b_die = VLC_TRUE; vlc_thread_join( pp_objects[i] ); - vlc_object_destroy( pp_objects[i] ); + vlc_object_release( pp_objects[i] ); } printf( "done (%fs).\n", (mdate() - start) / 1000000.0 ); @@ -428,7 +428,7 @@ static void * Dummy( vlc_object_t *p_this ) for( i = MAXOBJ/MAXTH; i--; ) { - vlc_object_destroy( pp_objects[i] ); + vlc_object_release( pp_objects[i] ); } return NULL; diff --git a/modules/stream_out/mosaic_bridge.c b/modules/stream_out/mosaic_bridge.c index db1e8dc3e5..c025744b53 100644 --- a/modules/stream_out/mosaic_bridge.c +++ b/modules/stream_out/mosaic_bridge.c @@ -308,7 +308,7 @@ static sout_stream_id_t * Add( sout_stream_t *p_stream, es_format_t *p_fmt ) { msg_Err( p_stream, "cannot find decoder" ); vlc_object_detach( p_sys->p_decoder ); - vlc_object_destroy( p_sys->p_decoder ); + vlc_object_release( p_sys->p_decoder ); return NULL; } @@ -417,7 +417,7 @@ static sout_stream_id_t * Add( sout_stream_t *p_stream, es_format_t *p_fmt ) "no video filter matching name \"%s\" found", psz_name ); vlc_object_detach( *pp_vfilter ); - vlc_object_destroy( *pp_vfilter ); + vlc_object_release( *pp_vfilter ); p_sys->i_vfilters--; } } @@ -448,7 +448,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id ) if( p_sys->p_decoder->p_module ) module_Unneed( p_sys->p_decoder, p_sys->p_decoder->p_module ); vlc_object_detach( p_sys->p_decoder ); - vlc_object_destroy( p_sys->p_decoder ); + vlc_object_release( p_sys->p_decoder ); for( i = 0; i < PICTURE_RING_SIZE; i++ ) { @@ -470,7 +470,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id ) vlc_object_detach( *pp_vfilter ); if( (*pp_vfilter)->p_module ) module_Unneed( *pp_vfilter, (*pp_vfilter)->p_module ); - vlc_object_destroy( *pp_vfilter ); + vlc_object_release( *pp_vfilter ); } free( p_sys->pp_vfilters ); diff --git a/modules/stream_out/rtp.c b/modules/stream_out/rtp.c index 785149835e..aded619baf 100644 --- a/modules/stream_out/rtp.c +++ b/modules/stream_out/rtp.c @@ -1210,7 +1210,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id ) if( p_sys->b_export_sdp_file ) FileSetup( p_stream ); vlc_object_detach( id ); - vlc_object_destroy( id ); + vlc_object_release( id ); return VLC_SUCCESS; } diff --git a/modules/stream_out/transcode.c b/modules/stream_out/transcode.c index 7b664991fd..ab067af54f 100644 --- a/modules/stream_out/transcode.c +++ b/modules/stream_out/transcode.c @@ -472,7 +472,7 @@ static int Open( vlc_object_t *p_this ) if( !p_sys->p_out ) { msg_Err( p_stream, "cannot create chain" ); - vlc_object_destroy( p_sys ); + vlc_object_release( p_sys ); return VLC_EGENERIC; } @@ -884,7 +884,7 @@ static void Close( vlc_object_t * p_this ) } if( p_sys->psz_osdenc ) free( p_sys->psz_osdenc ); - vlc_object_destroy( p_sys ); + vlc_object_release( p_sys ); } struct sout_stream_id_t @@ -1113,7 +1113,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt ) if( id->p_decoder ) { vlc_object_detach( id->p_decoder ); - vlc_object_destroy( id->p_decoder ); + vlc_object_release( id->p_decoder ); id->p_decoder = NULL; } @@ -1121,7 +1121,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt ) { vlc_object_detach( id->p_encoder ); es_format_Clean( &id->p_encoder->fmt_out ); - vlc_object_destroy( id->p_encoder ); + vlc_object_release( id->p_encoder ); id->p_encoder = NULL; } @@ -1157,7 +1157,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id ) if( id->p_decoder ) { vlc_object_detach( id->p_decoder ); - vlc_object_destroy( id->p_decoder ); + vlc_object_release( id->p_decoder ); id->p_decoder = NULL; } @@ -1165,7 +1165,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id ) { vlc_object_detach( id->p_encoder ); es_format_Clean( &id->p_encoder->fmt_out ); - vlc_object_destroy( id->p_encoder ); + vlc_object_release( id->p_encoder ); id->p_encoder = NULL; } free( id ); @@ -1301,7 +1301,7 @@ static filter_t *transcode_audio_filter_new( sout_stream_t *p_stream, else { vlc_object_detach( p_filter ); - vlc_object_destroy( p_filter ); + vlc_object_release( p_filter ); p_filter = 0; } @@ -1525,14 +1525,14 @@ static void transcode_audio_close( sout_stream_id_t *id ) vlc_object_detach( id->pp_filter[i] ); if( id->pp_filter[i]->p_module ) module_Unneed( id->pp_filter[i], id->pp_filter[i]->p_module ); - vlc_object_destroy( id->pp_filter[i] ); + vlc_object_release( id->pp_filter[i] ); } for( i = 0; i < id->i_ufilter; i++ ) { vlc_object_detach( id->pp_ufilter[i] ); if( id->pp_ufilter[i]->p_module ) module_Unneed( id->pp_ufilter[i], id->pp_ufilter[i]->p_module ); - vlc_object_destroy( id->pp_ufilter[i] ); + vlc_object_release( id->pp_ufilter[i] ); } } @@ -2110,7 +2110,7 @@ static void transcode_video_close( sout_stream_t *p_stream, id->pp_filter[i]->p_owner->pp_pics[j] ); } free( id->pp_filter[i]->p_owner ); - vlc_object_destroy( id->pp_filter[i] ); + vlc_object_release( id->pp_filter[i] ); id->pp_filter[i] = NULL; } @@ -2128,7 +2128,7 @@ static void transcode_video_close( sout_stream_t *p_stream, id->pp_ufilter[i]->p_owner->pp_pics[j] ); } free( id->pp_ufilter[i]->p_owner ); - vlc_object_destroy( id->pp_ufilter[i] ); + vlc_object_release( id->pp_ufilter[i] ); id->pp_ufilter[i] = NULL; } } @@ -2242,7 +2242,7 @@ static int transcode_video_process( sout_stream_t *p_stream, { msg_Dbg( p_stream, "no video filter found" ); vlc_object_detach( id->pp_filter[id->i_filter] ); - vlc_object_destroy( id->pp_filter[id->i_filter] ); + vlc_object_release( id->pp_filter[id->i_filter] ); } } @@ -2302,7 +2302,7 @@ static int transcode_video_process( sout_stream_t *p_stream, { msg_Dbg( p_stream, "no video filter found" ); vlc_object_detach( id->pp_filter[id->i_filter] ); - vlc_object_destroy( id->pp_filter[id->i_filter] ); + vlc_object_release( id->pp_filter[id->i_filter] ); p_pic->pf_release( p_pic ); transcode_video_close( p_stream, id ); @@ -2341,7 +2341,7 @@ static int transcode_video_process( sout_stream_t *p_stream, { msg_Dbg( p_stream, "no video filter found" ); vlc_object_detach( id->pp_ufilter[id->i_ufilter] ); - vlc_object_destroy( id->pp_ufilter[id->i_ufilter] ); + vlc_object_release( id->pp_ufilter[id->i_ufilter] ); id->pp_ufilter[id->i_ufilter] = NULL; } } diff --git a/modules/video_filter/atmo/AtmoThread.cpp b/modules/video_filter/atmo/AtmoThread.cpp index 706b4ce5c0..d9856e707a 100644 --- a/modules/video_filter/atmo/AtmoThread.cpp +++ b/modules/video_filter/atmo/AtmoThread.cpp @@ -51,7 +51,7 @@ CThread::~CThread(void) vlc_mutex_destroy( &m_TerminateLock ); vlc_cond_destroy( &m_TerminateCond ); vlc_object_detach(m_pAtmoThread); - vlc_object_destroy(m_pAtmoThread); + vlc_object_release(m_pAtmoThread); } } diff --git a/modules/video_filter/atmo/atmo.cpp b/modules/video_filter/atmo/atmo.cpp index ab57e94f6b..615fb0fabf 100644 --- a/modules/video_filter/atmo/atmo.cpp +++ b/modules/video_filter/atmo/atmo.cpp @@ -942,7 +942,7 @@ static void Atmo_Shutdown(filter_t *p_filter) VLC_FALSE ) ) { msg_Err( p_filter, "cannot create FadeToColorThread" ); - vlc_object_destroy( p_sys->p_fadethread ); + vlc_object_release( p_sys->p_fadethread ); p_sys->p_fadethread = NULL; vlc_mutex_unlock( &p_sys->filter_lock ); @@ -953,7 +953,7 @@ static void Atmo_Shutdown(filter_t *p_filter) /* wait for the thread... */ vlc_thread_join(p_sys->p_fadethread); - vlc_object_destroy(p_sys->p_fadethread); + vlc_object_release(p_sys->p_fadethread); p_sys->p_fadethread = NULL; } @@ -1841,7 +1841,7 @@ static void CheckAndStopFadeThread(filter_t *p_filter) vlc_thread_join(p_sys->p_fadethread); - vlc_object_destroy(p_sys->p_fadethread); + vlc_object_release(p_sys->p_fadethread); p_sys->p_fadethread = NULL; } vlc_mutex_unlock( &p_sys->filter_lock ); @@ -1897,7 +1897,7 @@ static int StateCallback( vlc_object_t *p_this, char const *psz_cmd, VLC_FALSE) ) { msg_Err( p_filter, "cannot create FadeToColorThread" ); - vlc_object_destroy( p_sys->p_fadethread ); + vlc_object_release( p_sys->p_fadethread ); p_sys->p_fadethread = NULL; } } diff --git a/modules/video_filter/logo.c b/modules/video_filter/logo.c index 49aad2d649..24325febf3 100644 --- a/modules/video_filter/logo.c +++ b/modules/video_filter/logo.c @@ -417,7 +417,7 @@ static int Init( vout_thread_t *p_vout ) { msg_Err( p_vout, "can't open blending filter, aborting" ); vlc_object_detach( p_sys->p_blend ); - vlc_object_destroy( p_sys->p_blend ); + vlc_object_release( p_sys->p_blend ); return VLC_EGENERIC; } @@ -498,7 +498,7 @@ static void End( vout_thread_t *p_vout ) if( p_sys->p_blend->p_module ) module_Unneed( p_sys->p_blend, p_sys->p_blend->p_module ); vlc_object_detach( p_sys->p_blend ); - vlc_object_destroy( p_sys->p_blend ); + vlc_object_release( p_sys->p_blend ); } /***************************************************************************** diff --git a/modules/video_filter/opencv_wrapper.c b/modules/video_filter/opencv_wrapper.c index 8b58811981..acbc6be8e2 100644 --- a/modules/video_filter/opencv_wrapper.c +++ b/modules/video_filter/opencv_wrapper.c @@ -343,7 +343,7 @@ static int Init( vout_thread_t *p_vout ) msg_Err( p_vout, "can't open internal opencv filter: %s", p_vout->p_sys->psz_inner_name ); p_vout->p_sys->psz_inner_name = NULL; vlc_object_detach( p_sys->p_opencv ); - vlc_object_destroy( p_sys->p_opencv ); + vlc_object_release( p_sys->p_opencv ); p_sys->p_opencv = NULL; } @@ -389,7 +389,7 @@ static void End( vout_thread_t *p_vout ) if( p_vout->p_sys->p_opencv->p_module ) module_Unneed( p_vout->p_sys->p_opencv, p_vout->p_sys->p_opencv->p_module ); vlc_object_detach( p_vout->p_sys->p_opencv ); - vlc_object_destroy( p_vout->p_sys->p_opencv ); + vlc_object_release( p_vout->p_sys->p_opencv ); p_vout->p_sys->p_opencv = NULL; } diff --git a/modules/video_output/msw/direct3d.c b/modules/video_output/msw/direct3d.c index b1e9a17b10..5d2a21b649 100644 --- a/modules/video_output/msw/direct3d.c +++ b/modules/video_output/msw/direct3d.c @@ -206,7 +206,7 @@ static int OpenVideo( vlc_object_t *p_this ) E_(EventThread), 0, 1 ) ) { msg_Err( p_vout, "cannot create Vout EventThread" ); - vlc_object_destroy( p_vout->p_sys->p_event ); + vlc_object_release( p_vout->p_sys->p_event ); p_vout->p_sys->p_event = NULL; goto error; } @@ -282,7 +282,7 @@ static void CloseVideo( vlc_object_t *p_this ) } vlc_thread_join( p_vout->p_sys->p_event ); - vlc_object_destroy( p_vout->p_sys->p_event ); + vlc_object_release( p_vout->p_sys->p_event ); } vlc_mutex_destroy( &p_vout->p_sys->lock ); diff --git a/modules/video_output/msw/directx.c b/modules/video_output/msw/directx.c index e2232468f3..915af9f1e2 100644 --- a/modules/video_output/msw/directx.c +++ b/modules/video_output/msw/directx.c @@ -281,7 +281,7 @@ static int OpenVideo( vlc_object_t *p_this ) E_(EventThread), 0, 1 ) ) { msg_Err( p_vout, "cannot create Vout EventThread" ); - vlc_object_destroy( p_vout->p_sys->p_event ); + vlc_object_release( p_vout->p_sys->p_event ); p_vout->p_sys->p_event = NULL; goto error; } @@ -505,7 +505,7 @@ static void CloseVideo( vlc_object_t *p_this ) } vlc_thread_join( p_vout->p_sys->p_event ); - vlc_object_destroy( p_vout->p_sys->p_event ); + vlc_object_release( p_vout->p_sys->p_event ); } vlc_mutex_destroy( &p_vout->p_sys->lock ); diff --git a/modules/video_output/msw/glwin32.c b/modules/video_output/msw/glwin32.c index 45c2fbd913..f7eec90539 100644 --- a/modules/video_output/msw/glwin32.c +++ b/modules/video_output/msw/glwin32.c @@ -138,7 +138,7 @@ static int OpenVideo( vlc_object_t *p_this ) E_(EventThread), 0, 1 ) ) { msg_Err( p_vout, "cannot create Vout EventThread" ); - vlc_object_destroy( p_vout->p_sys->p_event ); + vlc_object_release( p_vout->p_sys->p_event ); p_vout->p_sys->p_event = NULL; goto error; } @@ -237,7 +237,7 @@ static void CloseVideo( vlc_object_t *p_this ) } vlc_thread_join( p_vout->p_sys->p_event ); - vlc_object_destroy( p_vout->p_sys->p_event ); + vlc_object_release( p_vout->p_sys->p_event ); } vlc_mutex_destroy( &p_vout->p_sys->lock ); diff --git a/modules/video_output/msw/wingdi.c b/modules/video_output/msw/wingdi.c index 5cf577f539..f969312ff9 100755 --- a/modules/video_output/msw/wingdi.c +++ b/modules/video_output/msw/wingdi.c @@ -251,7 +251,7 @@ static int OpenVideo ( vlc_object_t *p_this ) E_(EventThread), 0, 1 ) ) { msg_Err( p_vout, "cannot create Vout EventThread" ); - vlc_object_destroy( p_vout->p_sys->p_event ); + vlc_object_release( p_vout->p_sys->p_event ); p_vout->p_sys->p_event = NULL; goto error; } @@ -325,7 +325,7 @@ static void CloseVideo ( vlc_object_t *p_this ) } vlc_thread_join( p_vout->p_sys->p_event ); - vlc_object_destroy( p_vout->p_sys->p_event ); + vlc_object_release( p_vout->p_sys->p_event ); } vlc_mutex_destroy( &p_vout->p_sys->lock ); diff --git a/modules/video_output/opengl.c b/modules/video_output/opengl.c index 72320ef05f..a8835a9ce4 100644 --- a/modules/video_output/opengl.c +++ b/modules/video_output/opengl.c @@ -302,7 +302,7 @@ static int CreateVout( vlc_object_t *p_this ) { msg_Warn( p_vout, "No OpenGL provider found" ); vlc_object_detach( p_sys->p_vout ); - vlc_object_destroy( p_sys->p_vout ); + vlc_object_release( p_sys->p_vout ); return VLC_ENOOBJ; } @@ -574,7 +574,7 @@ static void DestroyVout( vlc_object_t *p_this ) module_Unneed( p_sys->p_vout, p_sys->p_vout->p_module ); vlc_object_detach( p_sys->p_vout ); - vlc_object_destroy( p_sys->p_vout ); + vlc_object_release( p_sys->p_vout ); free( p_sys ); } diff --git a/modules/video_output/qte/qte.cpp b/modules/video_output/qte/qte.cpp index 4b07300b89..17600e6273 100644 --- a/modules/video_output/qte/qte.cpp +++ b/modules/video_output/qte/qte.cpp @@ -191,7 +191,7 @@ static void Close ( vlc_object_t *p_this ) CloseDisplay(p_vout); vlc_thread_join( p_vout->p_sys->p_event ); - vlc_object_destroy( p_vout->p_sys->p_event ); + vlc_object_release( p_vout->p_sys->p_event ); } #ifdef NEED_QTE_MAIN @@ -541,7 +541,7 @@ static int OpenDisplay( vout_thread_t *p_vout ) VLC_THREAD_PRIORITY_OUTPUT, VLC_TRUE) ) { msg_Err( p_vout, "cannot create QT Embedded Thread" ); - vlc_object_destroy( p_vout->p_sys->p_event ); + vlc_object_release( p_vout->p_sys->p_event ); p_vout->p_sys->p_event = NULL; return -1; } diff --git a/modules/visualization/galaktos/plugin.c b/modules/visualization/galaktos/plugin.c index 7346947135..c9672b83bc 100644 --- a/modules/visualization/galaktos/plugin.c +++ b/modules/visualization/galaktos/plugin.c @@ -125,7 +125,7 @@ static int Open( vlc_object_t *p_this ) msg_Err( p_filter, "cannot lauch galaktos thread" ); if( p_thread->psz_title ) free( p_thread->psz_title ); vlc_object_detach( p_thread ); - vlc_object_destroy( p_thread ); + vlc_object_release( p_thread ); free( p_sys ); return VLC_EGENERIC; } @@ -229,7 +229,7 @@ static void Thread( vlc_object_t *p_this ) { msg_Err( p_thread, "unable to initialize OpenGL" ); vlc_object_detach( p_thread->p_opengl ); - vlc_object_destroy( p_thread->p_opengl ); + vlc_object_release( p_thread->p_opengl ); return; } @@ -270,7 +270,7 @@ static void Thread( vlc_object_t *p_this ) /* Free the openGL provider */ module_Unneed( p_thread->p_opengl, p_thread->p_module ); vlc_object_detach( p_thread->p_opengl ); - vlc_object_destroy( p_thread->p_opengl ); + vlc_object_release( p_thread->p_opengl ); } /***************************************************************************** @@ -290,7 +290,7 @@ static void Close( vlc_object_t *p_this ) /* Free data */ vlc_object_detach( p_sys->p_thread ); - vlc_object_destroy( p_sys->p_thread ); + vlc_object_release( p_sys->p_thread ); free( p_sys ); } diff --git a/modules/visualization/goom.c b/modules/visualization/goom.c index 03a424b803..3148584aa9 100644 --- a/modules/visualization/goom.c +++ b/modules/visualization/goom.c @@ -177,7 +177,7 @@ static int Open( vlc_object_t *p_this ) { msg_Err( p_filter, "no suitable vout module" ); vlc_object_detach( p_thread ); - vlc_object_destroy( p_thread ); + vlc_object_release( p_thread ); free( p_sys ); return VLC_EGENERIC; } @@ -200,7 +200,7 @@ static int Open( vlc_object_t *p_this ) vlc_cond_destroy( &p_thread->wait ); if( p_thread->psz_title ) free( p_thread->psz_title ); vlc_object_detach( p_thread ); - vlc_object_destroy( p_thread ); + vlc_object_release( p_thread ); free( p_sys ); return VLC_EGENERIC; } @@ -405,7 +405,7 @@ static void Close( vlc_object_t *p_this ) block_Release( p_sys->p_thread->pp_blocks[p_sys->p_thread->i_blocks] ); } - vlc_object_destroy( p_sys->p_thread ); + vlc_object_release( p_sys->p_thread ); free( p_sys ); } diff --git a/src/audio_output/common.c b/src/audio_output/common.c index d668742f01..fe1887571e 100644 --- a/src/audio_output/common.c +++ b/src/audio_output/common.c @@ -80,7 +80,7 @@ void aout_Delete( aout_instance_t * p_aout ) vlc_mutex_destroy( &p_aout->output_fifo_lock ); /* Free structure. */ - vlc_object_destroy( p_aout ); + vlc_object_release( p_aout ); } diff --git a/src/audio_output/filters.c b/src/audio_output/filters.c index 9563f3551b..136212379d 100644 --- a/src/audio_output/filters.c +++ b/src/audio_output/filters.c @@ -58,7 +58,7 @@ static aout_filter_t * FindFilter( aout_instance_t * p_aout, if ( p_filter->p_module == NULL ) { vlc_object_detach( p_filter ); - vlc_object_destroy( p_filter ); + vlc_object_release( p_filter ); return NULL; } @@ -122,7 +122,7 @@ static void ReleaseFilter( aout_filter_t * p_filter ) { module_Unneed( p_filter, p_filter->p_module ); vlc_object_detach( p_filter ); - vlc_object_destroy( p_filter ); + vlc_object_release( p_filter ); } /***************************************************************************** @@ -273,7 +273,7 @@ void aout_FiltersDestroyPipeline( aout_instance_t * p_aout, { module_Unneed( pp_filters[i], pp_filters[i]->p_module ); vlc_object_detach( pp_filters[i] ); - vlc_object_destroy( pp_filters[i] ); + vlc_object_release( pp_filters[i] ); } } diff --git a/src/audio_output/input.c b/src/audio_output/input.c index 121b8f4263..c233a6e2d5 100644 --- a/src/audio_output/input.c +++ b/src/audio_output/input.c @@ -313,7 +313,7 @@ int aout_InputNew( aout_instance_t * p_aout, aout_input_t * p_input ) psz_parser ); vlc_object_detach( p_filter ); - vlc_object_destroy( p_filter ); + vlc_object_release( p_filter ); psz_parser = psz_next; continue; @@ -332,7 +332,7 @@ int aout_InputNew( aout_instance_t * p_aout, aout_input_t * p_input ) module_Unneed( p_filter, p_filter->p_module ); vlc_object_detach( p_filter ); - vlc_object_destroy( p_filter ); + vlc_object_release( p_filter ); psz_parser = psz_next; continue; diff --git a/src/control/mediacontrol_audio_video.c b/src/control/mediacontrol_audio_video.c index 59fa33663d..ef6ead3f3f 100644 --- a/src/control/mediacontrol_audio_video.c +++ b/src/control/mediacontrol_audio_video.c @@ -88,7 +88,7 @@ mediacontrol_snapshot( mediacontrol_Instance *self, p_snapshot = ( snapshot_t* ) p_cache->p_private; vlc_object_unlock( p_cache ); - vlc_object_destroy( p_cache ); + vlc_object_release( p_cache ); if( p_snapshot ) { diff --git a/src/input/access.c b/src/input/access.c index b8080b7ce6..4121a84054 100644 --- a/src/input/access.c +++ b/src/input/access.c @@ -108,7 +108,7 @@ static access_t *access2_InternalNew( vlc_object_t *p_obj, const char *psz_acces free( p_access->psz_access ); free( p_access->psz_path ); free( p_access->psz_demux ); - vlc_object_destroy( p_access ); + vlc_object_release( p_access ); return NULL; } @@ -151,6 +151,6 @@ void access2_Delete( access_t *p_access ) access2_Delete( p_access->p_source ); } - vlc_object_destroy( p_access ); + vlc_object_release( p_access ); } diff --git a/src/input/decoder.c b/src/input/decoder.c index 88ade6d7a0..db14ff5cb4 100644 --- a/src/input/decoder.c +++ b/src/input/decoder.c @@ -183,7 +183,7 @@ decoder_t *input_DecoderNew( input_thread_t *p_input, DecoderUnsupportedCodec( p_dec, fmt->i_codec ); DeleteDecoder( p_dec ); - vlc_object_destroy( p_dec ); + vlc_object_release( p_dec ); return NULL; } @@ -214,7 +214,7 @@ decoder_t *input_DecoderNew( input_thread_t *p_input, msg_Err( p_dec, "cannot spawn decoder thread" ); module_Unneed( p_dec, p_dec->p_module ); DeleteDecoder( p_dec ); - vlc_object_destroy( p_dec ); + vlc_object_release( p_dec ); return NULL; } } @@ -265,7 +265,7 @@ void input_DecoderDelete( decoder_t *p_dec ) DeleteDecoder( p_dec ); /* Delete the decoder */ - vlc_object_destroy( p_dec ); + vlc_object_release( p_dec ); } /** @@ -382,7 +382,7 @@ int input_DecoderSetCcState( decoder_t *p_dec, vlc_bool_t b_decode, int i_channe { DecoderUnsupportedCodec( p_dec, fcc[i_channel] ); DeleteDecoder( p_cc ); - vlc_object_destroy( p_cc ); + vlc_object_release( p_cc ); return VLC_EGENERIC; } @@ -404,7 +404,7 @@ int input_DecoderSetCcState( decoder_t *p_dec, vlc_bool_t b_decode, int i_channe vlc_object_kill( p_cc ); module_Unneed( p_cc, p_cc->p_module ); DeleteDecoder( p_cc ); - vlc_object_destroy( p_cc ); + vlc_object_release( p_cc ); } } return VLC_SUCCESS; @@ -526,7 +526,7 @@ static decoder_t * CreateDecoder( input_thread_t *p_input, { es_format_Clean( &p_dec->p_owner->p_packetizer->fmt_in ); vlc_object_detach( p_dec->p_owner->p_packetizer ); - vlc_object_destroy( p_dec->p_owner->p_packetizer ); + vlc_object_release( p_dec->p_owner->p_packetizer ); } } } @@ -1028,7 +1028,7 @@ static void DeleteDecoder( decoder_t * p_dec ) es_format_Clean( &p_dec->p_owner->p_packetizer->fmt_in ); es_format_Clean( &p_dec->p_owner->p_packetizer->fmt_out ); vlc_object_detach( p_dec->p_owner->p_packetizer ); - vlc_object_destroy( p_dec->p_owner->p_packetizer ); + vlc_object_release( p_dec->p_owner->p_packetizer ); } vlc_mutex_destroy( &p_dec->p_owner->lock_cc ); diff --git a/src/input/demux.c b/src/input/demux.c index 4bd3163c07..c5082c343c 100644 --- a/src/input/demux.c +++ b/src/input/demux.c @@ -174,7 +174,7 @@ demux_t *__demux2_New( vlc_object_t *p_obj, free( p_demux->psz_path ); free( p_demux->psz_demux ); free( p_demux->psz_access ); - vlc_object_destroy( p_demux ); + vlc_object_release( p_demux ); return NULL; } @@ -193,7 +193,7 @@ void demux2_Delete( demux_t *p_demux ) free( p_demux->psz_demux ); free( p_demux->psz_access ); - vlc_object_destroy( p_demux ); + vlc_object_release( p_demux ); } /***************************************************************************** @@ -340,7 +340,7 @@ stream_t *__stream_DemuxNew( vlc_object_t *p_obj, const char *psz_demux, if( ( p_sys->p_fifo = block_FifoNew( s ) ) == NULL ) { msg_Err( s, "out of memory" ); - vlc_object_destroy( s ); + vlc_object_release( s ); free( p_sys ); return NULL; } @@ -348,7 +348,7 @@ stream_t *__stream_DemuxNew( vlc_object_t *p_obj, const char *psz_demux, if( vlc_thread_create( s, "stream out", DStreamThread, VLC_THREAD_PRIORITY_INPUT, VLC_FALSE ) ) { - vlc_object_destroy( s ); + vlc_object_release( s ); free( p_sys ); return NULL; } @@ -381,7 +381,7 @@ void stream_DemuxDelete( stream_t *s ) free( p_sys->psz_name ); free( p_sys ); - vlc_object_destroy( s ); + vlc_object_release( s ); } diff --git a/src/input/input.c b/src/input/input.c index 153c928050..68c00c55fd 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -299,7 +299,7 @@ static void Destroy( input_thread_t *p_input, sout_instance_t **pp_sout ) sout_DeleteInstance( priv->p_sout ); } - vlc_object_destroy( p_input ); + vlc_object_release( p_input ); vlc_mutex_destroy( &priv->lock_control ); free( priv ); } diff --git a/src/input/mem_stream.c b/src/input/mem_stream.c index 3496ab3b93..9978a13c7e 100644 --- a/src/input/mem_stream.c +++ b/src/input/mem_stream.c @@ -83,7 +83,7 @@ static void Delete( stream_t *s ) if( !s->p_sys->i_preserve_memory ) free( s->p_sys->p_buffer ); free( s->p_sys ); vlc_object_detach( s ); - vlc_object_destroy( s ); + vlc_object_release( s ); } /**************************************************************************** diff --git a/src/input/meta.c b/src/input/meta.c index f1a05ebfd6..8c46964816 100644 --- a/src/input/meta.c +++ b/src/input/meta.c @@ -104,11 +104,11 @@ int input_MetaFetch( playlist_t *p_playlist, input_item_t *p_item ) p_me->p_module = module_Need( p_me, "meta fetcher", 0, VLC_FALSE ); if( !p_me->p_module ) { - vlc_object_destroy( p_me ); + vlc_object_release( p_me ); return VLC_EGENERIC; } module_Unneed( p_me, p_me->p_module ); - vlc_object_destroy( p_me ); + vlc_object_release( p_me ); input_item_SetMetaFetched( p_item, VLC_TRUE ); diff --git a/src/input/stream.c b/src/input/stream.c index c1458d2d23..34bc4760c8 100644 --- a/src/input/stream.c +++ b/src/input/stream.c @@ -423,7 +423,7 @@ error: free( psz_list ); free( s->p_sys ); vlc_object_detach( s ); - vlc_object_destroy( s ); + vlc_object_release( s ); return NULL; } @@ -452,7 +452,7 @@ static void AStreamDestroy( stream_t *s ) } free( s->p_sys ); - vlc_object_destroy( s ); + vlc_object_release( s ); } static void UStreamDestroy( stream_t *s ) diff --git a/src/input/vlm.c b/src/input/vlm.c index 027a55bf18..6a3caffded 100644 --- a/src/input/vlm.c +++ b/src/input/vlm.c @@ -137,7 +137,7 @@ vlm_t *__vlm_New ( vlc_object_t *p_this ) Manage, VLC_THREAD_PRIORITY_LOW, VLC_FALSE ) ) { vlc_mutex_destroy( &p_vlm->lock ); - vlc_object_destroy( p_vlm ); + vlc_object_release( p_vlm ); return NULL; } @@ -198,7 +198,7 @@ void vlm_Delete( vlm_t *p_vlm ) vlc_mutex_destroy( &p_vlm->lock ); - vlc_object_destroy( p_vlm ); + vlc_object_release( p_vlm ); vlc_mutex_unlock( lockval.p_address ); } @@ -2367,7 +2367,7 @@ static int vlm_ControlMediaAdd( vlm_t *p_vlm, vlm_media_t *p_cfg, int64_t *p_id { msg_Err( p_vlm, "cannot find vod server" ); vlc_object_detach( p_vlm->p_vod ); - vlc_object_destroy( p_vlm->p_vod ); + vlc_object_release( p_vlm->p_vod ); p_vlm->p_vod = 0; return VLC_EGENERIC; } @@ -2435,7 +2435,7 @@ static int vlm_ControlMediaDel( vlm_t *p_vlm, int64_t id ) { module_Unneed( p_vlm->p_vod, p_vlm->p_vod->p_module ); vlc_object_detach( p_vlm->p_vod ); - vlc_object_destroy( p_vlm->p_vod ); + vlc_object_release( p_vlm->p_vod ); p_vlm->p_vod = NULL; } return VLC_SUCCESS; diff --git a/src/interface/interaction.c b/src/interface/interaction.c index 7f5f9ef1eb..41ef1a183e 100644 --- a/src/interface/interaction.c +++ b/src/interface/interaction.c @@ -71,7 +71,7 @@ void intf_InteractionDestroy( interaction_t *p_interaction ) DialogDestroy( p_dialog ); REMOVE_ELEM( p_interaction->pp_dialogs, p_interaction->i_dialogs, i ); } - vlc_object_destroy( p_interaction ); + vlc_object_release( p_interaction ); } /** diff --git a/src/interface/interface.c b/src/interface/interface.c index 19712688ba..797f47c4bc 100644 --- a/src/interface/interface.c +++ b/src/interface/interface.c @@ -101,7 +101,7 @@ intf_thread_t* __intf_Create( vlc_object_t *p_this, const char *psz_module, { msg_Err( p_intf, "no suitable interface module" ); free( p_intf->psz_intf ); - vlc_object_destroy( p_intf ); + vlc_object_release( p_intf ); return NULL; } @@ -191,7 +191,7 @@ void intf_Destroy( intf_thread_t *p_intf ) vlc_mutex_destroy( &p_intf->change_lock ); /* Free structure */ - vlc_object_destroy( p_intf ); + vlc_object_release( p_intf ); } diff --git a/src/libvlc-common.c b/src/libvlc-common.c index dcd676e70c..e667d249ec 100644 --- a/src/libvlc-common.c +++ b/src/libvlc-common.c @@ -1032,7 +1032,7 @@ int libvlc_InternalDestroy( libvlc_int_t *p_libvlc, vlc_bool_t b_release ) vlc_mutex_destroy( &p_libvlc->timer_lock ); if( b_release ) vlc_object_release( p_libvlc ); - vlc_object_destroy( p_libvlc ); + vlc_object_release( p_libvlc ); p_libvlc = NULL; /* Stop thread system: last one out please shut the door! diff --git a/src/libvlc.sym b/src/libvlc.sym index 5dea64dd99..e051f0ccfc 100644 --- a/src/libvlc.sym +++ b/src/libvlc.sym @@ -413,7 +413,6 @@ __vlc_mutex_init_recursive __vlc_object_alive __vlc_object_attach __vlc_object_create -__vlc_object_destroy __vlc_object_detach __vlc_object_find __vlc_object_find_name diff --git a/src/misc/beos_specific.cpp b/src/misc/beos_specific.cpp index 3eb2b2d70b..4fe105da11 100644 --- a/src/misc/beos_specific.cpp +++ b/src/misc/beos_specific.cpp @@ -108,7 +108,7 @@ void system_End( libvlc_int_t *p_this ) be_app->PostMessage( REALLY_QUIT ); vlc_thread_join( vlc_global()->p_appthread ); - vlc_object_destroy( vlc_global()->p_appthread ); + vlc_object_release( vlc_global()->p_appthread ); free( vlc_global()->psz_vlcpath ); } diff --git a/src/misc/devices.c b/src/misc/devices.c index ae2414b0b9..2b878c4180 100644 --- a/src/misc/devices.c +++ b/src/misc/devices.c @@ -50,7 +50,7 @@ void devices_ProbeCreate( vlc_object_t *p_this ) if( p_probe->p_module == NULL ) { msg_Err( p_this, "no devices probing module could be loaded" ); - vlc_object_destroy( p_probe ); + vlc_object_release( p_probe ); return; } diff --git a/src/misc/image.c b/src/misc/image.c index 973b12646e..8670dd12b3 100644 --- a/src/misc/image.c +++ b/src/misc/image.c @@ -672,7 +672,7 @@ static void DeleteDecoder( decoder_t * p_dec ) es_format_Clean( &p_dec->fmt_in ); es_format_Clean( &p_dec->fmt_out ); - vlc_object_destroy( p_dec ); + vlc_object_release( p_dec ); p_dec = NULL; } @@ -755,7 +755,7 @@ static void DeleteEncoder( encoder_t * p_enc ) es_format_Clean( &p_enc->fmt_in ); es_format_Clean( &p_enc->fmt_out ); - vlc_object_destroy( p_enc ); + vlc_object_release( p_enc ); p_enc = NULL; } @@ -799,6 +799,6 @@ static void DeleteFilter( filter_t * p_filter ) es_format_Clean( &p_filter->fmt_in ); es_format_Clean( &p_filter->fmt_out ); - vlc_object_destroy( p_filter ); + vlc_object_release( p_filter ); p_filter = NULL; } diff --git a/src/misc/objects.c b/src/misc/objects.c index 8d1cac2036..b191ee447b 100644 --- a/src/misc/objects.c +++ b/src/misc/objects.c @@ -92,6 +92,8 @@ static void ListReplace ( vlc_list_t *, vlc_object_t *, int ); static int CountChildren ( vlc_object_t *, int ); static void ListChildren ( vlc_list_t *, vlc_object_t *, int ); +static void vlc_object_destroy( vlc_object_t *p_this ); + /***************************************************************************** * Local structure lock *****************************************************************************/ @@ -189,7 +191,7 @@ vlc_object_t *vlc_custom_create( vlc_object_t *p_this, size_t i_size, vlc_mutex_unlock( &structure_lock ); } - p_priv->i_refcount = 0; + p_priv->i_refcount = 1; p_new->p_parent = NULL; p_new->pp_children = NULL; p_new->i_children = 0; @@ -347,16 +349,15 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type ) /** **************************************************************************** - * Destroy a vlc object + * Destroy a vlc object (Internal) * * This function destroys an object that has been previously allocated with * vlc_object_create. The object's refcount must be zero and it must not be * attached to other objects in any way. *****************************************************************************/ -void __vlc_object_destroy( vlc_object_t *p_this ) +static void vlc_object_destroy( vlc_object_t *p_this ) { vlc_object_internals_t *p_priv = vlc_internals( p_this ); - int i_delay = 0; /* FIXME: ugly hack - we cannot use the message queue after * msg_Destroy(). */ @@ -366,18 +367,36 @@ void __vlc_object_destroy( vlc_object_t *p_this ) if( p_this->i_children ) { +<<<<<<< .mine + fprintf( stderr, + "ERROR: cannot delete object (%i, %s) with children\n", + p_this->i_object_id, p_this->psz_object_name ); + fflush(stderr); + abort(); +======= msg_Err( logger, "cannot delete object (%i, %s) with children" , p_this->i_object_id, p_this->psz_object_name ); return; +>>>>>>> .r25344 } if( p_this->p_parent ) { +<<<<<<< .mine + fprintf( stderr, + "ERROR: cannot delete object (%i, %s) with a parent\n", + p_this->i_object_id, p_this->psz_object_name ); + fflush(stderr); + abort(); +======= msg_Err( logger, "cannot delete object (%i, %s) with a parent", p_this->i_object_id, p_this->psz_object_name ); return; +>>>>>>> .r25344 } +<<<<<<< .mine +======= while( p_priv->i_refcount > 0 ) { i_delay++; @@ -408,6 +427,7 @@ void __vlc_object_destroy( vlc_object_t *p_this ) msleep( 100000 ); } +>>>>>>> .r25344 /* Destroy the associated variables, starting from the end so that * no memmove calls have to be done. */ while( p_priv->i_vars ) @@ -423,10 +443,34 @@ void __vlc_object_destroy( vlc_object_t *p_this ) if( p_this->i_object_type == VLC_OBJECT_GLOBAL ) { libvlc_global_data_t *p_global = (libvlc_global_data_t *)p_this; + + /* Remove ourselves */ + int i_index = FindIndex( p_this, p_global->pp_objects, + p_global->i_objects ); + REMOVE_ELEM( p_global->pp_objects, + p_global->i_objects, i_index ); + + /* Test for leaks */ + if( p_global->i_objects > 0 ) + { + int i; + for( i = 0; i < p_global->i_objects; i++ ) + { + /* We are leaking this object */ + fprintf( stderr, + "ERROR: We are leaking object (id:%i, type:%s, name:%s)\n", + p_global->pp_objects[i]->i_object_id, + p_global->pp_objects[i]->psz_object_type, + p_global->pp_objects[i]->psz_object_name ); + fflush(stderr); + } + /* Strongly abort, cause we want these to be fixed */ + abort(); + } + /* We are the global object ... no need to lock. */ free( p_global->pp_objects ); p_global->pp_objects = NULL; - p_global->i_objects--; vlc_mutex_destroy( &structure_lock ); } @@ -884,20 +928,37 @@ void __vlc_object_yield( vlc_object_t *p_this ) vlc_mutex_unlock( &structure_lock ); } -static inline void Release( vlc_object_t *obj ) -{ - assert( obj->p_internals->i_refcount > 0 ); - obj->p_internals->i_refcount--; -} - /***************************************************************************** * decrement an object refcount + * And destroy the object if its refcount reach zero. *****************************************************************************/ void __vlc_object_release( vlc_object_t *p_this ) { + vlc_bool_t b_should_destroy; + vlc_mutex_lock( &structure_lock ); - Release( p_this ); + + assert( p_this->p_internals->i_refcount > 0 ); + p_this->p_internals->i_refcount--; + b_should_destroy = (p_this->p_internals->i_refcount == 0); + vlc_mutex_unlock( &structure_lock ); + + if( b_should_destroy ) + vlc_object_destroy( p_this ); +} + +/* Version without the lock */ +static void vlc_object_release_locked( vlc_object_t *p_this ) +{ + vlc_bool_t b_should_destroy; + + assert( p_this->p_internals->i_refcount > 0 ); + p_this->p_internals->i_refcount--; + b_should_destroy = (p_this->p_internals->i_refcount == 0); + + if( b_should_destroy ) + vlc_object_destroy( p_this ); } /** @@ -1221,7 +1282,7 @@ void vlc_list_release( vlc_list_t *p_list ) vlc_mutex_lock( &structure_lock ); for( i_index = 0; i_index < p_list->i_count; i_index++ ) { - Release( p_list->p_values[i_index].p_object ); + vlc_object_release_locked( p_list->p_values[i_index].p_object ); } vlc_mutex_unlock( &structure_lock ); diff --git a/src/misc/threads.c b/src/misc/threads.c index 0031fa7c94..5ce61f0a7a 100644 --- a/src/misc/threads.c +++ b/src/misc/threads.c @@ -251,7 +251,7 @@ int __vlc_threads_end( vlc_object_t *p_this ) if( i_initializations == 0 ) { i_status = VLC_THREADS_UNINITIALIZED; - vlc_object_destroy( p_root ); + vlc_object_release( p_root ); } #if defined( UNDER_CE ) diff --git a/src/misc/update.c b/src/misc/update.c index 513888f16c..ad806c10da 100644 --- a/src/misc/update.c +++ b/src/misc/update.c @@ -1142,7 +1142,7 @@ void update_CheckReal( update_check_thread_t *p_uct ) if( p_uct->pf_callback ) (p_uct->pf_callback)( p_uct->p_data, b_ret ); - vlc_object_destroy( p_uct ); + vlc_object_release( p_uct ); } /** @@ -1430,7 +1430,7 @@ end: free( p_buffer ); free( psz_size ); - vlc_object_destroy( p_udt ); + vlc_object_release( p_udt ); } #endif diff --git a/src/misc/xml.c b/src/misc/xml.c index 11243a5d27..f49c7ee647 100644 --- a/src/misc/xml.c +++ b/src/misc/xml.c @@ -46,7 +46,7 @@ xml_t *__xml_Create( vlc_object_t *p_this ) if( !p_xml->p_module ) { vlc_object_detach( p_xml ); - vlc_object_destroy( p_xml ); + vlc_object_release( p_xml ); msg_Err( p_this, "XML provider not found" ); return NULL; } @@ -61,5 +61,5 @@ void xml_Delete( xml_t *p_xml ) { module_Unneed( p_xml, p_xml->p_module ); vlc_object_detach( p_xml ); - vlc_object_destroy( p_xml ); + vlc_object_release( p_xml ); } diff --git a/src/modules/modules.c b/src/modules/modules.c index a42e1b032f..b505d1ceda 100644 --- a/src/modules/modules.c +++ b/src/modules/modules.c @@ -234,11 +234,11 @@ void __module_EndBank( vlc_object_t *p_this ) /* We just free the module by hand. Niahahahahaha. */ vlc_object_detach( p_next ); - vlc_object_destroy( p_next ); + vlc_object_release( p_next ); } } - vlc_object_destroy( p_libvlc_global->p_module_bank ); + vlc_object_release( p_libvlc_global->p_module_bank ); p_libvlc_global->p_module_bank = NULL; } @@ -1260,7 +1260,7 @@ static module_t * AllocatePlugin( vlc_object_t * p_this, char * psz_file ) if( module_Call( p_module ) != 0 ) { /* We couldn't call module_init() */ - vlc_object_destroy( p_module ); + vlc_object_release( p_module ); module_Unload( handle ); return NULL; } @@ -1362,7 +1362,7 @@ static int AllocateBuiltinModule( vlc_object_t * p_this, /* With a well-written module we shouldn't have to print an * additional error message here, but just make sure. */ msg_Err( p_this, "failed calling entry point in builtin module" ); - vlc_object_destroy( p_module ); + vlc_object_release( p_module ); return -1; } @@ -1406,11 +1406,11 @@ static int DeleteModule( module_t * p_module, vlc_bool_t b_detach ) { vlc_object_t *p_this = p_module->pp_children[0]; vlc_object_detach( p_this ); - vlc_object_destroy( p_this ); + vlc_object_release( p_this ); } config_Free( p_module ); - vlc_object_destroy( p_module ); + vlc_object_release( p_module ); p_module = NULL; return 0; } diff --git a/src/network/httpd.c b/src/network/httpd.c index 3d333e30c1..d8c86189ee 100644 --- a/src/network/httpd.c +++ b/src/network/httpd.c @@ -1124,7 +1124,7 @@ error: { vlc_object_release( httpd ); vlc_object_detach( httpd ); - vlc_object_destroy( httpd ); + vlc_object_release( httpd ); } vlc_mutex_unlock( lockval.p_address ); @@ -1132,7 +1132,7 @@ error: { net_ListenClose( host->fds ); vlc_mutex_destroy( &host->lock ); - vlc_object_destroy( host ); + vlc_object_release( host ); } if( p_tls != NULL ) @@ -1188,14 +1188,14 @@ void httpd_HostDelete( httpd_host_t *host ) free( host->psz_hostname ); vlc_mutex_destroy( &host->lock ); - vlc_object_destroy( host ); + vlc_object_release( host ); vlc_object_release( httpd ); if( httpd->i_host <= 0 ) { msg_Dbg( httpd, "no host left, stopping httpd" ); vlc_object_detach( httpd ); - vlc_object_destroy( httpd ); + vlc_object_release( httpd ); } vlc_mutex_unlock( lockval.p_address ); } diff --git a/src/network/tls.c b/src/network/tls.c index 385e99e920..b82d9e5ae7 100644 --- a/src/network/tls.c +++ b/src/network/tls.c @@ -73,7 +73,7 @@ tls_ServerCreate (vlc_object_t *obj, const char *cert_path, if (srv->p_module == NULL) { msg_Err (srv, "TLS server plugin not available"); - vlc_object_destroy (srv); + vlc_object_release (srv); return NULL; } @@ -94,7 +94,7 @@ void tls_ServerDelete (tls_server_t *srv) module_Unneed (srv, srv->p_module); vlc_object_detach (srv); - vlc_object_destroy (srv); + vlc_object_release (srv); } @@ -189,7 +189,7 @@ tls_ClientCreate (vlc_object_t *obj, int fd, const char *psz_hostname) if (cl->p_module == NULL) { msg_Err (cl, "TLS client plugin not available"); - vlc_object_destroy (cl); + vlc_object_release (cl); return NULL; } @@ -208,7 +208,7 @@ tls_ClientCreate (vlc_object_t *obj, int fd, const char *psz_hostname) msg_Err (cl, "TLS client session handshake error"); module_Unneed (cl, cl->p_module); - vlc_object_destroy (cl); + vlc_object_release (cl); return NULL; } @@ -224,5 +224,5 @@ void tls_ClientDelete (tls_session_t *cl) module_Unneed (cl, cl->p_module); vlc_object_detach (cl); - vlc_object_destroy (cl); + vlc_object_release (cl); } diff --git a/src/osd/osd.c b/src/osd/osd.c index 0afb0534e6..b89024470e 100644 --- a/src/osd/osd.c +++ b/src/osd/osd.c @@ -118,7 +118,7 @@ static void osd_ParserUnload( osd_menu_t *p_menu ) module_Unneed( p_menu, p_menu->p_parser ); vlc_object_detach( p_menu ); - vlc_object_destroy( p_menu ); + vlc_object_release( p_menu ); } /** @@ -216,7 +216,7 @@ error: free( p_osd->psz_file ); vlc_object_detach( p_osd ); - vlc_object_destroy( p_osd ); + vlc_object_release( p_osd ); vlc_mutex_unlock( lockval.p_address ); return NULL; } diff --git a/src/playlist/engine.c b/src/playlist/engine.c index e44d1279aa..05858a80a1 100644 --- a/src/playlist/engine.c +++ b/src/playlist/engine.c @@ -180,7 +180,7 @@ void playlist_Destroy( playlist_t *p_playlist ) vlc_mutex_destroy( &p_playlist->gc_lock ); vlc_object_detach( p_playlist ); - vlc_object_destroy( p_playlist ); + vlc_object_release( p_playlist ); } /* Destroy remaining objects */ diff --git a/src/playlist/services_discovery.c b/src/playlist/services_discovery.c index e3e787f9aa..3c892eb9bc 100644 --- a/src/playlist/services_discovery.c +++ b/src/playlist/services_discovery.c @@ -77,7 +77,7 @@ services_discovery_Create ( vlc_object_t * p_super, const char * psz_module_name if( p_sd->p_module == NULL ) { msg_Err( p_super, "no suitable services discovery module" ); - vlc_object_destroy( p_sd ); + vlc_object_release( p_sd ); return NULL; } p_sd->psz_module = strdup( psz_module_name ); @@ -98,7 +98,7 @@ void services_discovery_Destroy ( services_discovery_t * p_sd ) free( p_sd->psz_localized_name ); vlc_object_detach( p_sd ); - vlc_object_destroy( p_sd ); + vlc_object_release( p_sd ); } /*********************************************************************** @@ -111,7 +111,7 @@ int services_discovery_Start ( services_discovery_t * p_sd ) VLC_THREAD_PRIORITY_LOW, VLC_FALSE)) { msg_Err( p_sd, "cannot create services discovery thread" ); - vlc_object_destroy( p_sd ); + vlc_object_release( p_sd ); return VLC_EGENERIC; } return VLC_SUCCESS; diff --git a/src/playlist/thread.c b/src/playlist/thread.c index ad9242d678..caadd8cdcf 100644 --- a/src/playlist/thread.c +++ b/src/playlist/thread.c @@ -74,7 +74,7 @@ void __playlist_ThreadCreate( vlc_object_t *p_parent ) if( !p_playlist->p_preparse ) { msg_Err( p_playlist, "unable to create preparser" ); - vlc_object_destroy( p_playlist ); + vlc_object_release( p_playlist ); return; } p_playlist->p_preparse->i_waiting = 0; @@ -86,7 +86,7 @@ void __playlist_ThreadCreate( vlc_object_t *p_parent ) { msg_Err( p_playlist, "cannot spawn preparse thread" ); vlc_object_detach( p_playlist->p_preparse ); - vlc_object_destroy( p_playlist->p_preparse ); + vlc_object_release( p_playlist->p_preparse ); return; } @@ -96,7 +96,7 @@ void __playlist_ThreadCreate( vlc_object_t *p_parent ) if( !p_playlist->p_fetcher ) { msg_Err( p_playlist, "unable to create secondary preparser" ); - vlc_object_destroy( p_playlist ); + vlc_object_release( p_playlist ); return; } p_playlist->p_fetcher->i_waiting = 0; @@ -114,7 +114,7 @@ void __playlist_ThreadCreate( vlc_object_t *p_parent ) { msg_Err( p_playlist, "cannot spawn secondary preparse thread" ); vlc_object_detach( p_playlist->p_fetcher ); - vlc_object_destroy( p_playlist->p_fetcher ); + vlc_object_release( p_playlist->p_fetcher ); return; } @@ -123,7 +123,7 @@ void __playlist_ThreadCreate( vlc_object_t *p_parent ) VLC_THREAD_PRIORITY_LOW, VLC_TRUE ) ) { msg_Err( p_playlist, "cannot spawn playlist thread" ); - vlc_object_destroy( p_playlist ); + vlc_object_release( p_playlist ); return; } @@ -152,7 +152,7 @@ int playlist_ThreadDestroy( playlist_t * p_playlist ) vlc_thread_join( p_playlist->p_preparse ); free( p_playlist->p_preparse->pp_waiting ); vlc_object_detach( p_playlist->p_preparse ); - vlc_object_destroy( p_playlist->p_preparse ); + vlc_object_release( p_playlist->p_preparse ); } // Kill meta fetcher @@ -162,7 +162,7 @@ int playlist_ThreadDestroy( playlist_t * p_playlist ) vlc_thread_join( p_playlist->p_fetcher ); free( p_playlist->p_fetcher->p_waiting ); vlc_object_detach( p_playlist->p_fetcher ); - vlc_object_destroy( p_playlist->p_fetcher ); + vlc_object_release( p_playlist->p_fetcher ); } // Wait for thread to complete diff --git a/src/stream_output/announce.c b/src/stream_output/announce.c index 4c183cce54..c1bb2daf65 100644 --- a/src/stream_output/announce.c +++ b/src/stream_output/announce.c @@ -187,7 +187,7 @@ int announce_HandlerDestroy( announce_handler_t *p_announce ) } /* Free the structure */ - vlc_object_destroy( p_announce ); + vlc_object_release( p_announce ); return VLC_SUCCESS; } diff --git a/src/stream_output/sap.c b/src/stream_output/sap.c index 9529c5fe43..c0caf436e1 100644 --- a/src/stream_output/sap.c +++ b/src/stream_output/sap.c @@ -185,7 +185,7 @@ void announce_SAPHandlerDestroy( sap_handler_t *p_sap ) } /* Free the structure */ - vlc_object_destroy( p_sap ); + vlc_object_release( p_sap ); } /** diff --git a/src/stream_output/stream_output.c b/src/stream_output/stream_output.c index a59b02ffbd..c7da6fe4c3 100644 --- a/src/stream_output/stream_output.c +++ b/src/stream_output/stream_output.c @@ -120,7 +120,7 @@ sout_instance_t *__sout_NewInstance( vlc_object_t *p_parent, char * psz_dest ) FREENULL( p_sout->psz_chain ); vlc_object_detach( p_sout ); - vlc_object_destroy( p_sout ); + vlc_object_release( p_sout ); return NULL; } @@ -148,7 +148,7 @@ void sout_DeleteInstance( sout_instance_t * p_sout ) vlc_mutex_destroy( &p_sout->lock ); /* *** free structure *** */ - vlc_object_destroy( p_sout ); + vlc_object_release( p_sout ); } /***************************************************************************** @@ -333,7 +333,7 @@ sout_access_out_t *sout_AccessOutNew( sout_instance_t *p_sout, free( p_access->psz_access ); free( p_access->psz_path ); vlc_object_detach( p_access ); - vlc_object_destroy( p_access ); + vlc_object_release( p_access ); return( NULL ); } @@ -355,7 +355,7 @@ void sout_AccessOutDelete( sout_access_out_t *p_access ) free( p_access->psz_path ); - vlc_object_destroy( p_access ); + vlc_object_release( p_access ); } /***************************************************************************** @@ -446,7 +446,7 @@ sout_mux_t * sout_MuxNew( sout_instance_t *p_sout, char *psz_mux, FREENULL( p_mux->psz_mux ); vlc_object_detach( p_mux ); - vlc_object_destroy( p_mux ); + vlc_object_release( p_mux ); return NULL; } @@ -505,7 +505,7 @@ void sout_MuxDelete( sout_mux_t *p_mux ) config_ChainDestroy( p_mux->p_cfg ); - vlc_object_destroy( p_mux ); + vlc_object_release( p_mux ); } /***************************************************************************** @@ -856,7 +856,7 @@ void sout_StreamDelete( sout_stream_t *p_stream ) config_ChainDestroy( p_stream->p_cfg ); msg_Dbg( p_stream, "destroying chain done" ); - vlc_object_destroy( p_stream ); + vlc_object_release( p_stream ); } static char *_sout_stream_url_to_chain( vlc_object_t *p_this, char *psz_url ) diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c index edb78f1ad0..b17bce388f 100644 --- a/src/video_output/video_output.c +++ b/src/video_output/video_output.c @@ -405,7 +405,7 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt ) { msg_Err( p_vout, "no suitable vout module" ); vlc_object_detach( p_vout ); - vlc_object_destroy( p_vout ); + vlc_object_release( p_vout ); return NULL; } @@ -459,7 +459,7 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt ) msg_Err( p_vout, "out of memory" ); module_Unneed( p_vout, p_vout->p_module ); vlc_object_detach( p_vout ); - vlc_object_destroy( p_vout ); + vlc_object_release( p_vout ); return NULL; } @@ -472,7 +472,7 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt ) vlc_thread_join( p_vout ); vlc_object_detach( p_vout ); - vlc_object_destroy( p_vout ); + vlc_object_release( p_vout ); return NULL; } @@ -503,7 +503,7 @@ void vout_Destroy( vout_thread_t *p_vout ) config_ChainDestroy( p_vout->p_cfg ); /* Free structure */ - vlc_object_destroy( p_vout ); + vlc_object_release( p_vout ); #ifndef __APPLE__ /* This is a dirty hack for mostly Linux, where there is no way to get the GUI back if you closed it while playing video. This is solved in Mac OS X, @@ -1001,7 +1001,7 @@ static void RunThread( vout_thread_t *p_vout) msg_Err( p_vout, "no video filter found (%s)", p_vout->psz_vfilters[i] ); vlc_object_detach( p_vfilter ); - vlc_object_destroy( p_vfilter ); + vlc_object_release( p_vfilter ); } } p_vout->b_vfilter_change = VLC_FALSE; @@ -1451,7 +1451,7 @@ static void SuxorRestartVideoES( suxor_thread_t *p_this ) vlc_object_release( p_this->p_input ); - vlc_object_destroy( p_this ); + vlc_object_release( p_this ); } /***************************************************************************** @@ -1629,7 +1629,7 @@ static void RemoveVideoFilters2( vout_thread_t *p_vout ) } free( p_vout->pp_vfilters[i]->p_owner ); - vlc_object_destroy( p_vout->pp_vfilters[i] ); + vlc_object_release( p_vout->pp_vfilters[i] ); } p_vout->i_vfilters = 0; } diff --git a/src/video_output/vout_subpictures.c b/src/video_output/vout_subpictures.c index 5a55efdb78..8e1f9ceaa7 100644 --- a/src/video_output/vout_subpictures.c +++ b/src/video_output/vout_subpictures.c @@ -162,7 +162,7 @@ int spu_ParseChain( spu_t *p_spu ) msg_Dbg( p_spu, "no sub filter found" ); config_ChainDestroy( p_spu->pp_filter[p_spu->i_filter]->p_cfg ); vlc_object_detach( p_spu->pp_filter[p_spu->i_filter] ); - vlc_object_destroy( p_spu->pp_filter[p_spu->i_filter] ); + vlc_object_release( p_spu->pp_filter[p_spu->i_filter] ); } if( p_spu->i_filter >= 10 ) @@ -203,7 +203,7 @@ void spu_Destroy( spu_t *p_spu ) module_Unneed( p_spu->p_blend, p_spu->p_blend->p_module ); vlc_object_detach( p_spu->p_blend ); - vlc_object_destroy( p_spu->p_blend ); + vlc_object_release( p_spu->p_blend ); } if( p_spu->p_text ) @@ -212,7 +212,7 @@ void spu_Destroy( spu_t *p_spu ) module_Unneed( p_spu->p_text, p_spu->p_text->p_module ); vlc_object_detach( p_spu->p_text ); - vlc_object_destroy( p_spu->p_text ); + vlc_object_release( p_spu->p_text ); } if( p_spu->p_scale ) @@ -221,13 +221,13 @@ void spu_Destroy( spu_t *p_spu ) module_Unneed( p_spu->p_scale, p_spu->p_scale->p_module ); vlc_object_detach( p_spu->p_scale ); - vlc_object_destroy( p_spu->p_scale ); + vlc_object_release( p_spu->p_scale ); } spu_DeleteChain( p_spu ); vlc_mutex_destroy( &p_spu->subpicture_lock ); - vlc_object_destroy( p_spu ); + vlc_object_release( p_spu ); } static void spu_DeleteChain( spu_t *p_spu ) @@ -241,7 +241,7 @@ static void spu_DeleteChain( spu_t *p_spu ) free( p_spu->pp_filter[p_spu->i_filter]->p_owner ); config_ChainDestroy( p_spu->pp_filter[p_spu->i_filter]->p_cfg ); vlc_object_detach( p_spu->pp_filter[p_spu->i_filter] ); - vlc_object_destroy( p_spu->pp_filter[p_spu->i_filter] ); + vlc_object_release( p_spu->pp_filter[p_spu->i_filter] ); } }