Zhiyi Zhang : ddraw: Get new window size from the primary output after display mode changes.
Alexandre Julliard
julliard at winehq.org
Thu May 28 17:11:09 CDT 2020
Module: wine
Branch: master
Commit: 079caeaa8d4421b6842399a7ac0f08c6ab6ea252
URL: https://source.winehq.org/git/wine.git/?a=commit;h=079caeaa8d4421b6842399a7ac0f08c6ab6ea252
Author: Zhiyi Zhang <zzhang at codeweavers.com>
Date: Fri May 29 00:11:35 2020 +0800
ddraw: Get new window size from the primary output after display mode changes.
MonitorFromWindow() may return a different monitor if switching to a
smaller display mode.
Fix Railroad Tycoon II crashes.
Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ddraw/ddraw.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 6f640ef422..e92ac25c40 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -4926,8 +4926,7 @@ static void CDECL device_parent_wined3d_device_created(struct wined3d_device_par
static void CDECL device_parent_mode_changed(struct wined3d_device_parent *device_parent)
{
struct ddraw *ddraw = ddraw_from_device_parent(device_parent);
- MONITORINFO monitor_info;
- HMONITOR monitor;
+ struct wined3d_output_desc output_desc;
RECT *r;
TRACE("device_parent %p.\n", device_parent);
@@ -4938,15 +4937,13 @@ static void CDECL device_parent_mode_changed(struct wined3d_device_parent *devic
return;
}
- monitor = MonitorFromWindow(ddraw->swapchain_window, MONITOR_DEFAULTTOPRIMARY);
- monitor_info.cbSize = sizeof(monitor_info);
- if (!GetMonitorInfoW(monitor, &monitor_info))
+ if (FAILED(wined3d_output_get_desc(ddraw->wined3d_output, &output_desc)))
{
- ERR("Failed to get monitor info.\n");
+ ERR("Failed to get output description.\n");
return;
}
- r = &monitor_info.rcMonitor;
+ r = &output_desc.desktop_rect;
TRACE("Resizing window %p to %s.\n", ddraw->swapchain_window, wine_dbgstr_rect(r));
if (!SetWindowPos(ddraw->swapchain_window, HWND_TOP, r->left, r->top,
More information about the wine-cvs
mailing list