From: Akihiro Sagawa <sagawa.aki@gmail.com> --- dlls/quartz/tests/filtergraph.c | 48 +++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/dlls/quartz/tests/filtergraph.c b/dlls/quartz/tests/filtergraph.c index a3071c0db91..09d32932676 100644 --- a/dlls/quartz/tests/filtergraph.c +++ b/dlls/quartz/tests/filtergraph.c @@ -5945,10 +5945,54 @@ static void test_events(void) hr = IMediaControl_Stop(media_control); ok(hr == S_OK, "Got hr %#lx.\n", hr); - hr = IMediaEventEx_RestoreDefaultHandling(media_event, EC_COMPLETE); + /* Test WaitForCompletion(). */ + + hr = IMediaEventEx_CancelDefaultHandling(media_event, EC_COMPLETE); ok(hr == S_OK, "Got hr %#lx.\n", hr); - /* Test WaitForCompletion(). */ + hr = IMediaControl_Run(media_control); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code); + ok(hr == E_ABORT, "Got hr %#lx.\n", hr); + + hr = IMediaEventSink_Notify(media_event_sink, EC_COMPLETE, S_OK, + (LONG_PTR)&filter.IBaseFilter_iface); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + code = 0xdeadbeef; + hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code); + todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr); + todo_wine ok(code == EC_COMPLETE, "Got code %#lx.\n", code); + + hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code); + todo_wine ok(hr == VFW_E_WRONG_STATE, "Got hr %#lx.\n", hr); + + hr = IMediaEventEx_SetNotifyFlags(media_event, AM_MEDIAEVENT_NONOTIFY); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IMediaEventSink_Notify(media_event_sink, EC_COMPLETE, S_OK, + (LONG_PTR)&filter.IBaseFilter_iface); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + code = 0xdeadbeef; + hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code); + todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(code == 0, "Got code %#lx.\n", code); + + code = 0xdeadbeef; + hr = IMediaEventEx_WaitForCompletion(media_event, 0, &code); + todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(code == 0, "Got code %#lx.\n", code); + + hr = IMediaEventEx_SetNotifyFlags(media_event, 0); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IMediaControl_Stop(media_control); + ok(hr == S_OK, "Got hr %#lx.\n", hr); + + hr = IMediaEventEx_RestoreDefaultHandling(media_event, EC_COMPLETE); + ok(hr == S_OK, "Got hr %#lx.\n", hr); hr = IMediaControl_Run(media_control); ok(hr == S_OK, "Got hr %#lx.\n", hr); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10684