Nikolay Sivov : evr/mixer: Drop input samples on flush.

Alexandre Julliard julliard at winehq.org
Wed Oct 21 15:15:13 CDT 2020


Module: wine
Branch: master
Commit: e2a4b8a56338bd6a598e0e77aa74487abd32f387
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=e2a4b8a56338bd6a598e0e77aa74487abd32f387

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Wed Oct 21 09:46:32 2020 +0300

evr/mixer: Drop input samples on flush.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;
 




More information about the wine-cvs mailing list