From: Alexandros Frantzis alexandros.frantzis@collabora.com
Signed-off-by: Alexandros Frantzis alexandros.frantzis@collabora.com --- dlls/win32u/sysparams.c | 5 +-- include/wine/debug.h | 68 +++++++++++++++++++++++++++++++++++++ programs/explorer/desktop.c | 6 ++-- 3 files changed, 71 insertions(+), 8 deletions(-)
diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index 60b12321953..0b553f447b6 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -2699,10 +2699,7 @@ BOOL WINAPI NtUserEnumDisplaySettings( UNICODE_STRING *device, DWORD index, DEVM adapter_release( adapter );
if (!ret) WARN( "Failed to query %s display settings.\n", debugstr_us(device) ); - else TRACE( "position %dx%d, resolution %ux%u, frequency %u, depth %u, orientation %#x.\n", - (int)devmode->dmPosition.x, (int)devmode->dmPosition.y, (int)devmode->dmPelsWidth, - (int)devmode->dmPelsHeight, (int)devmode->dmDisplayFrequency, - (int)devmode->dmBitsPerPel, (int)devmode->dmDisplayOrientation ); + else TRACE( "%s.\n", debugstr_devmodew( devmode ) ); return ret; }
diff --git a/include/wine/debug.h b/include/wine/debug.h index c20924818dd..9fb215392f2 100644 --- a/include/wine/debug.h +++ b/include/wine/debug.h @@ -459,6 +459,70 @@ static inline const char *wine_dbgstr_variant( const VARIANT *v )
#endif /* defined(__oaidl_h__) && defined(V_VT) */
+#if defined(_WINGDI_) && !defined(NOGDI) + +#if defined(NONAMELESSUNION) +#define __WINE_DUMMY_U(i) u##i. +#else +#define __WINE_DUMMY_U(i) +#endif + +#if defined(NONAMELESSSTRUCT) +#define __WINE_DUMMY_S(i) s##i. +#else +#define __WINE_DUMMY_S(i) +#endif + +static inline const char *wine_dbgstr_devmodew( const DEVMODEW *devmode ) +{ + char rotation[32] = {0}; + char position[32] = {0}; + const char *fixed_output = ""; + const char *interlaced = ""; + + if (!devmode) return "(null)"; + + if (devmode->dmFields & DM_DISPLAYORIENTATION) + { + snprintf( rotation, sizeof(rotation), " rotated %u degrees", + (unsigned int)devmode->__WINE_DUMMY_U(1)__WINE_DUMMY_S(2)dmDisplayOrientation * 90 ); + } + + if (devmode->dmFields & DM_DISPLAYFIXEDOUTPUT) + { + switch (devmode->__WINE_DUMMY_U(1)__WINE_DUMMY_S(2)dmDisplayFixedOutput) + { + case DMDFO_DEFAULT: fixed_output = ""; break; + case DMDFO_CENTER: fixed_output = " centered"; break; + case DMDFO_STRETCH: fixed_output = " stretched"; break; + default: fixed_output = " (invalid fixed output mode)"; + } + } + + if ((devmode->dmFields & DM_DISPLAYFLAGS) && + (devmode->__WINE_DUMMY_U(2)dmDisplayFlags & DM_INTERLACED)) + interlaced = " interlaced"; + + if (devmode->dmFields & DM_POSITION) + { + snprintf( position, sizeof(position), " at (%d,%d)", + (int)devmode->__WINE_DUMMY_U(1)__WINE_DUMMY_S(2)dmPosition.x, + (int)devmode->__WINE_DUMMY_U(1)__WINE_DUMMY_S(2)dmPosition.y ); + } + + return wine_dbg_sprintf( "%ux%u %ubits %uHz%s%s%s%s", + (unsigned int)devmode->dmPelsWidth, + (unsigned int)devmode->dmPelsHeight, + (unsigned int)devmode->dmBitsPerPel, + (unsigned int)devmode->dmDisplayFrequency, + rotation, fixed_output, interlaced, position ); +} + +#undef __WINE_DUMMY_U +#undef __WINE_DUMMY_S + +#endif /* defined(_WINGDI_) && !defined(NOGDI) */ + #ifndef WINE_TRACE #define WINE_TRACE __WINE_DPRINTF(_TRACE,__wine_dbch___default) #define WINE_TRACE_(ch) __WINE_DPRINTF(_TRACE,&__wine_dbch_##ch) @@ -503,6 +567,10 @@ static inline const char *debugstr_vt( VARTYPE vt ) { return wine_dbgstr_vt( vt static inline const char *debugstr_variant( const VARIANT *v ) { return wine_dbgstr_variant( v ); } #endif
+#if defined(_WINGDI_) && !defined(NOGDI) +static inline const char *debugstr_devmodew( const DEVMODEW *dm ) { return wine_dbgstr_devmodew( dm ); } +#endif + #define TRACE WINE_TRACE #define TRACE_(ch) WINE_TRACE_(ch) #define TRACE_ON(ch) WINE_TRACE_ON(ch) diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c index 81eb0d1d01b..ef6a3e453fe 100644 --- a/programs/explorer/desktop.c +++ b/programs/explorer/desktop.c @@ -984,10 +984,8 @@ static void initialize_display_settings(void) continue; }
- WINE_TRACE( "Device %s current display mode %lux%lu %luBits %luHz at %ld,%ld.\n", - wine_dbgstr_w( ddW.DeviceName ), dmW.dmPelsWidth, dmW.dmPelsHeight, - dmW.dmBitsPerPel, dmW.dmDisplayFrequency, dmW.u1.s2.dmPosition.x, - dmW.u1.s2.dmPosition.y ); + WINE_TRACE( "Device %s current display mode %s.\n", + wine_dbgstr_w( ddW.DeviceName ), wine_dbgstr_devmodew( &dmW ) );
if (ChangeDisplaySettingsExW( ddW.DeviceName, &dmW, 0, CDS_GLOBAL | CDS_NORESET | CDS_UPDATEREGISTRY, 0 ))