Signed-off-by: Francois Gouget fgouget@codeweavers.com ---
I propose the following where I moved the interface tests out of the generic check_*_interface() methods.
I also split the parts dealing with the crashes in test_MFCreateVideoSampleAllocator() and then in test_presenter_quality_control() in parts 2 and 3.
Finally I added one more patch to deal with the remaining GetNativeVideoSize() failures.
dlls/evr/tests/evr.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/dlls/evr/tests/evr.c b/dlls/evr/tests/evr.c index 31434bde43a..cfab5e73070 100644 --- a/dlls/evr/tests/evr.c +++ b/dlls/evr/tests/evr.c @@ -1152,9 +1152,18 @@ static void test_default_presenter(void) check_interface(presenter, &IID_IMFClockStateSink, TRUE); check_interface(presenter, &IID_IMFVideoPresenter, TRUE); check_interface(presenter, &IID_IMFVideoDeviceID, TRUE); - check_interface(presenter, &IID_IMFQualityAdvise, TRUE); + + hr = IUnknown_QueryInterface(presenter, &IID_IMFQualityAdvise, (void **)&unk); + ok(hr == S_OK || broken(hr == E_NOINTERFACE) /* Vista */, "Got hr %#x\n", hr); + if (SUCCEEDED(hr)) + IUnknown_Release(unk); + check_interface(presenter, &IID_IDirect3DDeviceManager9, TRUE); - todo_wine check_interface(presenter, &IID_IMFQualityAdviseLimits, TRUE); + hr = IUnknown_QueryInterface(presenter, &IID_IMFQualityAdviseLimits, (void **)&unk); + todo_wine ok(hr == S_OK || broken(hr == E_NOINTERFACE) /* Vista */, "Got hr %#x\n", hr); + if (SUCCEEDED(hr)) + IUnknown_Release(unk); + check_service_interface(presenter, &MR_VIDEO_RENDER_SERVICE, &IID_IMFVideoPositionMapper, TRUE); check_service_interface(presenter, &MR_VIDEO_RENDER_SERVICE, &IID_IMFVideoDisplayControl, TRUE); check_service_interface(presenter, &MR_VIDEO_RENDER_SERVICE, &IID_IMFVideoPresenter, TRUE); @@ -1164,8 +1173,17 @@ static void test_default_presenter(void) check_service_interface(presenter, &MR_VIDEO_RENDER_SERVICE, &IID_IMFRateSupport, TRUE); check_service_interface(presenter, &MR_VIDEO_RENDER_SERVICE, &IID_IMFGetService, TRUE); check_service_interface(presenter, &MR_VIDEO_RENDER_SERVICE, &IID_IMFVideoDeviceID, TRUE); - check_service_interface(presenter, &MR_VIDEO_RENDER_SERVICE, &IID_IMFQualityAdvise, TRUE); - todo_wine check_service_interface(presenter, &MR_VIDEO_RENDER_SERVICE, &IID_IMFQualityAdviseLimits, TRUE); + + hr = MFGetService((IUnknown*)presenter, &MR_VIDEO_RENDER_SERVICE, &IID_IMFQualityAdvise, (void **)&unk); + ok(hr == S_OK || broken(hr == E_NOINTERFACE) /* Vista */, "Got hr %#x\n", hr); + if (SUCCEEDED(hr)) + IUnknown_Release(unk); + + hr = MFGetService((IUnknown*)presenter, &MR_VIDEO_RENDER_SERVICE, &IID_IMFQualityAdviseLimits, (void **)&unk); + todo_wine ok(hr == S_OK || broken(hr == E_NOINTERFACE) /* Vista */, "Got hr %#x\n", hr); + if (SUCCEEDED(hr)) + IUnknown_Release(unk); + check_service_interface(presenter, &MR_VIDEO_RENDER_SERVICE, &IID_IMFTransform, FALSE); check_service_interface(presenter, &MR_VIDEO_RENDER_SERVICE, &IID_IDirect3DDeviceManager9, TRUE); check_service_interface(presenter, &MR_VIDEO_ACCELERATION_SERVICE, &IID_IDirect3DDeviceManager9, TRUE);