From: Conor McCarthy cmccarthy@codeweavers.com
Calling session_deliver_sample_to_node() on the downstream node does not fulfill requests from the current node. It sets the downstream node to draining, and delivers all its pending requests according to its own request count. --- dlls/mf/session.c | 3 +-- dlls/mf/tests/mf.c | 1 - 2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/dlls/mf/session.c b/dlls/mf/session.c index d5776ceaa70..49ea14f6872 100644 --- a/dlls/mf/session.c +++ b/dlls/mf/session.c @@ -3810,10 +3810,9 @@ static void transform_node_deliver_samples(struct media_session *session, struct IMFMediaEvent_Release(event); }
- while (stream->requests && drained) + if (drained) { session_deliver_sample_to_node(session, down_node, input, NULL); - stream->requests--; } }
diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c index e5c61b9356b..7b9412e8a1d 100644 --- a/dlls/mf/tests/mf.c +++ b/dlls/mf/tests/mf.c @@ -6436,7 +6436,6 @@ static void test_media_session_Start(void) hr = IMFPresentationClock_GetTime(presentation_clock, &time); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(llabs(time) <= allowed_error, "Unexpected time %I64d.\n", time); - todo_wine check_sample_delivery(grabber_callback->ready_event);
/* Seek to 1s while in paused state */