diff --git a/dlls/evr/mixer.c b/dlls/evr/mixer.c index 28361255fe1..5ea1b9aa22b 100644 --- a/dlls/evr/mixer.c +++ b/dlls/evr/mixer.c @@ -949,6 +949,7 @@ static HRESULT WINAPI video_mixer_transform_ProcessMessage(IMFTransform *iface, { struct video_mixer *mixer = impl_from_IMFTransform(iface); HRESULT hr = S_OK; + unsigned int i; TRACE("%p, %u, %#lx.\n", iface, message, param); @@ -966,6 +967,23 @@ static HRESULT WINAPI video_mixer_transform_ProcessMessage(IMFTransform *iface, break; + case MFT_MESSAGE_COMMAND_FLUSH: + + EnterCriticalSection(&mixer->cs); + + for (i = 0; i < mixer->input_count; ++i) + { + if (mixer->inputs[i].sample) + { + IMFSample_Release(mixer->inputs[i].sample); + mixer->inputs[i].sample = NULL; + } + } + + LeaveCriticalSection(&mixer->cs); + + break; + case MFT_MESSAGE_COMMAND_DRAIN: break;