[vlc-devel] [RFC] Moving services discovery out of the playlist

Romain Vimont rom1v at videolabs.io
Sun Jun 10 13:28:59 CEST 2018


Hi Rémi,

Thank you for your feedbacks.

On Fri, Jun 08, 2018 at 07:33:32PM +0300, Rémi Denis-Courmont wrote:
> Le perjantaina 8. kesäkuuta 2018, 18.05.58 EEST Romain Vimont a écrit :
> > Hi,
> > 
> > We would like to move services discovery out of the playlist, I explain
> > why and detail a proposal in this RFC:
> > <https://github.com/rom1v/vlc/blob/sd/rfc.md>
> > 
> > I would appreciate feedbacks ;-)
> 
> playlist_IsServicesDiscoveryLoaded() is deprecated because it's broken by 
> design, and nobody proposed a sane alternative. Anything that tries to imitate 
> is thus presumed broken by design too. And that seems to include 
> media_browser_GetMediaSource().

AFAIU, playlist_IsServicesDiscoveryLoaded() is broken because it's
inherently racy.

I think that media_browser_GetMediaSource() is more equivalent to
playlist_ServicesDiscoveryAdd(), except that it creates/loads the SD
only if it was not already loaded, without race conditions (unless
there is a bug). Is something wrong with this?

> Also I don't see the point in reference counting. SD instances are not 
> reentrant, so I don't see what you can do with a reference to one.

Several concurrent clients (interfaces) may request a SD, in that case
GetMediaSource() returns the same media_source_t instance (containing
the same media tree).

Reference counting is used to release the instance (and close the SD)
when no more clients use it (in C++, a shared_ptr could have been used
instead).


More information about the vlc-devel mailing list