[vlc-devel] [vlc-commits] objects: introduce vlc_object_delete()

Steve Lhomme robux4 at ycbcr.xyz
Mon Mar 11 08:26:40 CET 2019


On 3/6/2019 9:57 PM, Rémi Denis-Courmont wrote:
> vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Wed Mar  6 20:15:18 2019 +0200| [07b7122857a593feeb0ad5de93f2a00894530fee] | committer: Rémi Denis-Courmont
>
> objects: introduce vlc_object_delete()
>
> Objects have one strong reference held by their "owner", and zero or
> more weak references generated by vlc_object_hold() et al. This
> provides a separate function to remove the strong reference than
> vlc_object_release() to remove weak ones.
>
> With this sole change, this is really only an annotation though.
>
>> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=07b7122857a593feeb0ad5de93f2a00894530fee
> ---
>
>   include/vlc_objects.h                                    | 15 ++++++++++++++-
>   lib/media_player.c                                       |  4 ++--
>   modules/access/screen/screen.c                           |  4 ++--
>   modules/audio_filter/gain.c                              |  4 ++--
>   modules/audio_filter/scaletempo.c                        |  4 ++--
>   modules/audio_output/mmdevice.c                          |  6 +++---
>   modules/audio_output/winstore.c                          |  4 ++--
>   modules/codec/avcodec/va.c                               |  4 ++--
>   .../gui/macosx/windows/extensions/VLCExtensionsManager.m |  6 +++---
>   modules/gui/qt/extensions_manager.cpp                    |  8 ++++----
>   modules/gui/skins2/src/dialogs.cpp                       |  4 ++--
>   modules/hw/d3d11/d3d11_surface.c                         |  2 +-
>   modules/hw/d3d9/dxa9.c                                   |  2 +-
>   modules/misc/addons/fsstorage.c                          |  2 +-
>   modules/stream_out/transcode/encoder/audio.c             |  4 ++--
>   modules/stream_out/transcode/encoder/encoder.c           |  4 ++--
>   modules/stream_out/transcode/encoder/video.c             |  2 +-
>   modules/video_filter/blendbench.c                        |  4 ++--
>   modules/video_filter/ci_filters.m                        |  6 +++---
>   modules/video_filter/opencv_wrapper.c                    |  4 ++--
>   modules/video_output/caopengllayer.m                     |  2 +-
>   modules/video_output/ios.m                               |  2 +-
>   modules/video_output/macosx.m                            |  4 ++--
>   modules/video_output/opengl/vout_helper.c                |  6 +++---
>   modules/video_output/splitter.c                          |  4 ++--
>   modules/video_output/vulkan/instance.c                   |  4 ++--
>   modules/video_output/win32/glwin32.c                     |  4 ++--
>   src/audio_output/filters.c                               |  6 +++---
>   src/audio_output/output.c                                |  4 ++--
>   src/audio_output/volume.c                                |  2 +-
>   src/input/access.c                                       |  2 +-
>   src/input/decoder.c                                      |  4 ++--
>   src/input/decoder_helpers.c                              |  6 +++---
>   src/input/demux.c                                        |  4 ++--
>   src/input/input.c                                        |  4 ++--
>   src/input/item.c                                         |  2 +-
>   src/input/meta.c                                         |  4 ++--
>   src/input/player.c                                       |  4 ++--
>   src/input/services_discovery.c                           |  2 +-
>   src/input/stream.c                                       |  2 +-
>   src/input/stream_extractor.c                             |  2 +-
>   src/input/vlm.c                                          | 16 ++++++++--------
>   src/interface/interface.c                                |  4 ++--
>   src/libvlc.c                                             |  2 +-
>   src/media_source/media_source.c                          |  2 +-
>   src/misc/addons.c                                        |  8 ++++----
>   src/misc/filter.c                                        |  5 ++---
>   src/misc/filter_chain.c                                  |  4 ++--
>   src/misc/fingerprinter.c                                 |  4 ++--
>   src/misc/image.c                                         |  4 ++--
>   src/misc/keystore.c                                      |  4 ++--
>   src/misc/medialibrary.c                                  |  4 ++--
>   src/misc/messages.c                                      |  4 ++--
>   src/misc/probe.c                                         |  2 +-
>   src/misc/renderer_discovery.c                            |  4 ++--
>   src/misc/update.c                                        |  4 ++--
>   src/misc/xml.c                                           |  8 ++++----
>   src/network/httpd.c                                      |  4 ++--
>   src/network/tls.c                                        |  8 ++++----
>   src/playlist_legacy/engine.c                             |  2 +-
>   src/playlist_legacy/loadsave.c                           |  4 ++--
>   src/preparser/fetcher.c                                  |  2 +-
>   src/stream_output/stream_output.c                        | 14 +++++++-------
>   src/video_output/display.c                               |  4 ++--
>   src/video_output/inhibit.c                               |  4 ++--
>   src/video_output/opengl.c                                |  4 ++--
>   src/video_output/video_output.c                          |  4 ++--
>   src/video_output/vout_subpictures.c                      |  4 ++--
>   src/video_output/window.c                                |  4 ++--
>   test/src/input/decoder.c                                 | 12 ++++++------
>   70 files changed, 164 insertions(+), 152 deletions(-)

Why isn't services_discovery/podcast.c not part of this patchset ?

