mf/samplegrabber: Check shutdown state when setting the clock.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
Nikolay Sivov 2023-10-31 10:00:25 +01:00 committed by Alexandre Julliard
parent c45ae2c680
commit 882d822900
2 changed files with 15 additions and 4 deletions

View file

@ -1054,7 +1054,11 @@ static HRESULT WINAPI sample_grabber_sink_SetPresentationClock(IMFMediaSink *ifa
EnterCriticalSection(&grabber->cs);
if (SUCCEEDED(hr = IMFSampleGrabberSinkCallback_OnSetPresentationClock(sample_grabber_get_callback(grabber),
if (grabber->is_shut_down)
{
hr = MF_E_SHUTDOWN;
}
else if (SUCCEEDED(hr = IMFSampleGrabberSinkCallback_OnSetPresentationClock(sample_grabber_get_callback(grabber),
clock)))
{
sample_grabber_set_presentation_clock(grabber, clock);

View file

@ -4649,9 +4649,16 @@ static void test_sample_grabber(void)
EXPECT_REF(clock, 3);
hr = IMFMediaSink_Shutdown(sink);
ok(hr == S_OK, "Failed to shut down, hr %#lx.\n", hr);
EXPECT_REF(clock, 1);
hr = IMFMediaSink_SetPresentationClock(sink, NULL);
ok(hr == MF_E_SHUTDOWN, "Unexpected hr %#lx.\n", hr);
hr = IMFMediaSink_SetPresentationClock(sink, clock);
ok(hr == MF_E_SHUTDOWN, "Unexpected hr %#lx.\n", hr);
ref = IMFPresentationClock_Release(clock);
ok(ref == 0, "Release returned %ld\n", ref);
ok(!ref, "Unexpected refcount %ld.\n", ref);
hr = IMFMediaEventGenerator_GetEvent(eg, MF_EVENT_FLAG_NO_WAIT, &event);
ok(hr == MF_E_SHUTDOWN, "Unexpected hr %#lx.\n", hr);
@ -4730,9 +4737,9 @@ static void test_sample_grabber(void)
IMFStreamSink_Release(stream);
ref = IMFActivate_Release(activate);
ok(ref == 0, "Release returned %ld\n", ref);
ok(!ref, "Unexpected refcount %ld.\n", ref);
ref = IMFMediaSink_Release(sink);
ok(ref == 0, "Release returned %ld\n", ref);
ok(!ref, "Unexpected refcount %ld.\n", ref);
/* Rateless mode with MF_SAMPLEGRABBERSINK_IGNORE_CLOCK. */
hr = MFCreateMediaType(&media_type);