diff --git a/dlls/quartz/memallocator.c b/dlls/quartz/memallocator.c index 91c23736fd0..5ac8a72a818 100644 --- a/dlls/quartz/memallocator.c +++ b/dlls/quartz/memallocator.c @@ -685,8 +685,15 @@ static HRESULT WINAPI StdMediaSample2_SetMediaType(IMediaSample2 * iface, AM_MED DeleteMediaType(This->props.pMediaType); This->props.pMediaType = NULL; } + if (!pMediaType) + { + This->props.dwSampleFlags &= ~AM_SAMPLE_TYPECHANGED; return S_OK; + } + + This->props.dwSampleFlags |= AM_SAMPLE_TYPECHANGED; + if (!(This->props.pMediaType = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE)))) return E_OUTOFMEMORY; diff --git a/dlls/quartz/tests/memallocator.c b/dlls/quartz/tests/memallocator.c index 9bbfd425cfa..164f3af47f4 100644 --- a/dlls/quartz/tests/memallocator.c +++ b/dlls/quartz/tests/memallocator.c @@ -509,7 +509,7 @@ static void test_sample_properties(void) hr = IMediaSample2_GetProperties(sample2, sizeof(props), (BYTE *)&props); ok(hr == S_OK, "Got hr %#x.\n", hr); - todo_wine ok(props.dwSampleFlags == AM_SAMPLE_TYPECHANGED, "Got flags %#x.\n", props.dwSampleFlags); + ok(props.dwSampleFlags == AM_SAMPLE_TYPECHANGED, "Got flags %#x.\n", props.dwSampleFlags); ok(!memcmp(props.pMediaType, &expect_mt, sizeof(AM_MEDIA_TYPE)), "Media types didn't match.\n"); hr = IMediaSample_SetMediaType(sample, NULL);