[vlc-devel] [PATCH 2/2] input: don't override "time" and "position" when user seeks

Rémi Denis-Courmont remi at remlab.net
Fri Jun 10 16:16:48 CEST 2016

Le 2016-06-10 16:03, Thomas Guillem a écrit :
>> > The input_thread_t could override theses var before the seek 
>> controls
>> > were
>> > processed (from MainLoopStatistics()). This could lead to an UI
>> > glitch: the
>> > seek bar goes back to the previous position and then return to the
>> > seek
>> > position when the control is processed.
>> There are no ways to avoid that. Someone (Derk Jan, IIRC) already 
>> added
>> a work around for this glitch aeons ago, which mostly works. But 
>> there
>> is always a race where a the value of the variable(s) is queried 
>> right
>> after a seek request, before the input thread has had the time to 
>> adjust
>> the value(s).
> This issue is still easily reproducible with UHD videos on desktop. 
> It
> happens a lot on VLC ports. I tried to do a hack in the android port,
> but it's not a perfect one (and it's ugly)...

Your patch does not fix the glitch. As long as interfaces call set 
"time" and/or "position" to seek, the values will not represent the 
current state.

There are three solutions, none of which you'll probably like:

1) The variables represent the current time only, are set exclusively 
by the input thread. UI must seek by another mean. (Like audio output 
2) The variables are used exclusively to request seek. Current time 
must be retrieved by another mean. (Like filters variables.)
3) The variables are removed completely. Different means must be used 
both to request seek and to retrieve the current time.

Rémi Denis-Courmont

More information about the vlc-devel mailing list