dxgi/tests: Mark as todo the containing output test if a secondary monitor will cause failure.

Prevents test failure and crash until multi-monitor support is improved.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Conor McCarthy 2019-10-08 14:13:49 +10:00 committed by Alexandre Julliard
parent 61a85a6031
commit 890428abdc
1 changed files with 22 additions and 1 deletions

View File

@ -1935,6 +1935,22 @@ done:
DestroyWindow(creation_desc.OutputWindow);
}
static HMONITOR get_primary_if_right_side_secondary(const DXGI_OUTPUT_DESC *output_desc)
{
HMONITOR primary, secondary;
MONITORINFO mi;
POINT pt = {0, 0};
primary = MonitorFromPoint(pt, MONITOR_DEFAULTTONULL);
pt.x = output_desc->DesktopCoordinates.right;
secondary = MonitorFromPoint(pt, MONITOR_DEFAULTTONULL);
mi.cbSize = sizeof(mi);
if (secondary && secondary != primary
&& GetMonitorInfoW(primary, &mi) && (mi.dwFlags & MONITORINFOF_PRIMARY))
return primary;
return NULL;
}
static void test_get_containing_output(void)
{
unsigned int output_count, output_idx;
@ -1949,6 +1965,7 @@ static void test_get_containing_output(void)
IDXGIDevice *device;
unsigned int i, j;
HMONITOR monitor;
HMONITOR primary;
ULONG refcount;
HRESULT hr;
BOOL ret;
@ -2031,6 +2048,8 @@ static void test_get_containing_output(void)
wine_dbgstr_rect(&output_desc.DesktopCoordinates),
wine_dbgstr_rect(&monitor_info.rcMonitor));
primary = get_primary_if_right_side_secondary(&output_desc);
output_idx = 0;
while ((hr = IDXGIAdapter_EnumOutputs(adapter, output_idx, &output)) != DXGI_ERROR_NOT_FOUND)
{
@ -2113,9 +2132,11 @@ static void test_get_containing_output(void)
ok(ret, "Failed to get monitor info.\n");
hr = IDXGISwapChain_GetContainingOutput(swapchain, &output);
/* Hack to prevent test failures with secondary on the right until multi-monitor support is improved. */
todo_wine_if(primary && monitor != primary)
ok(hr == S_OK || broken(hr == DXGI_ERROR_UNSUPPORTED),
"Failed to get containing output, hr %#x.\n", hr);
if (hr == DXGI_ERROR_UNSUPPORTED)
if (hr != S_OK)
continue;
ok(!!output, "Got unexpected containing output %p.\n", output);
hr = IDXGIOutput_GetDesc(output, &output_desc);