GetState must return VFW_S_STATE_INTERMEDIATE after flushing, until a sample is received.
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/qedit/tests/nullrenderer.c | 2 +- dlls/quartz/tests/videorenderer.c | 2 +- dlls/quartz/tests/vmr7.c | 2 +- dlls/quartz/tests/vmr9.c | 2 +- dlls/strmbase/renderer.c | 1 + 5 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/dlls/qedit/tests/nullrenderer.c b/dlls/qedit/tests/nullrenderer.c index 1800f4d..cf0ae2c 100644 --- a/dlls/qedit/tests/nullrenderer.c +++ b/dlls/qedit/tests/nullrenderer.c @@ -763,7 +763,7 @@ static void test_flushing(IPin *pin, IMemInputPin *input, IFilterGraph2 *graph) /* We dropped the sample we were holding, so now we need a new one... */
hr = IMediaControl_GetState(control, 0, &state); - todo_wine ok(hr == VFW_S_STATE_INTERMEDIATE, "Got hr %#x.\n", hr); + ok(hr == VFW_S_STATE_INTERMEDIATE, "Got hr %#x.\n", hr);
thread = send_frame(input); ok(WaitForSingleObject(thread, 100) == WAIT_TIMEOUT, "Thread should block in Receive().\n"); diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c index ffe370a..2320aa1 100644 --- a/dlls/quartz/tests/videorenderer.c +++ b/dlls/quartz/tests/videorenderer.c @@ -991,7 +991,7 @@ static void test_flushing(IPin *pin, IMemInputPin *input, IMediaControl *control /* We dropped the sample we were holding, so now we need a new one... */
hr = IMediaControl_GetState(control, 0, &state); - todo_wine ok(hr == VFW_S_STATE_INTERMEDIATE, "Got hr %#x.\n", hr); + ok(hr == VFW_S_STATE_INTERMEDIATE, "Got hr %#x.\n", hr);
thread = send_frame(input); ok(WaitForSingleObject(thread, 100) == WAIT_TIMEOUT, "Thread should block in Receive().\n"); diff --git a/dlls/quartz/tests/vmr7.c b/dlls/quartz/tests/vmr7.c index ba2a98c..8418579 100644 --- a/dlls/quartz/tests/vmr7.c +++ b/dlls/quartz/tests/vmr7.c @@ -1200,7 +1200,7 @@ static void test_flushing(IPin *pin, IMemInputPin *input, IMediaControl *control /* We dropped the sample we were holding, so now we need a new one... */
hr = IMediaControl_GetState(control, 0, &state); - todo_wine ok(hr == VFW_S_STATE_INTERMEDIATE, "Got hr %#x.\n", hr); + ok(hr == VFW_S_STATE_INTERMEDIATE, "Got hr %#x.\n", hr); ok(state == State_Paused, "Got state %#x.\n", state);
thread = send_frame(input); diff --git a/dlls/quartz/tests/vmr9.c b/dlls/quartz/tests/vmr9.c index 8b46e47..529b8b8 100644 --- a/dlls/quartz/tests/vmr9.c +++ b/dlls/quartz/tests/vmr9.c @@ -1219,7 +1219,7 @@ static void test_flushing(IPin *pin, IMemInputPin *input, IMediaControl *control /* We dropped the sample we were holding, so now we need a new one... */
hr = IMediaControl_GetState(control, 0, &state); - todo_wine ok(hr == VFW_S_STATE_INTERMEDIATE, "Got hr %#x.\n", hr); + ok(hr == VFW_S_STATE_INTERMEDIATE, "Got hr %#x.\n", hr); ok(state == State_Paused, "Got state %#x.\n", state);
thread = send_frame(input); diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index 8da3d81..d9e53a1 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -287,6 +287,7 @@ static HRESULT sink_begin_flush(struct strmbase_sink *iface) { struct strmbase_renderer *filter = impl_from_IPin(&iface->pin.IPin_iface);
+ ResetEvent(filter->state_event); SetEvent(filter->flush_event);
return S_OK;
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=86710
Your paranoid android.
=== w10pro64 (32 bit report) ===
quartz: videorenderer.c:1000: Test failed: Got hr 0x1.
=== w10pro64_ar (64 bit report) ===
quartz: videorenderer.c:1087: Test failed: Got hr 0x80004005.
=== w10pro64_ja (64 bit report) ===
quartz: videorenderer.c:1087: Test failed: Got hr 0x80004005.
See https://www.winehq.org/pipermail/wine-devel/2020-November/177081.html. I still haven't finished the aforementioned restructuring, unfortunately, although the conversion of winegstreamer to PE helps. (Ideally we'd have wineqtdecoder converted or replaced in a similar way, too, but...)
On 09/03/2021 18:42, Zebediah Figura (she/her) wrote:
See https://www.winehq.org/pipermail/wine-devel/2020-November/177081.html. I still haven't finished the aforementioned restructuring, unfortunately, although the conversion of winegstreamer to PE helps. (Ideally we'd have wineqtdecoder converted or replaced in a similar way, too, but...)
Yeah, I was revisiting some of my patches and I saw that there's no csRenderLock anymore, so I assumed it was done. Sorry for the noise.