From 0e5b847f85fcc62cbf655611bddae9dc539e566d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Tue, 27 Jun 2023 10:29:51 +0200 Subject: [PATCH] explorer: Use debugstr_devmodew helper to trace display mode. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55146 --- programs/explorer/desktop.c | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c index 9945f689313..51f53630ae6 100644 --- a/programs/explorer/desktop.c +++ b/programs/explorer/desktop.c @@ -918,29 +918,45 @@ static HMODULE load_graphics_driver( const WCHAR *driver, GUID *guid ) return module; } +static const char *debugstr_devmodew( const DEVMODEW *devmode ) +{ + char position[32] = {0}; + + if (devmode->dmFields & DM_POSITION) + { + snprintf( position, sizeof(position), " at (%d,%d)", + (int)devmode->dmPosition.x, (int)devmode->dmPosition.y ); + } + + return wine_dbg_sprintf( "%ux%u %ubits %uHz rotated %u degrees%s", + (unsigned int)devmode->dmPelsWidth, + (unsigned int)devmode->dmPelsHeight, + (unsigned int)devmode->dmBitsPerPel, + (unsigned int)devmode->dmDisplayFrequency, + (unsigned int)devmode->dmDisplayOrientation * 90, + position ); +} + static void initialize_display_settings(void) { DISPLAY_DEVICEW ddW; - DEVMODEW dmW; DWORD i = 0; /* Store current display mode in the registry */ ddW.cb = sizeof(ddW); - memset(&dmW, 0, sizeof(dmW)); - dmW.dmSize = sizeof(dmW); while (EnumDisplayDevicesW( NULL, i++, &ddW, 0 )) { - if (!EnumDisplaySettingsExW( ddW.DeviceName, ENUM_CURRENT_SETTINGS, &dmW, 0)) + DEVMODEW devmode = {.dmSize = sizeof(DEVMODEW)}; + + if (!EnumDisplaySettingsExW( ddW.DeviceName, ENUM_CURRENT_SETTINGS, &devmode, 0)) { ERR( "Failed to query current display settings for %s.\n", debugstr_w(ddW.DeviceName) ); continue; } - TRACE( "Device %s current display mode %lux%lu %luBits %luHz at %ld,%ld.\n", - debugstr_w( ddW.DeviceName ), dmW.dmPelsWidth, dmW.dmPelsHeight, - dmW.dmBitsPerPel, dmW.dmDisplayFrequency, dmW.dmPosition.x, dmW.dmPosition.y ); + TRACE( "Device %s current display mode %s.\n", debugstr_w( ddW.DeviceName ), debugstr_devmodew( &devmode ) ); - if (ChangeDisplaySettingsExW( ddW.DeviceName, &dmW, 0, + if (ChangeDisplaySettingsExW( ddW.DeviceName, &devmode, 0, CDS_GLOBAL | CDS_NORESET | CDS_UPDATEREGISTRY, 0 )) ERR( "Failed to initialize registry display settings for %s.\n", debugstr_w(ddW.DeviceName) ); }