Signed-off-by: Giovanni Mascellani gmascellani@codeweavers.com --- dlls/mfreadwrite/reader.c | 2 ++ dlls/mfreadwrite/tests/mfplat.c | 6 ++++++ 2 files changed, 8 insertions(+)
diff --git a/dlls/mfreadwrite/reader.c b/dlls/mfreadwrite/reader.c index ab959c26165..a41de5fb453 100644 --- a/dlls/mfreadwrite/reader.c +++ b/dlls/mfreadwrite/reader.c @@ -544,9 +544,11 @@ static HRESULT source_reader_source_state_handler(struct source_reader *reader, { case MESourceStarted: reader->source_state = SOURCE_STATE_STARTED; + reader->flags &= ~SOURCE_READER_SEEKING; break; case MESourceStopped: reader->source_state = SOURCE_STATE_STOPPED; + reader->flags &= ~SOURCE_READER_SEEKING; break; case MESourceSeeked: reader->flags &= ~SOURCE_READER_SEEKING; diff --git a/dlls/mfreadwrite/tests/mfplat.c b/dlls/mfreadwrite/tests/mfplat.c index c6191767164..25aa29ac272 100644 --- a/dlls/mfreadwrite/tests/mfplat.c +++ b/dlls/mfreadwrite/tests/mfplat.c @@ -902,6 +902,7 @@ static void test_source_reader_from_media_source(void) IMFAttributes *attributes; ULONG refcount; int i; + PROPVARIANT pos;
source = create_test_source(); ok(!!source, "Failed to create test source.\n"); @@ -916,6 +917,11 @@ static void test_source_reader_from_media_source(void) hr = IMFSourceReader_SetStreamSelection(reader, 1, TRUE); ok(hr == S_OK, "Failed to select a stream, hr %#x.\n", hr);
+ pos.vt = VT_I8; + pos.hVal.QuadPart = 0; + hr = IMFSourceReader_SetCurrentPosition(reader, &GUID_NULL, &pos); + ok(hr == S_OK, "Failed to seek to beginning of stream, hr %#x.\n", hr); + hr = IMFSourceReader_ReadSample(reader, MF_SOURCE_READER_ANY_STREAM, 0, &actual_index, &stream_flags, ×tamp, &sample); ok(hr == S_OK, "Failed to get a sample, hr %#x.\n", hr);