When getting the value of a control binded source property, clip the
pipeline position if it is outside of the source range.
Depends on D1784
For the viewer, it happens when the size-allocate signal is emitted and the pipeline position is outside of the clip range. Also, in a later commit, I update the spin buttons and the viewer on position change. So, it's going to happen quite often.
This should be start + duration - 1
source_position = max(0, min(source_position, duration - 1))