[PATCH 3/4] evr/tests: Avoid Vista crashes when testing the IMFQualityAdvise interface.

Francois Gouget fgouget at codeweavers.com
Thu Nov 26 10:40:40 CST 2020


Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
 dlls/evr/tests/evr.c | 37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)

diff --git a/dlls/evr/tests/evr.c b/dlls/evr/tests/evr.c
index ce791db21b1..06a8b770088 100644
--- a/dlls/evr/tests/evr.c
+++ b/dlls/evr/tests/evr.c
@@ -2050,10 +2050,12 @@ static void test_presenter_quality_control(void)
 
     hr = IMFVideoPresenter_QueryInterface(presenter, &IID_IMFQualityAdviseLimits, (void **)&qa_limits);
 todo_wine
-    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+    ok(hr == S_OK || broken(hr == E_NOINTERFACE) /* Vista */,
+       "Unexpected hr %#x.\n", hr);
 
     hr = IMFVideoPresenter_QueryInterface(presenter, &IID_IMFQualityAdvise, (void **)&advise);
-    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+    ok(hr == S_OK || broken(hr == E_NOINTERFACE) /* Vista */,
+       "Unexpected hr %#x.\n", hr);
 
 if (qa_limits)
 {
@@ -2074,25 +2076,26 @@ if (qa_limits)
     IMFQualityAdviseLimits_Release(qa_limits);
 }
 
-todo_wine {
-    mode = 1;
-    hr = IMFQualityAdvise_GetDropMode(advise, &mode);
-    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
-    ok(mode == MF_DROP_MODE_NONE, "Unexpected mode %d.\n", mode);
+    if (advise)
+    todo_wine {
+        mode = 1;
+        hr = IMFQualityAdvise_GetDropMode(advise, &mode);
+        ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+        ok(mode == MF_DROP_MODE_NONE, "Unexpected mode %d.\n", mode);
 
-    level = 1;
-    hr = IMFQualityAdvise_GetQualityLevel(advise, &level);
-    ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
-    ok(level == MF_QUALITY_NORMAL, "Unexpected mode %d.\n", level);
+        level = 1;
+        hr = IMFQualityAdvise_GetQualityLevel(advise, &level);
+        ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+        ok(level == MF_QUALITY_NORMAL, "Unexpected mode %d.\n", level);
 
-    hr = IMFQualityAdvise_SetDropMode(advise, MF_DROP_MODE_1);
-    ok(hr == MF_E_NO_MORE_DROP_MODES, "Unexpected hr %#x.\n", hr);
+        hr = IMFQualityAdvise_SetDropMode(advise, MF_DROP_MODE_1);
+        ok(hr == MF_E_NO_MORE_DROP_MODES, "Unexpected hr %#x.\n", hr);
 
-    hr = IMFQualityAdvise_SetQualityLevel(advise, MF_QUALITY_NORMAL_MINUS_1);
-    ok(hr == MF_E_NO_MORE_QUALITY_LEVELS, "Unexpected hr %#x.\n", hr);
-}
+        hr = IMFQualityAdvise_SetQualityLevel(advise, MF_QUALITY_NORMAL_MINUS_1);
+        ok(hr == MF_E_NO_MORE_QUALITY_LEVELS, "Unexpected hr %#x.\n", hr);
 
-    IMFQualityAdvise_Release(advise);
+        IMFQualityAdvise_Release(advise);
+    }
 
     IMFVideoPresenter_Release(presenter);
 }
-- 
2.20.1




More information about the wine-devel mailing list