Module: wine
Branch: master
Commit: ec7d032b16505e8d66a690675bf53560c91dcd4a
URL:
https://gitlab.winehq.org/wine/wine/-/commit/ec7d032b16505e8d66a690675bf535…
Author: Nikolay Sivov <nsivov(a)codeweavers.com>
Date: Mon Oct 31 21:20:40 2022 +0300
mf/samplegrabber: Send MEStreamSinkRateChanged event.
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/mf/samplegrabber.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/dlls/mf/samplegrabber.c b/dlls/mf/samplegrabber.c
index 2d9f8109aca..84b8d71d6be 100644
--- a/dlls/mf/samplegrabber.c
+++ b/dlls/mf/samplegrabber.c
@@ -1203,10 +1203,23 @@ static HRESULT WINAPI
sample_grabber_clock_sink_OnClockRestart(IMFClockStateSink
static HRESULT WINAPI sample_grabber_clock_sink_OnClockSetRate(IMFClockStateSink *iface,
MFTIME systime, float rate)
{
struct sample_grabber *grabber = impl_from_IMFClockStateSink(iface);
+ HRESULT hr = S_OK;
TRACE("%p, %s, %f.\n", iface, debugstr_time(systime), rate);
- return
IMFSampleGrabberSinkCallback_OnClockSetRate(sample_grabber_get_callback(grabber), systime,
rate);
+ EnterCriticalSection(&grabber->cs);
+
+ if (grabber->is_shut_down)
+ hr = MF_E_SHUTDOWN;
+ else
+ IMFStreamSink_QueueEvent(&grabber->IMFStreamSink_iface,
MEStreamSinkRateChanged, &GUID_NULL, S_OK, NULL);
+
+ LeaveCriticalSection(&grabber->cs);
+
+ if (SUCCEEDED(hr))
+ hr =
IMFSampleGrabberSinkCallback_OnClockSetRate(sample_grabber_get_callback(grabber), systime,
rate);
+
+ return hr;
}
static HRESULT WINAPI sample_grabber_events_QueryInterface(IMFMediaEventGenerator *iface,
REFIID riid, void **obj)