[PATCH] Fix crash in wined3d_device_reset with gdi backend for directdraw

Jonas Wielicki wine-patches at sotecware.net
Wed Aug 29 08:09:59 CDT 2012


From: Jonas Wielicki <j.wielicki at sotecware.net>

see also bug #31550
---
 dlls/wined3d/device.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 9744265..0826957 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -5161,13 +5161,16 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
     }
 
     stateblock_unbind_resources(device->stateBlock);
-    if (swapchain->back_buffers && swapchain->back_buffers[0])
-        wined3d_device_set_render_target(device, 0, swapchain->back_buffers[0], FALSE);
-    else
-        wined3d_device_set_render_target(device, 0, swapchain->front_buffer, FALSE);
-    for (i = 1; i < device->adapter->gl_info.limits.buffers; ++i)
+    if (device->fb.render_targets)
     {
-        wined3d_device_set_render_target(device, i, NULL, FALSE);
+        if (swapchain->back_buffers && swapchain->back_buffers[0])
+            wined3d_device_set_render_target(device, 0, swapchain->back_buffers[0], FALSE);
+        else
+            wined3d_device_set_render_target(device, 0, swapchain->front_buffer, FALSE);
+        for (i = 1; i < device->adapter->gl_info.limits.buffers; ++i)
+        {
+            wined3d_device_set_render_target(device, i, NULL, FALSE);
+        }
     }
     wined3d_device_set_depth_stencil(device, NULL);
 
-- 
1.7.7.6




More information about the wine-patches mailing list