From: Conor McCarthy cmccarthy@codeweavers.com
--- dlls/mf/tests/mf.c | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-)
diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c index fab0e4e86e1..0bb381e27d0 100644 --- a/dlls/mf/tests/mf.c +++ b/dlls/mf/tests/mf.c @@ -6833,6 +6833,7 @@ static void test_media_session_Start(void) UINT64 duration; DWORD caps; HRESULT hr; + DWORD ref;
hr = MFStartup(MF_VERSION, MFSTARTUP_FULL); ok(hr == S_OK, "Failed to start up, hr %#lx.\n", hr); @@ -6965,11 +6966,15 @@ static void test_media_session_Start(void) hr = IMFMediaSession_Start(session, &GUID_NULL, &propvar); ok(hr == MF_E_SHUTDOWN, "Unexpected hr %#lx.\n", hr);
+ /* sometimes briefly leaking */ + Sleep(20); + ref = IMFMediaSession_Release(session); + todo_wine + ok(!ref, "Unexpected refcount %ld.\n", ref); + IMFPresentationClock_Release(presentation_clock); IMFMediaSource_Release(source); IMFAsyncCallback_Release(callback); - /* sometimes briefly leaking */ - IMFMediaSession_Release(session); IMFActivate_ShutdownObject(sink_activate); IMFActivate_Release(sink_activate); IMFSampleGrabberSinkCallback_Release(&grabber_callback->IMFSampleGrabberSinkCallback_iface); @@ -7033,9 +7038,14 @@ static void test_media_session_Start(void) hr = IMFMediaSource_Shutdown(source); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ /* sometimes briefly leaking */ + Sleep(20); + ref = IMFMediaSession_Release(session); + todo_wine + ok(!ref || broken(!!ref), "Unexpected refcount %ld.\n", ref); + IMFPresentationClock_Release(presentation_clock); IMFAsyncCallback_Release(callback); - IMFMediaSession_Release(session); IMFMediaSource_Release(source); IMFActivate_ShutdownObject(sink_activate); IMFActivate_Release(sink_activate); @@ -7140,6 +7150,7 @@ static void test_media_session_source_shutdown(void) PROPVARIANT propvar; UINT64 duration; HRESULT hr; + DWORD ref; enum { TEST_START, @@ -7282,13 +7293,21 @@ static void test_media_session_source_shutdown(void) else ok(hr == MF_E_SHUTDOWN || hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ hr = IMFMediaSource_Shutdown(source); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + done: hr = IMFMediaSession_Shutdown(session); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ /* sometimes briefly leaking */ + Sleep(20); + ref = IMFMediaSession_Release(session); + todo_wine + ok(!ref, "Unexpected refcount %ld.\n", ref); + IMFMediaSource_Release(source); IMFAsyncCallback_Release(callback); - IMFMediaSession_Release(session); IMFActivate_ShutdownObject(sink_activate); IMFActivate_Release(sink_activate); IMFSampleGrabberSinkCallback_Release(&grabber_callback->IMFSampleGrabberSinkCallback_iface); @@ -7426,6 +7445,7 @@ static void test_media_session_Close(void) IMFClock *clock; UINT64 duration; HRESULT hr; + DWORD ref;
hr = MFStartup(MF_VERSION, MFSTARTUP_FULL); ok(hr == S_OK, "Failed to start up, hr %#lx.\n", hr); @@ -7477,9 +7497,14 @@ static void test_media_session_Close(void) hr = IMFMediaSession_Shutdown(session); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ /* sometimes briefly leaking */ + Sleep(20); + ref = IMFMediaSession_Release(session); + todo_wine + ok(!ref, "Unexpected refcount %ld.\n", ref); + IMFPresentationClock_Release(presentation_clock); IMFAsyncCallback_Release(callback); - IMFMediaSession_Release(session); IMFActivate_ShutdownObject(sink_activate); IMFActivate_Release(sink_activate); IMFSampleGrabberSinkCallback_Release(&grabber_callback->IMFSampleGrabberSinkCallback_iface);