Giovanni Mascellani : winegstreamer/media_source: Only seek if it was requested by the caller.

Alexandre Julliard julliard at winehq.org
Mon Sep 27 15:21:46 CDT 2021


Module: wine
Branch: master
Commit: f45c8fd2b8075fb2db72169d6c28af1ea000a047
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=f45c8fd2b8075fb2db72169d6c28af1ea000a047

Author: Giovanni Mascellani <gmascellani at 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 at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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);
 }
 




More information about the wine-cvs mailing list