From: Rémi Bernon rbernon@codeweavers.com
And pass it down to the drivers DesktopWindowProc entry. --- dlls/user32/desktop.c | 1 + dlls/win32u/defwnd.c | 3 ++- dlls/win32u/sysparams.c | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/desktop.c b/dlls/user32/desktop.c index 377c21d4f48..b0384b6d8c2 100644 --- a/dlls/user32/desktop.c +++ b/dlls/user32/desktop.c @@ -83,6 +83,7 @@ LRESULT WINAPI DesktopWndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lP case WM_NCCREATE: case WM_NCCALCSIZE: case WM_PARENTNOTIFY: + case WM_DISPLAYCHANGE: return NtUserMessageCall( hwnd, message, wParam, lParam, 0, NtUserDesktopWindowProc, FALSE );
default: diff --git a/dlls/win32u/defwnd.c b/dlls/win32u/defwnd.c index a5644f594ad..e26e68442ab 100644 --- a/dlls/win32u/defwnd.c +++ b/dlls/win32u/defwnd.c @@ -2953,7 +2953,8 @@ LRESULT desktop_window_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) } case WM_NCCALCSIZE: return 0; - + case WM_DISPLAYCHANGE: + return user_driver->pDesktopWindowProc( hwnd, msg, wparam, lparam ); default: if (msg >= WM_USER && hwnd == get_desktop_window()) return user_driver->pDesktopWindowProc( hwnd, msg, wparam, lparam ); diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index 494bb94c7f1..1c81dda9dd3 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -2487,6 +2487,8 @@ static LONG apply_display_settings( const WCHAR *devname, const DEVMODEW *devmod user_driver->pGetCurrentDisplaySettings( adapter->dev.device_name, ¤t_mode ); adapter_release( adapter );
+ send_message( NtUserGetDesktopWindow(), WM_DISPLAYCHANGE, current_mode.dmBitsPerPel, + MAKELPARAM( current_mode.dmPelsWidth, current_mode.dmPelsHeight ) ); send_message_timeout( HWND_BROADCAST, WM_DISPLAYCHANGE, current_mode.dmBitsPerPel, MAKELPARAM( current_mode.dmPelsWidth, current_mode.dmPelsHeight ), SMTO_ABORTIFHUNG, 2000, FALSE );