Module: wine Branch: master Commit: e2a4b8a56338bd6a598e0e77aa74487abd32f387 URL: https://source.winehq.org/git/wine.git/?a=commit;h=e2a4b8a56338bd6a598e0e77a...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Wed Oct 21 09:46:32 2020 +0300
evr/mixer: Drop input samples on flush.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/evr/mixer.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
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;