Henri Verbeet : wined3d: Free the swapchain context array in swapchain_destroy_contexts().

Alexandre Julliard julliard at winehq.org
Wed Feb 15 16:06:23 CST 2017


Module: wine
Branch: master
Commit: 274b091c87a564f955f7dcef7f5f5508b6997f97
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=274b091c87a564f955f7dcef7f5f5508b6997f97

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Wed Feb 15 14:17:13 2017 +0100

wined3d: Free the swapchain context array in swapchain_destroy_contexts().

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/device.c    | 7 ++-----
 dlls/wined3d/swapchain.c | 2 ++
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 6452420..1271363 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4528,7 +4528,7 @@ void CDECL wined3d_device_evict_managed_resources(struct wined3d_device *device)
     }
 }
 
-static void delete_opengl_contexts(struct wined3d_device *device, struct wined3d_swapchain *swapchain)
+static void wined3d_device_delete_opengl_contexts(struct wined3d_device *device)
 {
     struct wined3d_resource *resource, *cursor;
     struct wined3d_context *context;
@@ -4561,9 +4561,6 @@ static void delete_opengl_contexts(struct wined3d_device *device, struct wined3d
         else
             context_destroy(device, device->contexts[0]);
     }
-
-    HeapFree(GetProcessHeap(), 0, swapchain->context);
-    swapchain->context = NULL;
 }
 
 static HRESULT create_primary_opengl_context(struct wined3d_device *device, struct wined3d_swapchain *swapchain)
@@ -4827,7 +4824,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
         state_cleanup(&device->state);
 
         if (device->d3d_initialized)
-            delete_opengl_contexts(device, swapchain);
+            wined3d_device_delete_opengl_contexts(device);
 
         state_init(&device->state, &device->fb, &device->adapter->gl_info,
                 &device->adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT);
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index dfb62c8..f5fdd96 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -1136,7 +1136,9 @@ void swapchain_destroy_contexts(struct wined3d_swapchain *swapchain)
     {
         context_destroy(swapchain->device, swapchain->context[i]);
     }
+    HeapFree(GetProcessHeap(), 0, swapchain->context);
     swapchain->num_contexts = 0;
+    swapchain->context = NULL;
 }
 
 struct wined3d_context *swapchain_get_context(struct wined3d_swapchain *swapchain)




More information about the wine-cvs mailing list