[vlc-devel] commit: Fix cyclic dependancy between input and "sout stream" description ( Rafaël Carré )
Rafaël Carré
funman at videolan.org
Tue May 13 16:34:40 CEST 2008
2008/5/13 Remi Denis-Courmont <rdenis at simphalempin.com>:
>
> On Tue, 13 May 2008 12:14:49 +0200 (CEST), git at videolan.org (git version
> control) wrote:
> > vlc | branch: master | Rafaël Carré <funman at videolan.org> | Tue May 13
> > 12:15:42 2008 +0200| [8a0dc31dcad18b36c9545910c0e09b22a4c6c020]
> >
> > Fix cyclic dependancy between input and "sout stream" description
>
> Wrong. Broken. (And ugly.)
Yay, ugly.
> A sout plugin CAN be "unparented" and change input. That's the whole point
> of --sout-keep.
True, this is why I noticed the bug with vlm, which explicitely
specifies --no-sout-keep
> Hence a sout plugin must yield the input (or any other foreign object) for
> as long as it needs it. Please revert.
I will not revert, but instead I'll cook a good fix:
What happens is that when no-sout-keep is specified, description keeps
the last reference on the input object, and when releasing it ( in
Del() ) the input will be destroyed, and all his children (including
description) also.
In ASCII Art that gives:
Del() /* description.c */
vlc_object_release(p_sys->input) //reference count now down to 0.
/* description.c */
.....
input_destructor() //or whatever the correct name is /* input.c */
Close() /* description.c */
assert( !p_sys->p_input ) /* description.c */
p_sys->input = NULL; /* description.c */
I don't know yet what the correct fix is, but for sure it isn't
removing the assertion.
--
Rafaël Carré
More information about the vlc-devel
mailing list