Henri Verbeet : wined3d: Introduce a separate structure for OpenGL swapchain information.
Alexandre Julliard
julliard at winehq.org
Tue Aug 13 14:54:32 CDT 2019
Module: wine
Branch: master
Commit: eef96e89ac021116e0ae352bef3698773bf5906a
URL: https://source.winehq.org/git/wine.git/?a=commit;h=eef96e89ac021116e0ae352bef3698773bf5906a
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Tue Aug 13 13:19:37 2019 +0430
wined3d: Introduce a separate structure for OpenGL swapchain information.
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wined3d/adapter_gl.c | 10 ++++++----
dlls/wined3d/swapchain.c | 9 +++++++--
dlls/wined3d/wined3d_private.h | 13 ++++++++++++-
3 files changed, 25 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index cf54468..cf5cb0e 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -4656,7 +4656,7 @@ static void adapter_gl_uninit_3d(struct wined3d_device *device)
static HRESULT adapter_gl_create_swapchain(struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain)
{
- struct wined3d_swapchain *swapchain_gl;
+ struct wined3d_swapchain_gl *swapchain_gl;
HRESULT hr;
TRACE("device %p, desc %p, parent %p, parent_ops %p, swapchain %p.\n",
@@ -4673,15 +4673,17 @@ static HRESULT adapter_gl_create_swapchain(struct wined3d_device *device, struct
}
TRACE("Created swapchain %p.\n", swapchain_gl);
- *swapchain = swapchain_gl;
+ *swapchain = &swapchain_gl->s;
return hr;
}
static void adapter_gl_destroy_swapchain(struct wined3d_swapchain *swapchain)
{
- wined3d_swapchain_cleanup(swapchain);
- heap_free(swapchain);
+ struct wined3d_swapchain_gl *swapchain_gl = wined3d_swapchain_gl(swapchain);
+
+ wined3d_swapchain_gl_cleanup(swapchain_gl);
+ heap_free(swapchain_gl);
}
static HRESULT adapter_gl_create_buffer(struct wined3d_device *device,
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index 4d277c7..c0eeca5 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -105,6 +105,11 @@ void wined3d_swapchain_cleanup(struct wined3d_swapchain *swapchain)
}
}
+void wined3d_swapchain_gl_cleanup(struct wined3d_swapchain_gl *swapchain_gl)
+{
+ wined3d_swapchain_cleanup(&swapchain_gl->s);
+}
+
ULONG CDECL wined3d_swapchain_incref(struct wined3d_swapchain *swapchain)
{
ULONG refcount = InterlockedIncrement(&swapchain->ref);
@@ -1031,13 +1036,13 @@ HRESULT wined3d_swapchain_no3d_init(struct wined3d_swapchain *swapchain_no3d, st
return wined3d_swapchain_init(swapchain_no3d, device, desc, parent, parent_ops, &swapchain_no3d_ops);
}
-HRESULT wined3d_swapchain_gl_init(struct wined3d_swapchain *swapchain_gl, struct wined3d_device *device,
+HRESULT wined3d_swapchain_gl_init(struct wined3d_swapchain_gl *swapchain_gl, struct wined3d_device *device,
struct wined3d_swapchain_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops)
{
TRACE("swapchain_gl %p, device %p, desc %p, parent %p, parent_ops %p.\n",
swapchain_gl, device, desc, parent, parent_ops);
- return wined3d_swapchain_init(swapchain_gl, device, desc, parent, parent_ops, &swapchain_gl_ops);
+ return wined3d_swapchain_init(&swapchain_gl->s, device, desc, parent, parent_ops, &swapchain_gl_ops);
}
HRESULT wined3d_swapchain_vk_init(struct wined3d_swapchain *swapchain_vk, struct wined3d_device *device,
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index e81d72b..1e4e139 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -4422,7 +4422,18 @@ HRESULT wined3d_swapchain_no3d_init(struct wined3d_swapchain *swapchain_no3d,
struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
void *parent, const struct wined3d_parent_ops *parent_ops) DECLSPEC_HIDDEN;
-HRESULT wined3d_swapchain_gl_init(struct wined3d_swapchain *swapchain_gl,
+struct wined3d_swapchain_gl
+{
+ struct wined3d_swapchain s;
+};
+
+static inline struct wined3d_swapchain_gl *wined3d_swapchain_gl(struct wined3d_swapchain *swapchain)
+{
+ return CONTAINING_RECORD(swapchain, struct wined3d_swapchain_gl, s);
+}
+
+void wined3d_swapchain_gl_cleanup(struct wined3d_swapchain_gl *swapchain_gl) DECLSPEC_HIDDEN;
+HRESULT wined3d_swapchain_gl_init(struct wined3d_swapchain_gl *swapchain_gl,
struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
void *parent, const struct wined3d_parent_ops *parent_ops) DECLSPEC_HIDDEN;
More information about the wine-cvs
mailing list