[PATCH 3/8] wined3d: Avoid accessing the device after minimize in ddraw.
Stefan Dösinger
stefan at codeweavers.com
Sat Oct 13 18:13:52 CDT 2018
Signed-off-by: Stefan Dösinger <stefan at codeweavers.com>
---
dlls/wined3d/swapchain.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index 9c48de2193c..5cca4be9775 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -1132,13 +1132,15 @@ void wined3d_swapchain_activate(struct wined3d_swapchain *swapchain, BOOL activa
{
struct wined3d_device *device = swapchain->device;
BOOL filter_messages = device->filter_messages;
+ BOOL focus_messages = device->wined3d->flags & WINED3D_FOCUS_MESSAGES;
/* This code is not protected by the wined3d mutex, so it may run while
* wined3d_device_reset is active. Testing on Windows shows that changing
* focus during resets and resetting during focus change events causes
* the application to crash with an invalid memory access. */
- device->filter_messages = !(device->wined3d->flags & WINED3D_FOCUS_MESSAGES);
+ if (!focus_messages)
+ device->filter_messages = 1;
if (activate)
{
@@ -1190,7 +1192,8 @@ void wined3d_swapchain_activate(struct wined3d_swapchain *swapchain, BOOL activa
ShowWindow(swapchain->device_window, SW_MINIMIZE);
}
- device->filter_messages = filter_messages;
+ if (!focus_messages)
+ device->filter_messages = filter_messages;
}
HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapchain, unsigned int buffer_count,
--
2.18.1
More information about the wine-devel
mailing list