Nikolay Sivov : mf/samplegrabber: Send MEStreamSinkRateChanged event.
Module: wine Branch: master Commit: ec7d032b16505e8d66a690675bf53560c91dcd4a URL: https://gitlab.winehq.org/wine/wine/-/commit/ec7d032b16505e8d66a690675bf5356... 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)
participants (1)
-
Alexandre Julliard