Module: wine Branch: master Commit: ec7d032b16505e8d66a690675bf53560c91dcd4a URL: https://gitlab.winehq.org/wine/wine/-/commit/ec7d032b16505e8d66a690675bf5356...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Mon Oct 31 21:20:40 2022 +0300
mf/samplegrabber: Send MEStreamSinkRateChanged event.
Signed-off-by: Nikolay Sivov nsivov@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)