Module: wine Branch: master Commit: f45c8fd2b8075fb2db72169d6c28af1ea000a047 URL: https://source.winehq.org/git/wine.git/?a=commit;h=f45c8fd2b8075fb2db72169d6...
Author: Giovanni Mascellani gmascellani@codeweavers.com Date: Wed Sep 22 13:18:38 2021 +0200
winegstreamer/media_source: Only seek if it was requested by the caller.
When starting a media source, the caller can specify a timestamp to seek to by mean of a PROPVARIANT argument. If the PROPVARIANT is empty, then no seek operation has to take place: playback has to either restart from the beginning (if the media source was previously in stopped state) or from where it was left (if the media source was in paused state).
Also, when a PROPVARIANT is empty it is a bug to use its content, because there is no guarantee that it is initialized to a sensible value.
This patch fixes both bugs by gating the seek operation with the check that the PROPVARIANT has the right type.
Signed-off-by: Giovanni Mascellani gmascellani@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/winegstreamer/media_source.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c index a10ad998231..46cb94d4cde 100644 --- a/dlls/winegstreamer/media_source.c +++ b/dlls/winegstreamer/media_source.c @@ -329,8 +329,9 @@ static void start_pipeline(struct media_source *source, struct source_async_comm
source->state = SOURCE_RUNNING;
- unix_funcs->wg_parser_stream_seek(source->streams[0]->wg_stream, 1.0, - position->hVal.QuadPart, 0, AM_SEEKING_AbsolutePositioning, AM_SEEKING_NoPositioning); + if (position->vt == VT_I8) + unix_funcs->wg_parser_stream_seek(source->streams[0]->wg_stream, 1.0, + position->hVal.QuadPart, 0, AM_SEEKING_AbsolutePositioning, AM_SEEKING_NoPositioning); unix_funcs->wg_parser_end_flush(source->wg_parser); }