[vlc-devel] [PATCH 1/4] es_out: add controls to cycle through ES tracks

Thomas Guillem thomas at gllm.fr
Wed Nov 14 18:13:43 CET 2018

On Wed, Nov 14, 2018, at 17:59, Rémi Denis-Courmont wrote:
> Le keskiviikkona 14. marraskuuta 2018, 18.50.15 EET Thomas Guillem a écrit :
> > With 2 new internal controls: ES_OUT_SET_ES_NEXT and ES_OUT_SET_ES_PREV.
> > This will fix a TOCTOU issue when selecting next or previous tracks.
> What ToCToU issue? If a track is added or removed at about the same time as 
> the user cycles, there is an intrinsic race. Intrinsic races can. by 
> definition, not be fixed.

TOCTOU if the user cycles tracks rapidly. Some controls could be dropped in that case. If the user press 3 times the next track button, you want to be sure to select the fourth track.
This is far more visible with programs that can take a longer time to initialize.

This also prevent cycling if the es_out policy is ES_OUT_ES_POLICY_SIMULTANEOUS. You can't really do something clever if there are more than one tracks selected for a same category, so it's better to do nothing.

If this patch is not accepted, I'll have to cycle through ES tracks from the client side and this won't prevent weird behavior in case of ES_OUT_ES_POLICY_SIMULTANEOUS.

> For instance, this will still select a track one microsecond before it ends. 
> From the user's point of view, that's no better than selecting a track that 
> ended one microsecond ago.
> Of coruse, the engine must be robust and must not trigger UB, not even on 
> intrinsic races.  As far as I know, the new ES reference counting already 
> solve that. But the timing-dependent behaviour cannot be avoided here. So I 
> would rather not add hopeless complexity.
> -- 
> 雷米‧德尼-库尔蒙
> http://www.remlab.net/
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel

More information about the vlc-devel mailing list