wined3d: Use the device name stored in the adapter in wined3d_get_adapter_mode_count().

This commit is contained in:
Henri Verbeet 2012-06-28 13:11:13 +02:00 committed by Alexandre Julliard
parent e9d0367d29
commit 194ee40e07
1 changed files with 25 additions and 32 deletions

View File

@ -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, UINT CDECL wined3d_get_adapter_mode_count(const struct wined3d *wined3d, UINT adapter_idx,
enum wined3d_format_id format_id) 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)); TRACE("wined3d %p, adapter_idx %u, format %s.\n", wined3d, adapter_idx, debug_d3dformat(format_id));
if (adapter_idx >= wined3d->adapter_count) if (adapter_idx >= wined3d->adapter_count)
return 0; return 0;
/* TODO: Store modes per adapter and read it from the adapter structure */ adapter = &wined3d->adapters[adapter_idx];
if (!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); if (format_id == WINED3DFMT_UNKNOWN)
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))
{ {
++j; /* This is for d3d8, do not enumerate P8 here. */
if (mode.dmBitsPerPel == 32 || mode.dmBitsPerPel == 16) ++i;
if (format_id == WINED3DFMT_UNKNOWN) }
{ else if (mode.dmBitsPerPel == format_bits)
/* This is for D3D8, do not enumerate P8 here */ {
if (mode.dmBitsPerPel == 32 || mode.dmBitsPerPel == 16) ++i; ++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 */ /* Note: dx9 supplies a format. Calls from d3d8 supply WINED3DFMT_UNKNOWN */