[PATCH v2 2/3] winegstreamer/media_source: Only seek if it was requested by the caller.

Giovanni Mascellani gmascellani at codeweavers.com
Wed Sep 22 06:18:38 CDT 2021


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>
---
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);
 }
 
-- 
2.33.0




More information about the wine-devel mailing list