[PATCH 6/6] mfreadwrite: Do not call async reader callback if source failed to start up.
Nikolay Sivov
nsivov at codeweavers.com
Mon Mar 30 06:21:29 CDT 2020
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/mfreadwrite/reader.c | 19 +++++++------------
1 file changed, 7 insertions(+), 12 deletions(-)
diff --git a/dlls/mfreadwrite/reader.c b/dlls/mfreadwrite/reader.c
index 3b024fc80c..9a7c5e5fd7 100644
--- a/dlls/mfreadwrite/reader.c
+++ b/dlls/mfreadwrite/reader.c
@@ -895,7 +895,7 @@ static BOOL source_reader_get_read_result(struct source_reader *reader, struct m
source_reader_release_response(response);
}
- return request_sample;
+ return !request_sample;
}
static HRESULT source_reader_get_stream_read_index(struct source_reader *reader, DWORD index, DWORD *stream_index)
@@ -984,8 +984,8 @@ static HRESULT WINAPI source_reader_async_commands_callback_Invoke(IMFAsyncCallb
struct source_reader_async_command *command;
struct stream_response *response;
DWORD stream_index, stream_flags;
- BOOL request_sample = FALSE;
struct media_stream *stream;
+ BOOL report_sample = FALSE;
IMFSample *sample = NULL;
LONGLONG timestamp = 0;
HRESULT hr, status;
@@ -1008,10 +1008,8 @@ static HRESULT WINAPI source_reader_async_commands_callback_Invoke(IMFAsyncCallb
if (SUCCEEDED(hr = source_reader_start_source(reader)))
{
- request_sample = source_reader_get_read_result(reader, stream, command->flags, &status, &stream_index,
- &stream_flags, ×tamp, &sample);
-
- if (request_sample)
+ if (!(report_sample = source_reader_get_read_result(reader, stream, command->flags, &status, &stream_index,
+ &stream_flags, ×tamp, &sample)))
{
stream->requests++;
source_reader_request_sample(reader, stream);
@@ -1021,7 +1019,7 @@ static HRESULT WINAPI source_reader_async_commands_callback_Invoke(IMFAsyncCallb
LeaveCriticalSection(&stream->cs);
- if (!request_sample)
+ if (report_sample)
IMFSourceReaderCallback_OnReadSample(reader->async_callback, status, stream_index, stream_flags,
timestamp, sample);
@@ -1532,7 +1530,6 @@ static HRESULT source_reader_read_sample(struct source_reader *reader, DWORD ind
unsigned int actual_index_tmp;
struct media_stream *stream;
LONGLONG timestamp_tmp;
- BOOL request_sample;
DWORD stream_index;
HRESULT hr = S_OK;
@@ -1563,10 +1560,8 @@ static HRESULT source_reader_read_sample(struct source_reader *reader, DWORD ind
if (SUCCEEDED(hr = source_reader_start_source(reader)))
{
- request_sample = source_reader_get_read_result(reader, stream, flags, &hr, actual_index, stream_flags,
- timestamp, sample);
-
- if (request_sample)
+ if (!source_reader_get_read_result(reader, stream, flags, &hr, actual_index, stream_flags,
+ timestamp, sample))
{
while (list_empty(&stream->responses) && stream->state != STREAM_STATE_EOS)
{
--
2.25.1
More information about the wine-devel
mailing list