From: Conor McCarthy cmccarthy@codeweavers.com
--- dlls/mf/tests/mf.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c index 69fd051b96a..e8bf7f014b1 100644 --- a/dlls/mf/tests/mf.c +++ b/dlls/mf/tests/mf.c @@ -3113,6 +3113,8 @@ struct test_grabber_callback IMFCollection *samples; HANDLE ready_event; HANDLE done_event; + + BOOL shutdown; };
static struct test_grabber_callback *impl_from_IMFSampleGrabberSinkCallback(IMFSampleGrabberSinkCallback *iface) @@ -3227,6 +3229,8 @@ static HRESULT WINAPI test_grabber_callback_OnProcessSample(IMFSampleGrabberSink
static HRESULT WINAPI test_grabber_callback_OnShutdown(IMFSampleGrabberSinkCallback *iface) { + struct test_grabber_callback *grabber = impl_from_IMFSampleGrabberSinkCallback(iface); + grabber->shutdown = TRUE; return S_OK; }
@@ -4495,6 +4499,8 @@ static void test_sample_grabber_orientation(GUID subtype)
hr = IMFMediaSession_Shutdown(session); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(grabber_callback->shutdown, "Media sink is not shut down.\n"); hr = IMFMediaSource_Shutdown(source); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMFActivate_ShutdownObject(sink_activate); @@ -7116,12 +7122,15 @@ static void test_media_session_Start(void) ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = wait_media_event(session, callback, MESessionClosed, 1000, &propvar); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!grabber_callback->shutdown, "Media sink was shut down.\n");
/* Media session is shut down */ hr = IMFMediaSource_Shutdown(source); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMFMediaSession_Shutdown(session); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(grabber_callback->shutdown, "Media sink is not shut down.\n");
propvar.vt = VT_I8; propvar.hVal.QuadPart = 10000000; @@ -7200,8 +7209,11 @@ static void test_media_session_Start(void) ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = wait_media_event(session, callback, MESessionClosed, 1000, &propvar); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(!grabber_callback->shutdown, "Media sink was shut down.\n"); hr = IMFMediaSession_Shutdown(session); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(grabber_callback->shutdown, "Media sink is not shut down.\n"); hr = IMFMediaSource_Shutdown(source); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
@@ -7413,6 +7425,7 @@ static void test_media_session_source_shutdown(void)
IMFMediaSource_Release(source);
+ ok(!grabber_callback->shutdown, "Media sink was shut down.\n"); IMFActivate_ShutdownObject(sink_activate); IMFActivate_Release(sink_activate); IMFSampleGrabberSinkCallback_Release(&grabber_callback->IMFSampleGrabberSinkCallback_iface); @@ -7646,6 +7659,8 @@ static void test_media_session_Close(void)
hr = IMFMediaSession_Shutdown(session); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(grabber_callback->shutdown, "Media sink is not shut down.\n");
IMFPresentationClock_Release(presentation_clock); IMFAsyncCallback_Release(callback); @@ -7788,6 +7803,8 @@ static void test_media_session_thinning(void) ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); hr = IMFMediaSession_Shutdown(session); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + todo_wine + ok(grabber_callback->shutdown, "Media sink is not shut down.\n"); hr = IMFMediaSource_Shutdown(source); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);