From 194ee40e076e7e79caf1e2149356f09f8d59ed9b Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Thu, 28 Jun 2012 13:11:13 +0200 Subject: [PATCH] wined3d: Use the device name stored in the adapter in wined3d_get_adapter_mode_count(). --- dlls/wined3d/directx.c | 57 ++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 875c333574a..0cff0390fd3 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -2894,48 +2894,41 @@ HMONITOR CDECL wined3d_get_adapter_monitor(const struct wined3d *wined3d, UINT a UINT CDECL wined3d_get_adapter_mode_count(const struct wined3d *wined3d, UINT adapter_idx, enum wined3d_format_id format_id) { + const struct wined3d_adapter *adapter; + const struct wined3d_format *format; + unsigned int i = 0; + unsigned int j = 0; + UINT format_bits; + DEVMODEW mode; + TRACE("wined3d %p, adapter_idx %u, format %s.\n", wined3d, adapter_idx, debug_d3dformat(format_id)); if (adapter_idx >= wined3d->adapter_count) return 0; - /* TODO: Store modes per adapter and read it from the adapter structure */ - if (!adapter_idx) + adapter = &wined3d->adapters[adapter_idx]; + format = wined3d_get_format(&adapter->gl_info, format_id); + format_bits = format->byte_count * CHAR_BIT; + + memset(&mode, 0, sizeof(mode)); + mode.dmSize = sizeof(mode); + + while (EnumDisplaySettingsExW(adapter->DeviceName, j++, &mode, 0)) { - const struct wined3d_format *format = wined3d_get_format(&wined3d->adapters[adapter_idx].gl_info, format_id); - UINT format_bits = format->byte_count * CHAR_BIT; - unsigned int i = 0; - unsigned int j = 0; - DEVMODEW mode; - - memset(&mode, 0, sizeof(mode)); - mode.dmSize = sizeof(mode); - - while (EnumDisplaySettingsExW(NULL, j, &mode, 0)) + if (format_id == WINED3DFMT_UNKNOWN) { - ++j; - - if (format_id == WINED3DFMT_UNKNOWN) - { - /* This is for D3D8, do not enumerate P8 here */ - if (mode.dmBitsPerPel == 32 || mode.dmBitsPerPel == 16) ++i; - } - else if (mode.dmBitsPerPel == format_bits) - { - ++i; - } + /* This is for d3d8, do not enumerate P8 here. */ + if (mode.dmBitsPerPel == 32 || mode.dmBitsPerPel == 16) ++i; + } + else if (mode.dmBitsPerPel == format_bits) + { + ++i; } - - TRACE("Returning %u matching modes (out of %u total) for adapter %u.\n", i, j, adapter_idx); - - return i; - } - else - { - FIXME("Adapter not primary display.\n"); } - return 0; + TRACE("Returning %u matching modes (out of %u total) for adapter %u.\n", i, j, adapter_idx); + + return i; } /* Note: dx9 supplies a format. Calls from d3d8 supply WINED3DFMT_UNKNOWN */