>
> diff --git a/include/vlc_objects.h b/include/vlc_objects.h
> index aef56e88ec..11692b2de7 100644
> --- a/include/vlc_objects.h
> +++ b/include/vlc_objects.h
> @@ -101,13 +101,26 @@ VLC_API vlc_object_t *vlc_object_find_name( vlc_object_t *, const char * ) VLC_U
>   VLC_API void * vlc_object_hold(vlc_object_t *obj);
>   
>   /**
> - * Drops a reference to an object.
> + * Removes a weak reference to an object.
>    *
>    * This atomically decrements the reference count.
>    * If the count reaches zero, the object is destroyed.
>    */
>   VLC_API void vlc_object_release(vlc_object_t *obj);
>   
> +/**
> + * Drops the strong reference to an object.
> + *
> + * This removes the initial strong reference to a given object. This must be
> + * called exactly once per allocated object after it is no longer needed,
> + * matching vlc_object_create() or vlc_custom_create().
> + */
> +static inline void vlc_object_delete(vlc_object_t *obj)
> +{
> +    vlc_object_release(obj);
> +}
> +#define vlc_object_delete(obj) vlc_object_delete(VLC_OBJECT(obj))
> +
>   VLC_API size_t vlc_list_children(vlc_object_t *, vlc_object_t **, size_t) VLC_USED;
>   
>   /**
> diff --git a/lib/media_player.c b/lib/media_player.c
> index 87e7f4f1aa..106e7d26b0 100644
> --- a/lib/media_player.c
> +++ b/lib/media_player.c
> @@ -751,7 +751,7 @@ libvlc_media_player_new( libvlc_instance_t *instance )
>       mp->input.p_resource = input_resource_New(VLC_OBJECT(mp));
>       if (unlikely(mp->input.p_resource == NULL))
>       {
> -        vlc_object_release(mp);
> +        vlc_object_delete(mp);
>           return NULL;
>       }
>       audio_output_t *aout = input_resource_GetAout(mp->input.p_resource);
> @@ -846,7 +846,7 @@ static void libvlc_media_player_destroy( libvlc_media_player_t *p_mi )
>       }
>   
>       libvlc_instance_t *instance = p_mi->p_libvlc_instance;
> -    vlc_object_release( p_mi );
> +    vlc_object_delete(p_mi);
>       libvlc_release(instance);
>   }
>   
> diff --git a/modules/access/screen/screen.c b/modules/access/screen/screen.c
> index 0b065900c0..0c472deaa8 100644
> --- a/modules/access/screen/screen.c
> +++ b/modules/access/screen/screen.c
> @@ -264,7 +264,7 @@ static void Close( vlc_object_t *p_this )
>       if( p_sys->p_blend )
>       {
>           module_unneed( p_sys->p_blend, p_sys->p_blend->p_module );
> -        vlc_object_release( p_sys->p_blend );
> +        vlc_object_delete(p_sys->p_blend);
>       }
>   #endif
>       free( p_sys );
> @@ -382,7 +382,7 @@ void RenderCursor( demux_t *p_demux, int i_x, int i_y,
>               if( !p_sys->p_blend->p_module )
>               {
>                   msg_Err( p_demux, "Could not load video blending module" );
> -                vlc_object_release( p_sys->p_blend );
> +                vlc_object_delete(p_sys->p_blend);
>                   p_sys->p_blend = NULL;
>               }
>           }
> diff --git a/modules/audio_filter/gain.c b/modules/audio_filter/gain.c
> index 5a95953bae..655d944304 100644
> --- a/modules/audio_filter/gain.c
> +++ b/modules/audio_filter/gain.c
> @@ -89,7 +89,7 @@ static int Open( vlc_object_t *p_this )
>       if( p_sys->module == NULL )
>       {
>           msg_Warn( p_filter, "unsupported format" );
> -        vlc_object_release( &p_sys->volume );
> +        vlc_object_delete(&p_sys->volume);
>           return VLC_EGENERIC;
>       }
>   
> @@ -126,5 +126,5 @@ static void Close( vlc_object_t *p_this )
>       filter_sys_t *p_sys = p_filter->p_sys;
>   
>       module_unneed( &p_sys->volume, p_sys->module );
> -    vlc_object_release( &p_sys->volume );
> +    vlc_object_delete(&p_sys->volume);
>   }
> diff --git a/modules/audio_filter/scaletempo.c b/modules/audio_filter/scaletempo.c
> index fc4f570c70..e30e12c7c1 100644
> --- a/modules/audio_filter/scaletempo.c
> +++ b/modules/audio_filter/scaletempo.c
> @@ -488,7 +488,7 @@ static filter_t *ResamplerCreate(filter_t *p_filter)
>       if( p_resampler->p_module == NULL )
>       {
>           msg_Err( p_filter, "Could not load resampler" );
> -        vlc_object_release( p_resampler );
> +        vlc_object_delete(p_resampler);
>           return NULL;
>       }
>       return p_resampler;
> @@ -539,7 +539,7 @@ static void ClosePitch( vlc_object_t *p_this )
>       var_DelCallback( p_aout, "pitch-shift", PitchCallback, p_sys );
>       var_Destroy( p_aout, "pitch-shift" );
>       module_unneed( p_sys->resampler, p_sys->resampler->p_module );
> -    vlc_object_release( p_sys->resampler );
> +    vlc_object_delete(p_sys->resampler);
>       Close( p_this );
>   }
>   #endif
> diff --git a/modules/audio_output/mmdevice.c b/modules/audio_output/mmdevice.c
> index 294561552c..162c8350b7 100644
> --- a/modules/audio_output/mmdevice.c
> +++ b/modules/audio_output/mmdevice.c
> @@ -1157,7 +1157,7 @@ static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt)
>            * failed. */
>           LeaveCriticalSection(&sys->lock);
>           LeaveMTA();
> -        vlc_object_release(s);
> +        vlc_object_delete(s);
>           return -1;
>       }
>   
> @@ -1225,7 +1225,7 @@ static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt)
>   
>       if (sys->module == NULL)
>       {
> -        vlc_object_release(s);
> +        vlc_object_delete(s);
>           return -1;
>       }
>   
> @@ -1245,7 +1245,7 @@ static void Stop(audio_output_t *aout)
>       vlc_module_unload(sys->module, aout_stream_Stop, sys->stream);
>       LeaveMTA();
>   
> -    vlc_object_release(sys->stream);
> +    vlc_object_delete(sys->stream);
>       sys->stream = NULL;
>   }
>   
> diff --git a/modules/audio_output/winstore.c b/modules/audio_output/winstore.c
> index 8420c3a6bc..5205c9e5a4 100644
> --- a/modules/audio_output/winstore.c
> +++ b/modules/audio_output/winstore.c
> @@ -246,7 +246,7 @@ static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt)
>   
>       if (sys->module == NULL)
>       {
> -        vlc_object_release(s);
> +        vlc_object_delete(s);
>           return -1;
>       }
>   
> @@ -265,7 +265,7 @@ static void Stop(audio_output_t *aout)
>       vlc_module_unload(sys->module, aout_stream_Stop, sys->stream);
>       LeaveMTA();
>   
> -    vlc_object_release(sys->stream);
> +    vlc_object_delete(sys->stream);
>       sys->stream = NULL;
>   }
>   
> diff --git a/modules/codec/avcodec/va.c b/modules/codec/avcodec/va.c
> index d0b0b880d2..fe9884c714 100644
> --- a/modules/codec/avcodec/va.c
> +++ b/modules/codec/avcodec/va.c
> @@ -132,7 +132,7 @@ vlc_va_t *vlc_va_New(vlc_object_t *obj, AVCodecContext *avctx,
>       free(modlist);
>       if (priv->module == NULL)
>       {
> -        vlc_object_release(va);
> +        vlc_object_delete(va);
>           va = NULL;
>       }
>       return va;
> @@ -143,5 +143,5 @@ void vlc_va_Delete(vlc_va_t *va, void **hwctx)
>       struct vlc_va_priv *priv = container_of(va, struct vlc_va_priv, va);
>   
>       vlc_module_unload(priv->module, vlc_va_Stop, va, hwctx);
> -    vlc_object_release(va);
> +    vlc_object_delete(va);
>   }
> diff --git a/modules/gui/macosx/windows/extensions/VLCExtensionsManager.m b/modules/gui/macosx/windows/extensions/VLCExtensionsManager.m
> index 52c7fdb4f2..5751c7261d 100644
> --- a/modules/gui/macosx/windows/extensions/VLCExtensionsManager.m
> +++ b/modules/gui/macosx/windows/extensions/VLCExtensionsManager.m
> @@ -165,7 +165,7 @@
>   
>           if (!p_extensions_manager->p_module) {
>               msg_Err(p_intf, "Unable to load extensions module");
> -            vlc_object_release(p_extensions_manager);
> +            vlc_object_delete(p_extensions_manager);
>               p_extensions_manager = NULL;
>               b_failed = true;
>               return false;
> @@ -184,7 +184,7 @@
>       _isUnloading = true;
>   
>       module_unneed(p_extensions_manager, p_extensions_manager->p_module);
> -    vlc_object_release(p_extensions_manager);
> +    vlc_object_delete(p_extensions_manager);
>       p_extensions_manager = NULL;
>   }
>   
> @@ -290,7 +290,7 @@
>   
>       _extensionDialogProvider = nil;
>       if (p_extensions_manager)
> -        vlc_object_release(p_extensions_manager);
> +        vlc_object_delete(p_extensions_manager);
>   }
>   
>   - (BOOL)isLoaded
> diff --git a/modules/gui/qt/extensions_manager.cpp b/modules/gui/qt/extensions_manager.cpp
> index 5bcc8d513a..52ad5ebb39 100644
> --- a/modules/gui/qt/extensions_manager.cpp
> +++ b/modules/gui/qt/extensions_manager.cpp
> @@ -63,7 +63,7 @@ ExtensionsManager::~ExtensionsManager()
>       if( p_extensions_manager )
>       {
>           module_unneed( p_extensions_manager, p_extensions_manager->p_module );
> -        vlc_object_release( p_extensions_manager );
> +        vlc_object_delete(p_extensions_manager);
>       }
>   }
>   
> @@ -86,7 +86,7 @@ bool ExtensionsManager::loadExtensions()
>           if( !p_extensions_manager->p_module )
>           {
>               msg_Err( p_intf, "Unable to load extensions module" );
> -            vlc_object_release( p_extensions_manager );
> +            vlc_object_delete(p_extensions_manager);
>               p_extensions_manager = NULL;
>               b_failed = true;
>               emit extensionsUpdated();
> @@ -101,7 +101,7 @@ bool ExtensionsManager::loadExtensions()
>               msg_Err( p_intf, "Unable to create dialogs provider for extensions" );
>               module_unneed( p_extensions_manager,
>                              p_extensions_manager->p_module );
> -            vlc_object_release( p_extensions_manager );
> +            vlc_object_delete(p_extensions_manager);
>               p_extensions_manager = NULL;
>               b_failed = true;
>               emit extensionsUpdated();
> @@ -121,7 +121,7 @@ void ExtensionsManager::unloadExtensions()
>       b_unloading = true;
>       ExtensionsDialogProvider::killInstance();
>       module_unneed( p_extensions_manager, p_extensions_manager->p_module );
> -    vlc_object_release( p_extensions_manager );
> +    vlc_object_delete(p_extensions_manager);
>       p_extensions_manager = NULL;
>   }
>   
> diff --git a/modules/gui/skins2/src/dialogs.cpp b/modules/gui/skins2/src/dialogs.cpp
> index 8ca54ad02f..fdb179978d 100644
> --- a/modules/gui/skins2/src/dialogs.cpp
> +++ b/modules/gui/skins2/src/dialogs.cpp
> @@ -123,7 +123,7 @@ Dialogs::~Dialogs()
>       {
>           // Detach the dialogs provider from its parent interface
>           module_unneed( m_pProvider, m_pModule );
> -        vlc_object_release( m_pProvider );
> +        vlc_object_delete(m_pProvider);
>   
>           /* Unregister callbacks */
>           var_DelCallback( pl_Get(getIntf()), "intf-popupmenu",
> @@ -170,7 +170,7 @@ bool Dialogs::init()
>       m_pModule = module_need( m_pProvider, "dialogs provider", NULL, false );
>       if( m_pModule == NULL )
>       {
> -        vlc_object_release( m_pProvider );
> +        vlc_object_delete(m_pProvider);
>           m_pProvider = NULL;
>           return false;
>       }
> diff --git a/modules/hw/d3d11/d3d11_surface.c b/modules/hw/d3d11/d3d11_surface.c
> index 9393cdb0dc..5b16bbf84a 100644
> --- a/modules/hw/d3d11/d3d11_surface.c
> +++ b/modules/hw/d3d11/d3d11_surface.c
> @@ -509,7 +509,7 @@ static void DeleteFilter( filter_t * p_filter )
>       es_format_Clean( &p_filter->fmt_in );
>       es_format_Clean( &p_filter->fmt_out );
>   
> -    vlc_object_release( p_filter );
> +    vlc_object_delete(p_filter);
>   }
>   
>   static picture_t *NewBuffer(filter_t *p_filter)
> diff --git a/modules/hw/d3d9/dxa9.c b/modules/hw/d3d9/dxa9.c
> index f3876380bd..035d96aaee 100644
> --- a/modules/hw/d3d9/dxa9.c
> +++ b/modules/hw/d3d9/dxa9.c
> @@ -184,7 +184,7 @@ static void DeleteFilter( filter_t * p_filter )
>       es_format_Clean( &p_filter->fmt_in );
>       es_format_Clean( &p_filter->fmt_out );
>   
> -    vlc_object_release( p_filter );
> +    vlc_object_delete(p_filter);
>   }
>   
>   static picture_t *NewBuffer(filter_t *p_filter)
> diff --git a/modules/misc/addons/fsstorage.c b/modules/misc/addons/fsstorage.c
> index 6d264294ba..b76bff7186 100644
> --- a/modules/misc/addons/fsstorage.c
> +++ b/modules/misc/addons/fsstorage.c
> @@ -525,7 +525,7 @@ static int Install( addons_storage_t *p_storage, addon_entry_t *p_entry )
>           module_unneed( p_finder, p_module );
>       }
>   
> -    vlc_object_release( p_finder );
> +    vlc_object_delete(p_finder);
>   
>       return i_ret;
>   }
> diff --git a/modules/stream_out/transcode/encoder/audio.c b/modules/stream_out/transcode/encoder/audio.c
> index 6571663abd..d45f7a066c 100644
> --- a/modules/stream_out/transcode/encoder/audio.c
> +++ b/modules/stream_out/transcode/encoder/audio.c
> @@ -164,7 +164,7 @@ int transcode_encoder_audio_test( vlc_object_t *p_obj,
>       {
>           es_format_Clean( &p_encoder->fmt_in );
>           es_format_Clean( &p_encoder->fmt_out );
> -        vlc_object_release( p_encoder );
> +        vlc_object_delete(p_encoder);
>           return VLC_EGENERIC;
>       }
>   
> @@ -199,7 +199,7 @@ int transcode_encoder_audio_test( vlc_object_t *p_obj,
>       es_format_Clean( &p_encoder->fmt_in );
>       es_format_Clean( &p_encoder->fmt_out );
>   
> -    vlc_object_release( p_encoder );
> +    vlc_object_delete(p_encoder);
>   
>       return p_module != NULL ? VLC_SUCCESS : VLC_EGENERIC;
>   }
> diff --git a/modules/stream_out/transcode/encoder/encoder.c b/modules/stream_out/transcode/encoder/encoder.c
> index ac50cb062a..2cc0bf6e88 100644
> --- a/modules/stream_out/transcode/encoder/encoder.c
> +++ b/modules/stream_out/transcode/encoder/encoder.c
> @@ -54,7 +54,7 @@ void transcode_encoder_delete( transcode_encoder_t *p_enc )
>           }
>           es_format_Clean( &p_enc->p_encoder->fmt_in );
>           es_format_Clean( &p_enc->p_encoder->fmt_out );
> -        vlc_object_release( p_enc->p_encoder );
> +        vlc_object_delete(p_enc->p_encoder);
>       }
>       free( p_enc );
>   }
> @@ -101,7 +101,7 @@ transcode_encoder_t * transcode_encoder_new( vlc_object_t *p_obj,
>               {
>                   es_format_Clean( &p_enc->p_encoder->fmt_in );
>                   es_format_Clean( &p_enc->p_encoder->fmt_out );
> -                vlc_object_release( p_enc->p_encoder );
> +                vlc_object_delete(p_enc->p_encoder);
>                   free( p_enc );
>                   return NULL;
>               }
> diff --git a/modules/stream_out/transcode/encoder/video.c b/modules/stream_out/transcode/encoder/video.c
> index ece2d3b0c6..062f89838a 100644
> --- a/modules/stream_out/transcode/encoder/video.c
> +++ b/modules/stream_out/transcode/encoder/video.c
> @@ -320,7 +320,7 @@ int transcode_encoder_video_test( vlc_object_t *p_obj,
>       es_format_Clean( &p_encoder->fmt_in );
>       es_format_Clean( &p_encoder->fmt_out );
>   
> -    vlc_object_release( p_encoder );
> +    vlc_object_delete(p_encoder);
>   
>       return p_module != NULL ? VLC_SUCCESS : VLC_EGENERIC;
>   }
> diff --git a/modules/video_filter/blendbench.c b/modules/video_filter/blendbench.c
> index 02c45efe9e..f288638531 100644
> --- a/modules/video_filter/blendbench.c
> +++ b/modules/video_filter/blendbench.c
> @@ -245,7 +245,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
>       if( !p_blend->p_module )
>       {
>           picture_Release( p_pic );
> -        vlc_object_release( p_blend );
> +        vlc_object_delete(p_blend);
>           return NULL;
>       }
>   
> @@ -268,7 +268,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
>   
>       module_unneed( p_blend, p_blend->p_module );
>   
> -    vlc_object_release( p_blend );
> +    vlc_object_delete(p_blend);
>   
>       p_sys->b_done = true;
>       return p_pic;
> diff --git a/modules/video_filter/ci_filters.m b/modules/video_filter/ci_filters.m
> index 5eb4e0408d..700ddbae72 100644
> --- a/modules/video_filter/ci_filters.m
> +++ b/modules/video_filter/ci_filters.m
> @@ -531,12 +531,12 @@ Close_RemoveConverters(filter_t *filter, struct ci_filters_ctx *ctx)
>       if (ctx->src_converter)
>       {
>           module_unneed(ctx->src_converter, ctx->src_converter->p_module);
> -        vlc_object_release(ctx->src_converter);
> +        vlc_object_delete(ctx->src_converter);
>       }
>       if (ctx->dst_converter)
>       {
>           module_unneed(ctx->dst_converter, ctx->dst_converter->p_module);
> -        vlc_object_release(ctx->dst_converter);
> +        vlc_object_delete(ctx->dst_converter);
>       }
>   }
>   
> @@ -576,7 +576,7 @@ CVPX_to_CVPX_converter_Create(filter_t *filter, bool to_rgba)
>       converter->p_module = module_need(converter, "video converter", NULL, false);
>       if (!converter->p_module)
>       {
> -        vlc_object_release(converter);
> +        vlc_object_delete(converter);
>           return NULL;
>       }
>   
> diff --git a/modules/video_filter/opencv_wrapper.c b/modules/video_filter/opencv_wrapper.c
> index 0525597c1b..2ce695913f 100644
> --- a/modules/video_filter/opencv_wrapper.c
> +++ b/modules/video_filter/opencv_wrapper.c
> @@ -182,7 +182,7 @@ static int Create( vlc_object_t *p_this )
>       {
>           msg_Err( p_filter, "can't open internal opencv filter: %s", p_sys->psz_inner_name );
>           free( p_sys->psz_inner_name );
> -        vlc_object_release( p_sys->p_opencv );
> +        vlc_object_delete(p_sys->p_opencv);
>           free( p_sys );
>   
>           return VLC_ENOMOD;
> @@ -268,7 +268,7 @@ static void Destroy( vlc_object_t *p_this )
>   
>       // Release the internal OpenCV filter.
>       module_unneed( p_sys->p_opencv, p_sys->p_opencv->p_module );
> -    vlc_object_release( p_sys->p_opencv );
> +    vlc_object_delete(p_sys->p_opencv);
>   
>       free( p_sys );
>   }
> diff --git a/modules/video_output/caopengllayer.m b/modules/video_output/caopengllayer.m
> index 571af8370f..8a41fd6b61 100644
> --- a/modules/video_output/caopengllayer.m
> +++ b/modules/video_output/caopengllayer.m
> @@ -257,7 +257,7 @@ static void Close(vout_display_t *vd)
>               assert(((struct gl_sys *)sys->gl->sys)->locked_ctx == NULL);
>               free(sys->gl->sys);
>           }
> -        vlc_object_release(sys->gl);
> +        vlc_object_delete(sys->gl);
>       }
>   
>       free(sys);
> diff --git a/modules/video_output/ios.m b/modules/video_output/ios.m
> index 6105247e5d..e55d899628 100644
> --- a/modules/video_output/ios.m
> +++ b/modules/video_output/ios.m
> @@ -243,7 +243,7 @@ static void Close(vout_display_t *vd)
>                       flushed = YES;
>                   }
>               }
> -            vlc_object_release(sys->gl);
> +            vlc_object_delete(sys->gl);
>           }
>   
>           [sys->glESView cleanAndRelease:flushed];
> diff --git a/modules/video_output/macosx.m b/modules/video_output/macosx.m
> index 3b2cedee33..e44e4f526e 100644
> --- a/modules/video_output/macosx.m
> +++ b/modules/video_output/macosx.m
> @@ -209,7 +209,7 @@ static int Open (vout_display_t *vd, const vout_display_cfg_t *cfg,
>           struct gl_sys *glsys = sys->gl->sys = malloc(sizeof(struct gl_sys));
>           if( unlikely( !sys->gl->sys ) )
>           {
> -            vlc_object_release(sys->gl);
> +            vlc_object_delete(sys->gl);
>               goto error;
>           }
>           glsys->locked_ctx = NULL;
> @@ -290,7 +290,7 @@ static void Close(vout_display_t *vd)
>           {
>               assert(((struct gl_sys *)sys->gl->sys)->locked_ctx == NULL);
>               free(sys->gl->sys);
> -            vlc_object_release(sys->gl);
> +            vlc_object_delete(sys->gl);
>           }
>   
>           [sys->glView release];
> diff --git a/modules/video_output/opengl/vout_helper.c b/modules/video_output/opengl/vout_helper.c
> index 30283419a3..d9a8f4406b 100644
> --- a/modules/video_output/opengl/vout_helper.c
> +++ b/modules/video_output/opengl/vout_helper.c
> @@ -576,7 +576,7 @@ opengl_deinit_program(vout_display_opengl_t *vgl, struct prgm *prgm)
>           pl_context_destroy(&tc->pl_ctx);
>   #endif
>   
> -    vlc_object_release(tc);
> +    vlc_object_delete(tc);
>   }
>   
>   static int
> @@ -641,7 +641,7 @@ opengl_init_program(vout_display_opengl_t *vgl, vlc_video_context *context,
>   
>           if (desc == NULL)
>           {
> -            vlc_object_release(tc);
> +            vlc_object_delete(tc);
>               return VLC_EGENERIC;
>           }
>           if (desc->plane_count == 0)
> @@ -663,7 +663,7 @@ opengl_init_program(vout_display_opengl_t *vgl, vlc_video_context *context,
>   
>       if (ret != VLC_SUCCESS)
>       {
> -        vlc_object_release(tc);
> +        vlc_object_delete(tc);
>           return VLC_EGENERIC;
>       }
>   
> diff --git a/modules/video_output/splitter.c b/modules/video_output/splitter.c
> index 011962bd0d..0e9aca24ae 100644
> --- a/modules/video_output/splitter.c
> +++ b/modules/video_output/splitter.c
> @@ -128,7 +128,7 @@ static void vlc_vidsplit_Close(vout_display_t *vd)
>       module_unneed(&sys->splitter, sys->splitter.p_module);
>       video_format_Clean(&sys->splitter.fmt);
>       vlc_mutex_destroy(&sys->lock);
> -    vlc_object_release(&sys->splitter);
> +    vlc_object_delete(&sys->splitter);
>   }
>   
>   static void vlc_vidsplit_window_Resized(vout_window_t *wnd,
> @@ -257,7 +257,7 @@ static int vlc_vidsplit_Open(vout_display_t *vd,
>       if (splitter->p_module == NULL) {
>           video_format_Clean(&splitter->fmt);
>           vlc_mutex_destroy(&sys->lock);
> -        vlc_object_release(splitter);
> +        vlc_object_delete(splitter);
>           return VLC_EGENERIC;
>       }
>   
> diff --git a/modules/video_output/vulkan/instance.c b/modules/video_output/vulkan/instance.c
> index d749e0d34b..3cafa5a571 100644
> --- a/modules/video_output/vulkan/instance.c
> +++ b/modules/video_output/vulkan/instance.c
> @@ -55,7 +55,7 @@ vlc_vk_t *vlc_vk_Create(struct vout_window_t *wnd, const char *name)
>       vk->module = module_need(vk, "vulkan", name, true);
>       if (vk->module == NULL)
>       {
> -        vlc_object_release(vk);
> +        vlc_object_delete(vk);
>           return NULL;
>       }
>       vlc_atomic_rc_init(&vk->ref_count);
> @@ -73,5 +73,5 @@ void vlc_vk_Release(vlc_vk_t *vk)
>       if (!vlc_atomic_rc_dec(&vk->ref_count))
>           return;
>       module_unneed(vk, vk->module);
> -    vlc_object_release(vk);
> +    vlc_object_delete(vk);
>   }
> diff --git a/modules/video_output/win32/glwin32.c b/modules/video_output/win32/glwin32.c
> index b0286b762e..7d5cc3a080 100644
> --- a/modules/video_output/win32/glwin32.c
> +++ b/modules/video_output/win32/glwin32.c
> @@ -138,7 +138,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
>       free(modlist);
>       if (!sys->gl)
>       {
> -        vlc_object_release(embed_cfg.window);
> +        vlc_object_delete(embed_cfg.window);
>           goto error;
>       }
>   
> @@ -190,7 +190,7 @@ static void Close(vout_display_t *vd)
>               vlc_gl_ReleaseCurrent (gl);
>           }
>           vlc_gl_Release (gl);
> -        vlc_object_release(surface);
> +        vlc_object_delete(surface);
>       }
>   
>       CommonClean(vd);
> diff --git a/src/audio_output/filters.c b/src/audio_output/filters.c
> index b62cf93f04..c25e11f274 100644
> --- a/src/audio_output/filters.c
> +++ b/src/audio_output/filters.c
> @@ -78,7 +78,7 @@ static filter_t *CreateFilter(vlc_object_t *obj, const char *type,
>   
>       if (filter->p_module == NULL)
>       {
> -        vlc_object_release (filter);
> +        vlc_object_delete(filter);
>           filter = NULL;
>       }
>       else
> @@ -115,7 +115,7 @@ static void aout_FiltersPipelineDestroy(filter_t *const *filters, unsigned n)
>           filter_t *p_filter = filters[i];
>   
>           module_unneed( p_filter, p_filter->p_module );
> -        vlc_object_release( p_filter );
> +        vlc_object_delete(p_filter);
>       }
>   }
>   
> @@ -427,7 +427,7 @@ static int AppendFilter(vlc_object_t *obj, const char *type, const char *name,
>       {
>           msg_Err (filter, "cannot add user %s \"%s\" (skipped)", type, name);
>           module_unneed (filter, filter->p_module);
> -        vlc_object_release (filter);
> +        vlc_object_delete(filter);
>           return -1;
>       }
>   
> diff --git a/src/audio_output/output.c b/src/audio_output/output.c
> index 95ed7dab97..be7c386f99 100644
> --- a/src/audio_output/output.c
> +++ b/src/audio_output/output.c
> @@ -262,7 +262,7 @@ audio_output_t *aout_New (vlc_object_t *parent)
>       if (owner->module == NULL)
>       {
>           msg_Err (aout, "no suitable audio output module");
> -        vlc_object_release (aout);
> +        vlc_object_delete(aout);
>           return NULL;
>       }
>   
> @@ -378,7 +378,7 @@ void aout_Destroy (audio_output_t *aout)
>       var_SetFloat (aout, "volume", -1.f);
>       var_DelCallback(aout, "volume", var_Copy, vlc_object_parent(aout));
>       var_DelCallback (aout, "stereo-mode", StereoModeCallback, NULL);
> -    vlc_object_release (aout);
> +    vlc_object_delete(aout);
>   }
>   
>   /**
> diff --git a/src/audio_output/volume.c b/src/audio_output/volume.c
> index 679a61adce..b86bb1d36c 100644
> --- a/src/audio_output/volume.c
> +++ b/src/audio_output/volume.c
> @@ -116,7 +116,7 @@ void aout_volume_Delete(aout_volume_t *vol)
>           module_unneed(obj, vol->module);
>       var_DelCallback(vlc_object_parent(obj), "audio-replay-gain-mode",
>                       ReplayGainCallback, vol);
> -    vlc_object_release(obj);
> +    vlc_object_delete(obj);
>   }
>   
>   void aout_volume_SetVolume(aout_volume_t *vol, float factor)
> diff --git a/src/input/access.c b/src/input/access.c
> index b4f1531ff6..eab763f020 100644
> --- a/src/input/access.c
> +++ b/src/input/access.c
> @@ -315,7 +315,7 @@ stream_t *stream_AccessNew(vlc_object_t *parent, input_thread_t *input,
>           s->psz_url = strdup(access->psz_url);
>           if (unlikely(s->psz_url == NULL))
>           {
> -            vlc_object_release(s);
> +            vlc_object_delete(s);
>               vlc_stream_Delete(access);
>               return NULL;
>           }
> diff --git a/src/input/decoder.c b/src/input/decoder.c
> index 38d3b81dcf..096340f34b 100644
> --- a/src/input/decoder.c
> +++ b/src/input/decoder.c
> @@ -1848,7 +1848,7 @@ static decoder_t * CreateDecoder( vlc_object_t *p_parent,
>       p_owner->p_fifo = block_FifoNew();
>       if( unlikely(p_owner->p_fifo == NULL) )
>       {
> -        vlc_object_release( p_dec );
> +        vlc_object_delete(p_dec);
>           return NULL;
>       }
>   
> @@ -1868,7 +1868,7 @@ static decoder_t * CreateDecoder( vlc_object_t *p_parent,
>           {
>               if( LoadDecoder( p_owner->p_packetizer, true, fmt ) )
>               {
> -                vlc_object_release( p_owner->p_packetizer );
> +                vlc_object_delete(p_owner->p_packetizer);
>                   p_owner->p_packetizer = NULL;
>               }
>               else
> diff --git a/src/input/decoder_helpers.c b/src/input/decoder_helpers.c
> index d7380fff0c..3d1c574cb7 100644
> --- a/src/input/decoder_helpers.c
> +++ b/src/input/decoder_helpers.c
> @@ -70,7 +70,7 @@ void decoder_Destroy( decoder_t *p_dec )
>       if (p_dec != NULL)
>       {
>           decoder_Clean( p_dec );
> -        vlc_object_release( p_dec );
> +        vlc_object_delete(p_dec);
>       }
>   }
>   
> @@ -138,7 +138,7 @@ vlc_decoder_device_Create(vout_window_t *window)
>       free(name);
>       if (!priv->module)
>       {
> -        vlc_object_release(&priv->device);
> +        vlc_object_delete(&priv->device);
>           return NULL;
>       }
>       vlc_atomic_rc_init(&priv->rc);
> @@ -162,6 +162,6 @@ vlc_decoder_device_Release(vlc_decoder_device *device)
>       if (vlc_atomic_rc_dec(&priv->rc))
>       {
>           vlc_module_unload(priv->module, decoder_device_Close, device);
> -        vlc_object_release(device);
> +        vlc_object_delete(device);
>       }
>   }
> diff --git a/src/input/demux.c b/src/input/demux.c
> index 8c199941ff..d7b5ce3711 100644
> --- a/src/input/demux.c
> +++ b/src/input/demux.c
> @@ -431,7 +431,7 @@ decoder_t *demux_PacketizerNew( demux_t *p_demux, es_format_t *p_fmt, const char
>       if( !p_packetizer->p_module )
>       {
>           es_format_Clean( p_fmt );
> -        vlc_object_release( p_packetizer );
> +        vlc_object_delete(p_packetizer);
>           msg_Err( p_demux, "cannot find packetizer for %s", psz_msg );
>           return NULL;
>       }
> @@ -447,7 +447,7 @@ void demux_PacketizerDestroy( decoder_t *p_packetizer )
>       es_format_Clean( &p_packetizer->fmt_out );
>       if( p_packetizer->p_description )
>           vlc_meta_Delete( p_packetizer->p_description );
> -    vlc_object_release( p_packetizer );
> +    vlc_object_delete(p_packetizer);
>   }
>   
>   unsigned demux_TestAndClearFlags( demux_t *p_demux, unsigned flags )
> diff --git a/src/input/input.c b/src/input/input.c
> index c5e5f4379b..b4c7aa5b1e 100644
> --- a/src/input/input.c
> +++ b/src/input/input.c
> @@ -232,7 +232,7 @@ void input_Close( input_thread_t *p_input )
>       if( input_priv(p_input)->is_running )
>           vlc_join( input_priv(p_input)->thread, NULL );
>       vlc_interrupt_deinit( &input_priv(p_input)->interrupt );
> -    vlc_object_release( p_input );
> +    vlc_object_delete(p_input);
>   }
>   
>   void input_SetTime( input_thread_t *p_input, vlc_tick_t i_time, bool b_fast )
> @@ -2864,7 +2864,7 @@ static void InputSourceMeta( input_thread_t *p_input,
>           }
>           module_unneed( p_demux, p_id3 );
>       }
> -    vlc_object_release( p_demux_meta );
> +    vlc_object_delete(p_demux_meta);
>   }
>   
>   
> diff --git a/src/input/item.c b/src/input/item.c
> index 29e61aac00..830c79895f 100644
> --- a/src/input/item.c
> +++ b/src/input/item.c
> @@ -1706,7 +1706,7 @@ void vlc_readdir_helper_init(struct vlc_readdir_helper *p_rdh,
>       TAB_INIT(p_rdh->i_dirs, p_rdh->pp_dirs);
>   
>       if (p_var_obj != NULL)
> -        vlc_object_release(p_var_obj);
> +        vlc_object_delete(p_var_obj);
>   }
>   
>   void vlc_readdir_helper_finish(struct vlc_readdir_helper *p_rdh, bool b_success)
> diff --git a/src/input/meta.c b/src/input/meta.c
> index 3453d71763..a06fbabda3 100644
> --- a/src/input/meta.c
> +++ b/src/input/meta.c
> @@ -264,11 +264,11 @@ int input_item_WriteMeta( vlc_object_t *obj, input_item_t *p_item )
>       module_t *p_mod = module_need( p_export, "meta writer", NULL, false );
>       if( p_mod )
>           module_unneed( p_export, p_mod );
> -    vlc_object_release( p_export );
> +    vlc_object_delete(p_export);
>       return VLC_SUCCESS;
>   
>   error:
> -    vlc_object_release( p_export );
> +    vlc_object_delete(p_export);
>       return VLC_EGENERIC;
>   }
>   
> diff --git a/src/input/player.c b/src/input/player.c
> index 20fa3a3d39..34a39eec9a 100644
> --- a/src/input/player.c
> +++ b/src/input/player.c
> @@ -3475,7 +3475,7 @@ vlc_player_Delete(vlc_player_t *player)
>       if (player->renderer)
>           vlc_renderer_item_release(player->renderer);
>   
> -    vlc_object_release(player);
> +    vlc_object_delete(player);
>   }
>   
>   vlc_player_t *
> @@ -3596,6 +3596,6 @@ error:
>       if (player->resource)
>           input_resource_Release(player->resource);
>   
> -    vlc_object_release(player);
> +    vlc_object_delete(player);
>       return NULL;
>   }
> diff --git a/src/input/services_discovery.c b/src/input/services_discovery.c
> index f2a833f075..dbb6d5934d 100644
> --- a/src/input/services_discovery.c
> +++ b/src/input/services_discovery.c
> @@ -133,5 +133,5 @@ void vlc_sd_Destroy(services_discovery_t *sd)
>           module_unneed(sd, sd->p_module);
>       config_ChainDestroy(sd->p_cfg);
>       free(sd->psz_name);
> -    vlc_object_release(sd);
> +    vlc_object_delete(sd);
>   }
> diff --git a/src/input/stream.c b/src/input/stream.c
> index 6019c95c62..35c5a04870 100644
> --- a/src/input/stream.c
> +++ b/src/input/stream.c
> @@ -124,7 +124,7 @@ void stream_CommonDelete(stream_t *s)
>           block_Release(priv->block);
>   
>       free(s->psz_url);
> -    vlc_object_release(s);
> +    vlc_object_delete(s);
>   }
>   
>   /**
> diff --git a/src/input/stream_extractor.c b/src/input/stream_extractor.c
> index b5bdd0121a..f340646768 100644
> --- a/src/input/stream_extractor.c
> +++ b/src/input/stream_extractor.c
> @@ -128,7 +128,7 @@ static void se_Release( struct stream_extractor_private* priv )
>               vlc_stream_Delete( priv->source );
>       }
>   
> -    vlc_object_release( priv->object );
> +    vlc_object_delete(priv->object);
>   }
>   
>   /**
> diff --git a/src/input/vlm.c b/src/input/vlm.c
> index c99406ae4d..93396ae3ac 100644
> --- a/src/input/vlm.c
> +++ b/src/input/vlm.c
> @@ -157,7 +157,7 @@ vlm_t *vlm_New( libvlc_int_t *libvlc, const char *psz_vlmconf )
>           vlc_cond_destroy( &p_vlm->wait_manage );
>           vlc_mutex_destroy( &p_vlm->lock );
>           vlc_mutex_destroy( &p_vlm->lock_manage );
> -        vlc_object_release( p_vlm );
> +        vlc_object_delete(p_vlm);
>           vlc_mutex_unlock( &vlm_mutex );
>           return NULL;
>       }
> @@ -221,7 +221,7 @@ void vlm_Delete( vlm_t *p_vlm )
>       if( p_vlm->p_vod )
>       {
>           module_unneed( p_vlm->p_vod, p_vlm->p_vod->p_module );
> -        vlc_object_release( p_vlm->p_vod );
> +        vlc_object_delete(p_vlm->p_vod);
>       }
>   
>       libvlc_priv(vlc_object_instance(p_vlm))->p_vlm = NULL;
> @@ -232,7 +232,7 @@ void vlm_Delete( vlm_t *p_vlm )
>       vlc_cond_destroy( &p_vlm->wait_manage );
>       vlc_mutex_destroy( &p_vlm->lock );
>       vlc_mutex_destroy( &p_vlm->lock_manage );
> -    vlc_object_release( p_vlm );
> +    vlc_object_delete(p_vlm);
>   }
>   
>   /*****************************************************************************
> @@ -735,7 +735,7 @@ static int vlm_ControlMediaAdd( vlm_t *p_vlm, vlm_media_t *p_cfg, int64_t *p_id
>           if( !p_vlm->p_vod->p_module )
>           {
>               msg_Err( p_vlm, "cannot find vod server" );
> -            vlc_object_release( p_vlm->p_vod );
> +            vlc_object_delete(p_vlm->p_vod);
>               p_vlm->p_vod = NULL;
>               return VLC_EGENERIC;
>           }
> @@ -751,7 +751,7 @@ static int vlm_ControlMediaAdd( vlm_t *p_vlm, vlm_media_t *p_cfg, int64_t *p_id
>   
>       if( asprintf( &header, _("Media: %s"), p_cfg->psz_name ) == -1 )
>       {
> -        vlc_object_release( p_media );
> +        vlc_object_delete(p_media);
>           return VLC_ENOMEM;
>       }
>   
> @@ -760,7 +760,7 @@ static int vlm_ControlMediaAdd( vlm_t *p_vlm, vlm_media_t *p_cfg, int64_t *p_id
>   
>       if( p_media->obj.logger == NULL )
>       {
> -        vlc_object_release( p_media );
> +        vlc_object_delete(p_media);
>           return VLC_ENOMEM;
>       }
>   
> @@ -812,7 +812,7 @@ static int vlm_ControlMediaDel( vlm_t *p_vlm, int64_t id )
>   
>       TAB_REMOVE( p_vlm->i_media, p_vlm->media, p_media );
>       vlc_LogDestroy( p_media->obj.logger );
> -    vlc_object_release( p_media );
> +    vlc_object_delete(p_media);
>   
>       return VLC_SUCCESS;
>   }
> @@ -904,7 +904,7 @@ static void vlm_MediaInstanceDelete( vlm_t *p_vlm, int64_t id, vlm_media_instanc
>       }
>       input_resource_Terminate( p_instance->p_input_resource );
>       input_resource_Release( p_instance->p_input_resource );
> -    vlc_object_release( p_instance->p_parent );
> +    vlc_object_delete(p_instance->p_parent);
>   
>       TAB_REMOVE( p_media->i_instance, p_media->instance, p_instance );
>       input_item_Release( p_instance->p_item );
> diff --git a/src/interface/interface.c b/src/interface/interface.c
> index 0bdc5a86be..9f91ee4129 100644
> --- a/src/interface/interface.c
> +++ b/src/interface/interface.c
> @@ -122,7 +122,7 @@ error:
>       if( p_intf->p_module )
>           module_unneed( p_intf, p_intf->p_module );
>       config_ChainDestroy( p_intf->p_cfg );
> -    vlc_object_release( p_intf );
> +    vlc_object_delete(p_intf);
>       return VLC_EGENERIC;
>   }
>   
> @@ -311,7 +311,7 @@ void intf_DestroyAll(libvlc_int_t *libvlc)
>               module_unneed(intf, intf->p_module);
>               config_ChainDestroy(intf->p_cfg);
>               var_DelCallback(intf, "intf-add", AddIntfCallback, playlist);
> -            vlc_object_release(intf);
> +            vlc_object_delete(intf);
>   
>               vlc_mutex_lock(&lock);
>           }
> diff --git a/src/libvlc.c b/src/libvlc.c
> index 8e8d2ca8b2..62d8d945a2 100644
> --- a/src/libvlc.c
> +++ b/src/libvlc.c
> @@ -450,7 +450,7 @@ void libvlc_InternalDestroy( libvlc_int_t *p_libvlc )
>       vlc_ExitDestroy( &priv->exit );
>   
>       assert( atomic_load(&(vlc_internals(p_libvlc)->refs)) == 1 );
> -    vlc_object_release( p_libvlc );
> +    vlc_object_delete(p_libvlc);
>   }
>   
>   /*****************************************************************************
> diff --git a/src/media_source/media_source.c b/src/media_source/media_source.c
> index 973570b4ae..d02be7ad70 100644
> --- a/src/media_source/media_source.c
> +++ b/src/media_source/media_source.c
> @@ -222,7 +222,7 @@ ReleaseObject(void *obj)
>   #ifdef TEST_MEDIA_SOURCE
>       free(obj);
>   #else
> -    vlc_object_release((vlc_object_t *) obj);
> +    vlc_object_delete((vlc_media_source_provider_t *)obj);
>   #endif
>   }
>   
> diff --git a/src/misc/addons.c b/src/misc/addons.c
> index 58ecf8cecb..1e19943037 100644
> --- a/src/misc/addons.c
> +++ b/src/misc/addons.c
> @@ -319,7 +319,7 @@ static void LoadLocalStorage( addons_manager_t *p_manager )
>   
>           ARRAY_RESET( p_finder->entries );
>       }
> -    vlc_object_release( p_finder );
> +    vlc_object_delete(p_finder);
>   }
>   
>   static void finder_thread_interrupted( void* p_data )
> @@ -376,7 +376,7 @@ static void *FinderThread( void *p_data )
>               }
>               ARRAY_RESET( p_finder->entries );
>               free( psz_uri );
> -            vlc_object_release( p_finder );
> +            vlc_object_delete(p_finder);
>           }
>   
>           p_manager->owner.discovery_ended( p_manager );
> @@ -406,7 +406,7 @@ static int addons_manager_WriteCatalog( addons_manager_t *p_manager )
>           vlc_mutex_unlock( &p_manager->p_priv->finder.lock );
>           module_unneed( p_storage, p_module );
>       }
> -    vlc_object_release( p_storage );
> +    vlc_object_delete(p_storage);
>   
>       return i_return;
>   }
> @@ -443,7 +443,7 @@ static int installOrRemoveAddon( addons_manager_t *p_manager, addon_entry_t *p_e
>               vlc_mutex_unlock( &p_entry->lock );
>           }
>       }
> -    vlc_object_release( p_storage );
> +    vlc_object_delete(p_storage);
>   
>       return i_return;
>   }
> diff --git a/src/misc/filter.c b/src/misc/filter.c
> index 465677a12f..49131f4da5 100644
> --- a/src/misc/filter.c
> +++ b/src/misc/filter.c
> @@ -173,7 +173,7 @@ void filter_DeleteBlend( filter_t *p_blend )
>       if( p_blend->p_module )
>           module_unneed( p_blend, p_blend->p_module );
>   
> -    vlc_object_release( p_blend );
> +    vlc_object_delete(p_blend);
>   }
>   
>   /* */
> @@ -207,7 +207,6 @@ void video_splitter_Delete( video_splitter_t *p_splitter )
>           module_unneed( p_splitter, p_splitter->p_module );
>   
>       video_format_Clean( &p_splitter->fmt );
> -
> -    vlc_object_release( p_splitter );
> +    vlc_object_delete(p_splitter);
>   }
>   
> diff --git a/src/misc/filter_chain.c b/src/misc/filter_chain.c
> index ff6b2eefd2..ffb5ba4d4e 100644
> --- a/src/misc/filter_chain.c
> +++ b/src/misc/filter_chain.c
> @@ -265,7 +265,7 @@ error:
>           msg_Err( parent, "Failed to create %s", capability );
>       es_format_Clean( &filter->fmt_out );
>       es_format_Clean( &filter->fmt_in );
> -    vlc_object_release( filter );
> +    vlc_object_delete(filter);
>       return NULL;
>   }
>   
> @@ -315,7 +315,7 @@ void filter_chain_DeleteFilter( filter_chain_t *chain, filter_t *filter )
>       es_format_Clean( &filter->fmt_out );
>       es_format_Clean( &filter->fmt_in );
>   
> -    vlc_object_release( filter );
> +    vlc_object_delete(filter);
>       /* FIXME: check fmt_in/fmt_out consitency */
>   }
>   
> diff --git a/src/misc/fingerprinter.c b/src/misc/fingerprinter.c
> index 725b70ea77..b41fb41ce3 100644
> --- a/src/misc/fingerprinter.c
> +++ b/src/misc/fingerprinter.c
> @@ -43,7 +43,7 @@ fingerprinter_thread_t *fingerprinter_Create( vlc_object_t *p_this )
>                                              NULL, false );
>       if( !p_fingerprint->p_module )
>       {
> -        vlc_object_release( p_fingerprint );
> +        vlc_object_delete(p_fingerprint);
>           msg_Err( p_this, "AcoustID fingerprinter not found" );
>           return NULL;
>       }
> @@ -54,5 +54,5 @@ fingerprinter_thread_t *fingerprinter_Create( vlc_object_t *p_this )
>   void fingerprinter_Destroy( fingerprinter_thread_t *p_fingerprint )
>   {
>       module_unneed( p_fingerprint, p_fingerprint->p_module );
> -    vlc_object_release( p_fingerprint );
> +    vlc_object_delete(p_fingerprint);
>   }
> diff --git a/src/misc/image.c b/src/misc/image.c
> index fc381a9ae2..9d7e5adea0 100644
> --- a/src/misc/image.c
> +++ b/src/misc/image.c
> @@ -776,7 +776,7 @@ static void DeleteEncoder( encoder_t * p_enc )
>       es_format_Clean( &p_enc->fmt_in );
>       es_format_Clean( &p_enc->fmt_out );
>   
> -    vlc_object_release( p_enc );
> +    vlc_object_delete(p_enc);
>   }
>   
>   static picture_t *filter_new_picture( filter_t *p_filter )
> @@ -825,5 +825,5 @@ static void DeleteConverter( filter_t * p_filter )
>       es_format_Clean( &p_filter->fmt_in );
>       es_format_Clean( &p_filter->fmt_out );
>   
> -    vlc_object_release( p_filter );
> +    vlc_object_delete(p_filter);
>   }
> diff --git a/src/misc/keystore.c b/src/misc/keystore.c
> index 88168373e8..55b094350d 100644
> --- a/src/misc/keystore.c
> +++ b/src/misc/keystore.c
> @@ -43,7 +43,7 @@ keystore_create(vlc_object_t *p_parent, const char *psz_name)
>       p_keystore->p_module = module_need(p_keystore, "keystore", psz_name, true);
>       if (p_keystore->p_module == NULL)
>       {
> -        vlc_object_release(p_keystore);
> +        vlc_object_delete(p_keystore);
>           return NULL;
>       }
>       assert(p_keystore->pf_store);
> @@ -72,7 +72,7 @@ vlc_keystore_release(vlc_keystore *p_keystore)
>       assert(p_keystore);
>       module_unneed(p_keystore, p_keystore->p_module);
>   
> -    vlc_object_release(p_keystore);
> +    vlc_object_delete(p_keystore);
>   }
>   
>   int
> diff --git a/src/misc/medialibrary.c b/src/misc/medialibrary.c
> index 200e0b5370..45c86782d1 100644
> --- a/src/misc/medialibrary.c
> +++ b/src/misc/medialibrary.c
> @@ -112,7 +112,7 @@ vlc_medialibrary_t* libvlc_MlCreate( libvlc_int_t* p_libvlc  )
>       if ( p_ml->m.p_module == NULL )
>       {
>           vlc_mutex_destroy( &p_ml->lock );
> -        vlc_object_release( &p_ml->m );
> +        vlc_object_delete(&p_ml->m);
>           return NULL;
>       }
>       return p_ml;
> @@ -124,7 +124,7 @@ void libvlc_MlRelease( vlc_medialibrary_t* p_ml )
>       module_unneed( &p_ml->m, p_ml->m.p_module );
>       assert( vlc_list_is_empty( &p_ml->cbs ) );
>       vlc_mutex_destroy( &p_ml->lock );
> -    vlc_object_release( &p_ml->m );
> +    vlc_object_delete(&p_ml->m);
>   }
>   
>   #undef vlc_ml_instance_get
> diff --git a/src/misc/messages.c b/src/misc/messages.c
> index 2a6e904682..41f0d23a09 100644
> --- a/src/misc/messages.c
> +++ b/src/misc/messages.c
> @@ -410,7 +410,7 @@ static void vlc_LogModuleClose(void *d)
>       if (module->ops->destroy != NULL)
>           module->ops->destroy(module->opaque);
>   
> -    vlc_object_release(VLC_OBJECT(module));
> +    vlc_object_delete(VLC_OBJECT(module));
>   }
>   
>   static const struct vlc_logger_operations module_ops = {
> @@ -429,7 +429,7 @@ static struct vlc_logger *vlc_LogModuleCreate(vlc_object_t *parent)
>       /* TODO: module configuration item */
>       if (vlc_module_load(VLC_OBJECT(module), "logger", NULL, false,
>                           vlc_logger_load, module) == NULL) {
> -        vlc_object_release(VLC_OBJECT(module));
> +        vlc_object_delete(VLC_OBJECT(module));
>           return NULL;
>       }
>   
> diff --git a/src/misc/probe.c b/src/misc/probe.c
> index 498909b423..08fe54194d 100644
> --- a/src/misc/probe.c
> +++ b/src/misc/probe.c
> @@ -49,6 +49,6 @@ void *vlc_probe (vlc_object_t *obj,
>   
>       void *ret = probe->list;
>       *pcount = probe->count;
> -    vlc_object_release (probe);
> +    vlc_object_delete(probe);
>       return ret;
>   }
> diff --git a/src/misc/renderer_discovery.c b/src/misc/renderer_discovery.c
> index cc5d619d15..0fe57c9d99 100644
> --- a/src/misc/renderer_discovery.c
> +++ b/src/misc/renderer_discovery.c
> @@ -236,7 +236,7 @@ void vlc_rd_release(vlc_renderer_discovery_t *p_rd)
>       module_unneed(p_rd, p_rd->p_module);
>       config_ChainDestroy(p_rd->p_cfg);
>       free(p_rd->psz_name);
> -    vlc_object_release(p_rd);
> +    vlc_object_delete(p_rd);
>   }
>   
>   vlc_renderer_discovery_t *
> @@ -259,7 +259,7 @@ vlc_rd_new(vlc_object_t *p_obj, const char *psz_name,
>               psz_name);
>           free(p_rd->psz_name);
>           config_ChainDestroy(p_rd->p_cfg);
> -        vlc_object_release(p_rd);
> +        vlc_object_delete(p_rd);
>           p_rd = NULL;
>       }
>   
> diff --git a/src/misc/update.c b/src/misc/update.c
> index f632b8f609..f5d6dc4ebe 100644
> --- a/src/misc/update.c
> +++ b/src/misc/update.c
> @@ -144,7 +144,7 @@ void update_Delete( update_t *p_update )
>       {
>           atomic_store( &p_update->p_download->aborted, true );
>           vlc_join( p_update->p_download->thread, NULL );
> -        vlc_object_release( p_update->p_download );
> +        vlc_object_delete(p_update->p_download);
>       }
>   
>       vlc_mutex_destroy( &p_update->lock );
> @@ -507,7 +507,7 @@ void update_Download( update_t *p_update, const char *psz_destdir )
>       {
>           atomic_store( &p_update->p_download->aborted, true );
>           vlc_join( p_update->p_download->thread, NULL );
> -        vlc_object_release( p_update->p_download );
> +        vlc_object_delete(p_update->p_download);
>       }
>   
>       update_download_thread_t *p_udt =
> diff --git a/src/misc/xml.c b/src/misc/xml.c
> index 3f9f678d04..6afbec139c 100644
> --- a/src/misc/xml.c
> +++ b/src/misc/xml.c
> @@ -45,7 +45,7 @@ xml_t *xml_Create( vlc_object_t *p_this )
>       p_xml->p_module = module_need( p_xml, "xml", NULL, false );
>       if( !p_xml->p_module )
>       {
> -        vlc_object_release( p_xml );
> +        vlc_object_delete(p_xml);
>           msg_Err( p_this, "XML provider not found" );
>           return NULL;
>       }
> @@ -59,7 +59,7 @@ xml_t *xml_Create( vlc_object_t *p_this )
>   void xml_Delete( xml_t *p_xml )
>   {
>       module_unneed( p_xml, p_xml->p_module );
> -    vlc_object_release( p_xml );
> +    vlc_object_delete(p_xml);
>   }
>   
>   
> @@ -81,7 +81,7 @@ xml_reader_t *xml_ReaderCreate(vlc_object_t *obj, stream_t *stream)
>       if (unlikely(reader->p_module == NULL))
>       {
>           msg_Err(reader, "XML reader not found");
> -        vlc_object_release(reader);
> +        vlc_object_delete(reader);
>           return NULL;
>       }
>       return reader;
> @@ -95,5 +95,5 @@ xml_reader_t *xml_ReaderCreate(vlc_object_t *obj, stream_t *stream)
>   void xml_ReaderDelete(xml_reader_t *reader)
>   {
>       module_unneed(reader, reader->p_module);
> -    vlc_object_release(reader);
> +    vlc_object_delete(reader);
>   }
> diff --git a/src/network/httpd.c b/src/network/httpd.c
> index d35fd689c1..b249c99213 100644
> --- a/src/network/httpd.c
> +++ b/src/network/httpd.c
> @@ -976,7 +976,7 @@ error:
>           net_ListenClose(host->fds);
>           vlc_cond_destroy(&host->wait);
>           vlc_mutex_destroy(&host->lock);
> -        vlc_object_release(host);
> +        vlc_object_delete(host);
>       }
>   
>       vlc_tls_ServerDelete(p_tls);
> @@ -1013,7 +1013,7 @@ void httpd_HostDelete(httpd_host_t *host)
>       net_ListenClose(host->fds);
>       vlc_cond_destroy(&host->wait);
>       vlc_mutex_destroy(&host->lock);
> -    vlc_object_release(host);
> +    vlc_object_delete(host);
>       vlc_mutex_unlock(&httpd.mutex);
>   }
>   
> diff --git a/src/network/tls.c b/src/network/tls.c
> index 305b73cd05..2fde82d61a 100644
> --- a/src/network/tls.c
> +++ b/src/network/tls.c
> @@ -88,7 +88,7 @@ vlc_tls_ServerCreate (vlc_object_t *obj, const char *cert_path,
>                           tls_server_load, srv, cert_path, key_path) == NULL)
>       {
>           msg_Err (srv, "TLS server plugin not available");
> -        vlc_object_release (srv);
> +        vlc_object_delete(srv);
>           return NULL;
>       }
>   
> @@ -102,7 +102,7 @@ void vlc_tls_ServerDelete(vlc_tls_server_t *crd)
>   
>       crd->ops->destroy(crd);
>       vlc_objres_clear(VLC_OBJECT(crd));
> -    vlc_object_release(crd);
> +    vlc_object_delete(crd);
>   }
>   
>   vlc_tls_client_t *vlc_tls_ClientCreate(vlc_object_t *obj)
> @@ -116,7 +116,7 @@ vlc_tls_client_t *vlc_tls_ClientCreate(vlc_object_t *obj)
>                           tls_client_load, crd) == NULL)
>       {
>           msg_Err (crd, "TLS client plugin not available");
> -        vlc_object_release (crd);
> +        vlc_object_delete(crd);
>           return NULL;
>       }
>   
> @@ -130,7 +130,7 @@ void vlc_tls_ClientDelete(vlc_tls_client_t *crd)
>   
>       crd->ops->destroy(crd);
>       vlc_objres_clear(VLC_OBJECT(crd));
> -    vlc_object_release (crd);
> +    vlc_object_delete(crd);
>   }
>   
>   
> diff --git a/src/playlist_legacy/engine.c b/src/playlist_legacy/engine.c
> index cac6c16a98..c68502c1a2 100644
> --- a/src/playlist_legacy/engine.c
> +++ b/src/playlist_legacy/engine.c
> @@ -342,7 +342,7 @@ void playlist_Destroy( playlist_t *p_playlist )
>           vlc_http_cookies_destroy( cookies );
>       }
>   
> -    vlc_object_release( p_playlist );
> +    vlc_object_delete(p_playlist);
>   }
>   
>   /** Get current playing input.
> diff --git a/src/playlist_legacy/loadsave.c b/src/playlist_legacy/loadsave.c
> index f87cc9cdac..3d65aef0b9 100644
> --- a/src/playlist_legacy/loadsave.c
> +++ b/src/playlist_legacy/loadsave.c
> @@ -82,7 +82,7 @@ int playlist_Export( playlist_t * p_playlist, const char *psz_filename,
>      fclose( p_export->p_file );
>   out:
>      free( p_export->base_url );
> -   vlc_object_release( p_export );
> +   vlc_object_delete(p_export);
>      return ret;
>   }
>   
> @@ -104,6 +104,6 @@ int playlist_Import( playlist_t *p_playlist, const char *psz_file )
>   
>       int ret = input_Read( dummy, p_input, NULL, NULL );
>   
> -    vlc_object_release( dummy );
> +    vlc_object_delete(dummy);
>       return ret;
>   }
> diff --git a/src/preparser/fetcher.c b/src/preparser/fetcher.c
> index bdae8bf758..14dcaab8ba 100644
> --- a/src/preparser/fetcher.c
> +++ b/src/preparser/fetcher.c
> @@ -158,7 +158,7 @@ static int InvokeModule( input_fetcher_t* fetcher, input_item_t* item,
>       if( mf_module )
>           module_unneed( mf, mf_module );
>   
> -    vlc_object_release( mf );
> +    vlc_object_delete(mf);
>   
>       return VLC_SUCCESS;
>   }
> diff --git a/src/stream_output/stream_output.c b/src/stream_output/stream_output.c
> index 730e536768..4c8bba8b5e 100644
> --- a/src/stream_output/stream_output.c
> +++ b/src/stream_output/stream_output.c
> @@ -132,7 +132,7 @@ sout_instance_t *sout_NewInstance( vlc_object_t *p_parent, const char *psz_dest
>       FREENULL( p_sout->psz_sout );
>   
>       vlc_mutex_destroy( &p_sout->lock );
> -    vlc_object_release( p_sout );
> +    vlc_object_delete(p_sout);
>       return NULL;
>   }
>   
> @@ -150,7 +150,7 @@ void sout_DeleteInstance( sout_instance_t * p_sout )
>       vlc_mutex_destroy( &p_sout->lock );
>   
>       /* *** free structure *** */
> -    vlc_object_release( p_sout );
> +    vlc_object_delete(p_sout);
>   }
>   
>   /*****************************************************************************
> @@ -310,7 +310,7 @@ sout_access_out_t *sout_AccessOutNew( vlc_object_t *p_sout,
>           free( p_access->psz_path );
>   error:
>           free( p_access->psz_access );
> -        vlc_object_release( p_access );
> +        vlc_object_delete(p_access);
>           return( NULL );
>       }
>   
> @@ -331,7 +331,7 @@ void sout_AccessOutDelete( sout_access_out_t *p_access )
>   
>       free( p_access->psz_path );
>   
> -    vlc_object_release( p_access );
> +    vlc_object_delete(p_access);
>   }
>   
>   /*****************************************************************************
> @@ -417,7 +417,7 @@ sout_mux_t * sout_MuxNew( sout_instance_t *p_sout, const char *psz_mux,
>       {
>           FREENULL( p_mux->psz_mux );
>   
> -        vlc_object_release( p_mux );
> +        vlc_object_delete(p_mux);
>           return NULL;
>       }
>   
> @@ -475,7 +475,7 @@ void sout_MuxDelete( sout_mux_t *p_mux )
>   
>       config_ChainDestroy( p_mux->p_cfg );
>   
> -    vlc_object_release( p_mux );
> +    vlc_object_delete(p_mux);
>   }
>   
>   /*****************************************************************************
> @@ -789,7 +789,7 @@ static void sout_StreamDelete( sout_stream_t *p_stream )
>       config_ChainDestroy( p_stream->p_cfg );
>   
>       msg_Dbg( p_stream, "destroying chain done" );
> -    vlc_object_release( p_stream );
> +    vlc_object_delete(p_stream);
>   }
>   
>   /* Destroy a "stream_out" modules chain
> diff --git a/src/video_output/display.c b/src/video_output/display.c
> index e94ef050f9..cd775f9ef4 100644
> --- a/src/video_output/display.c
> +++ b/src/video_output/display.c
> @@ -808,7 +808,7 @@ error:
>       video_format_Clean(&vd->source);
>       if (osys->video_context.device)
>           vlc_decoder_device_Release(osys->video_context.device);
> -    vlc_object_release(vd);
> +    vlc_object_delete(vd);
>       return NULL;
>   }
>   
> @@ -832,5 +832,5 @@ void vout_display_Delete(vout_display_t *vd)
>   
>       video_format_Clean(&vd->source);
>       video_format_Clean(&vd->fmt);
> -    vlc_object_release(vd);
> +    vlc_object_delete(vd);
>   }
> diff --git a/src/video_output/inhibit.c b/src/video_output/inhibit.c
> index 33d7369a44..43ca020cb1 100644
> --- a/src/video_output/inhibit.c
> +++ b/src/video_output/inhibit.c
> @@ -47,7 +47,7 @@ vlc_inhibit_t *vlc_inhibit_Create (vlc_object_t *parent)
>       priv->module = module_need (ih, "inhibit", NULL, false);
>       if (priv->module == NULL)
>       {
> -        vlc_object_release (ih);
> +        vlc_object_delete(ih);
>           ih = NULL;
>       }
>       return ih;
> @@ -58,5 +58,5 @@ void vlc_inhibit_Destroy (vlc_inhibit_t *ih)
>       assert (ih != NULL);
>   
>       module_unneed (ih, ((inhibit_t *)ih)->module);
> -    vlc_object_release (ih);
> +    vlc_object_delete(ih);
>   }
> diff --git a/src/video_output/opengl.c b/src/video_output/opengl.c
> index 9f43a00d4e..93527beea7 100644
> --- a/src/video_output/opengl.c
> +++ b/src/video_output/opengl.c
> @@ -90,7 +90,7 @@ vlc_gl_t *vlc_gl_Create(const struct vout_display_cfg *restrict cfg,
>                                    cfg->display.width, cfg->display.height);
>       if (gl->module == NULL)
>       {
> -        vlc_object_release(gl);
> +        vlc_object_delete(gl);
>           return NULL;
>       }
>       assert(gl->makeCurrent && gl->releaseCurrent && gl->swap
> @@ -114,7 +114,7 @@ void vlc_gl_Release(vlc_gl_t *gl)
>   
>       vlc_module_unload(gl->module, vlc_gl_stop, gl);
>       vlc_objres_clear(VLC_OBJECT(gl));
> -    vlc_object_release(gl);
> +    vlc_object_delete(gl);
>   }
>   
>   #include <vlc_vout_window.h>
> diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
> index ac2a4060e7..fa708955aa 100644
> --- a/src/video_output/video_output.c
> +++ b/src/video_output/video_output.c
> @@ -1626,7 +1626,7 @@ void vout_Close(vout_thread_t *vout)
>       sys->spu = NULL;
>       vlc_mutex_unlock(&sys->spu_lock);
>   
> -    vlc_object_release(vout);
> +    vlc_object_delete(vout);
>   }
>   
>   static void VoutDestructor(vlc_object_t *object)
> @@ -1720,7 +1720,7 @@ vout_thread_t *vout_Create(vlc_object_t *object)
>   
>       if (sys->display_cfg.window == NULL) {
>           spu_Destroy(sys->spu);
> -        vlc_object_release(vout);
> +        vlc_object_delete(vout);
>           return NULL;
>       }
>   
> diff --git a/src/video_output/vout_subpictures.c b/src/video_output/vout_subpictures.c
> index b13963869d..7494423a3a 100644
> --- a/src/video_output/vout_subpictures.c
> +++ b/src/video_output/vout_subpictures.c
> @@ -163,7 +163,7 @@ static void FilterRelease(filter_t *filter)
>   {
>       if (filter->p_module)
>           module_unneed(filter, filter->p_module);
> -    vlc_object_release(filter);
> +    vlc_object_delete(filter);
>   }
>   
>   static picture_t *spu_new_video_buffer(filter_t *filter)
> @@ -1387,7 +1387,7 @@ void spu_Destroy(spu_t *spu)
>   
>       vlc_mutex_destroy(&sys->lock);
>   
> -    vlc_object_release(spu);
> +    vlc_object_delete(spu);
>   }
>   
>   /**
> diff --git a/src/video_output/window.c b/src/video_output/window.c
> index 751da25690..3be9ab72e3 100644
> --- a/src/video_output/window.c
> +++ b/src/video_output/window.c
> @@ -70,7 +70,7 @@ vout_window_t *vout_window_New(vlc_object_t *obj, const char *module,
>       w->module = vlc_module_load(window, "vout window", module, false,
>                                   vout_window_start, window);
>       if (!w->module) {
> -        vlc_object_release(window);
> +        vlc_object_delete(window);
>           return NULL;
>       }
>   
> @@ -122,7 +122,7 @@ void vout_window_Delete(vout_window_t *window)
>       if (window->ops->destroy != NULL)
>           window->ops->destroy(window);
>       vlc_objres_clear(VLC_OBJECT(window));
> -    vlc_object_release(window);
> +    vlc_object_delete(window);
>   }
>   
>   void vout_window_SetInhibition(vout_window_t *window, bool enabled)
> diff --git a/test/src/input/decoder.c b/test/src/input/decoder.c
> index 0825befdd0..5773996b3f 100644
> --- a/test/src/input/decoder.c
> +++ b/test/src/input/decoder.c
> @@ -132,7 +132,7 @@ decoder_t *test_decoder_create(vlc_object_t *parent, const es_format_t *fmt)
>       if (packetizer == NULL || owner == NULL)
>       {
>           if (packetizer)
> -            vlc_object_release(packetizer);
> +            vlc_object_delete(packetizer);
>           return NULL;
>       }
>       decoder = &owner->dec;
> @@ -172,22 +172,22 @@ decoder_t *test_decoder_create(vlc_object_t *parent, const es_format_t *fmt)
>               decoder->cbs = &dec_spu_cbs;
>               break;
>           default:
> -            vlc_object_release(packetizer);
> -            vlc_object_release(decoder);
> +            vlc_object_delete(packetizer);
> +            vlc_object_delete(decoder);
>               return NULL;
>       }
>   
>       if (decoder_load(packetizer, true, fmt) != VLC_SUCCESS)
>       {
> -        vlc_object_release(packetizer);
> -        vlc_object_release(decoder);
> +        vlc_object_delete(packetizer);
> +        vlc_object_delete(decoder);
>           return NULL;
>       }
>   
>       if (decoder_load(decoder, false, &packetizer->fmt_out) != VLC_SUCCESS)
>       {
>           decoder_Destroy(packetizer);
> -        vlc_object_release(decoder);
> +        vlc_object_delete(decoder);
>           return NULL;
>       }
>   
>
> _______________________________________________
> vlc-commits mailing list
> vlc-commits at videolan.org
> https://mailman.videolan.org/listinfo/vlc-commits



More information about the vlc-devel mailing list