From: Zhiyi Zhang zzhang@codeweavers.com
When source_enum_display_settings() fails to find a display mode because the index is out of range, the index number in the log is always 0 because the same variable is decreased in the for loop to find the display mode, giving the impression that it fails to find the first display mode. --- dlls/win32u/sysparams.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index 2fbc90e27e6..9b4bd289def 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -3920,6 +3920,7 @@ static BOOL source_enum_display_settings( const struct source *source, UINT inde { DEVMODEW current_mode = {.dmSize = sizeof(DEVMODEW)}; const DEVMODEW *source_mode; + unsigned int i = index;
if (!(flags & EDS_ROTATEDMODE) && !source_get_current_settings( source, ¤t_mode )) { @@ -3935,7 +3936,7 @@ static BOOL source_enum_display_settings( const struct source *source, UINT inde if (!(flags & EDS_RAWMODE) && (source_mode->dmFields & DM_DISPLAYFLAGS) && (source_mode->dmDisplayFlags & WINE_DM_UNSUPPORTED)) continue; - if (!index--) + if (!i--) { memcpy( &devmode->dmFields, &source_mode->dmFields, devmode->dmSize - FIELD_OFFSET(DEVMODEW, dmFields) ); devmode->dmDisplayFlags &= ~WINE_DM_UNSUPPORTED;