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 --- v2: Add a more complete description.
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); }