[vlc-devel] commit: Implement access_GetParentInput and demux_GetParentInput and use. ( Pierre d'Herbemont )
fenrir at via.ecp.fr
Thu Aug 27 14:17:41 CEST 2009
On Thu, Aug 27, 2009, Pierre d'Herbemont wrote:
> 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.
vlc_object_hold, as its name says, retains a vlc_object_t and only that
unless specified otherwise (idealy).
> 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.
Yes, the vlc_object_t part and that's all.
>> It is not misleading. It holds an object, not an access/demux/
>> 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
access is a sub-class of an object but NOT the other way around.
> 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.
You cannot do that easily. For each specific object you would then need
a different interface and that cannot be generic.
For example, instead of vout_thread_t you would need at least:
- vlc_object_t for VLC_COMMON_MEMBERS manipulation
- vout_decoder_interface for usage in input/decoder.c
- vout_resource_interface for usage in resource
- vout_external_interface for usage in interfaces/global code.
And of course a bunch of functions to retreive a reference of each interface
type (with all the refcounting, exclusion and ownership management).
Possible but not light.
The same thing would be needed for input_thread_t, aout_instance_t, etc.
IMHO, we can do more productive things with all the time that would require.
More information about the vlc-devel