[PATCH 3/5] mfreadwrite: Abort ReadSample when unable to request any samples.
Derek Lesho
dlesho at codeweavers.com
Tue Oct 27 11:12:06 CDT 2020
Signed-off-by: Derek Lesho <dlesho at codeweavers.com>
---
dlls/mfreadwrite/reader.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/dlls/mfreadwrite/reader.c b/dlls/mfreadwrite/reader.c
index 96a82b798ab..7dcae5a1cfa 100644
--- a/dlls/mfreadwrite/reader.c
+++ b/dlls/mfreadwrite/reader.c
@@ -439,7 +439,8 @@ static HRESULT source_reader_new_stream_handler(struct source_reader *reader, IM
}
if (reader->streams[i].requests)
- source_reader_request_sample(reader, &reader->streams[i]);
+ if (FAILED(source_reader_request_sample(reader, &reader->streams[i])))
+ WakeAllConditionVariable(&reader->sample_event);
}
break;
}
@@ -1780,10 +1781,17 @@ static HRESULT source_reader_read_sample(struct source_reader *reader, DWORD ind
stream->requests++;
if (FAILED(hr = source_reader_request_sample(reader, stream)))
WARN("Failed to request a sample, hr %#x.\n", hr);
+ if (stream->stream && !(stream->flags & STREAM_FLAG_SAMPLE_REQUESTED))
+ {
+ *actual_index = index;
+ *stream_flags = MF_SOURCE_READERF_ERROR;
+ *timestamp = 0;
+ break;
+ }
SleepConditionVariableCS(&reader->sample_event, &reader->cs, INFINITE);
}
-
- source_reader_get_read_result(reader, stream, flags, &hr, actual_index, stream_flags,
+ if (SUCCEEDED(hr))
+ source_reader_get_read_result(reader, stream, flags, &hr, actual_index, stream_flags,
timestamp, sample);
}
}
--
2.28.0
More information about the wine-devel
mailing list