[vlc-devel] commit: Implement access_GetParentInput and demux_GetParentInput and use. ( Pierre d'Herbemont )

Pierre d'Herbemont pdherbemont at gmail.com
Thu Aug 27 11:24:35 CEST 2009


On Aug 27, 2009, at 8:50 AM, Rémi Denis-Courmont wrote:

>
> On Wed, 26 Aug 2009 22:27:10 +0200, Pierre d'Herbemont
> <pdherbemont at gmail.com> wrote:
>> My point is we don't do proper refcounting on some object that
>> announce it.
>
> You still failed to give any concrete example of that.

*All* object, it is a matter of naming. input_thread_t, demux_t,  
access_t are objects, They all have vlc_object_hold() and some of them  
may crash on public accessor.

By object I generally refer to an entity that you create and destroy.  
This is simply a generic term that is being misused by vlc_object_t.

I say that demux_t is an object, and using vlc_object_hold() on it is  
misleading because it's only retaining some part of the structure.  
Okay, that you say it's only retaining at least the COMMON_MEMBERS,  
but then, please change the name. If you have use some serious object  
oriented API this is completely misleading.

>> Your point is that we've never been annoucing more than only
>> refcounting internals so that variables can be used.
>
> No. The point is that we have not been exposing at least:
> - object name,
> - object type (name),
> - VLC variables,
> - children list,
> - "alive" status and ability to kill.

ie - internals. We agree on that. (I assume that you don't want the  
"not", else this is non sense ;) ).

>> So obviously there is something missing: The documentation on that,  
>> or
>> the name changes in the API, to be less misleading.
>
> It is not misleading. It holds an object, not an access/demux/ 
> whatever.
> You are misleading.

Come on. access is an object, demux is an object, whatever is an  
object. Don't use generic misleading term to describe something else.  
This is misleading.

>> We don't do proper refcounting for (all?) vlc_object_t, even if we
>> pretend we do by having this vlc_object_hold. (This used to be even
>> more true back in the time when we used to wait until object
>> destruction).
>
> You still failed to give any such object. I am not aware of any  
> error in
> our handling of access and demux objects, other than the way we  
> "kill" them

I don't think there should be any error because the only vlc_object_t  
that are being used outside are
aout_instance, input_thread_t, and playlist_t.

Those are safe to use if you hold a reference that comes from  
vlc_object_hold().

The point is, this is not the case with other object (demux, access),  
and I would like to see a distinction between those. Laurent suggested  
doc change, which would be nice.

I would like probably to change the API to reflect those different  
type of reference owning, toward something less generic but more  
explicit.

> (which is _not_ a reference counting problem anyhow).

Completely agreed.

> vlc_object_hold() is legal if:
> - the caller already has a reference to the object, and/or

Yes, but then the reference you keep is restrained compared to the  
reference that was passed. I would like to make that distinction at  
API level.

Pierre.


More information about the vlc-devel mailing list