[PATCH 3/5] d3d10core: Add a separate function for d3d10_geometry_shader initialization.
Henri Verbeet
hverbeet at codeweavers.com
Thu Oct 29 12:56:22 CDT 2009
---
dlls/d3d10core/d3d10core_private.h | 3 ++-
dlls/d3d10core/device.c | 10 ++++++++--
dlls/d3d10core/shader.c | 10 +++++++++-
3 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/dlls/d3d10core/d3d10core_private.h b/dlls/d3d10core/d3d10core_private.h
index a698bf0..9e9d802 100644
--- a/dlls/d3d10core/d3d10core_private.h
+++ b/dlls/d3d10core/d3d10core_private.h
@@ -145,13 +145,14 @@ HRESULT d3d10_vertex_shader_init(struct d3d10_vertex_shader *shader, struct d3d1
const void *byte_code, SIZE_T byte_code_length) DECLSPEC_HIDDEN;
/* ID3D10GeometryShader */
-extern const struct ID3D10GeometryShaderVtbl d3d10_geometry_shader_vtbl DECLSPEC_HIDDEN;
struct d3d10_geometry_shader
{
const struct ID3D10GeometryShaderVtbl *vtbl;
LONG refcount;
};
+HRESULT d3d10_geometry_shader_init(struct d3d10_geometry_shader *shader);
+
/* ID3D10PixelShader */
struct d3d10_pixel_shader
{
diff --git a/dlls/d3d10core/device.c b/dlls/d3d10core/device.c
index 8e44bcc..4439f1f 100644
--- a/dlls/d3d10core/device.c
+++ b/dlls/d3d10core/device.c
@@ -965,6 +965,7 @@ static HRESULT STDMETHODCALLTYPE d3d10_device_CreateGeometryShader(ID3D10Device
const void *byte_code, SIZE_T byte_code_length, ID3D10GeometryShader **shader)
{
struct d3d10_geometry_shader *object;
+ HRESULT hr;
FIXME("iface %p, byte_code %p, byte_code_length %lu, shader %p stub!\n",
iface, byte_code, byte_code_length, shader);
@@ -976,9 +977,14 @@ static HRESULT STDMETHODCALLTYPE d3d10_device_CreateGeometryShader(ID3D10Device
return E_OUTOFMEMORY;
}
- object->vtbl = &d3d10_geometry_shader_vtbl;
- object->refcount = 1;
+ hr = d3d10_geometry_shader_init(object);
+ if (FAILED(hr))
+ {
+ WARN("Failed to initialize geometry shader, hr %#x.\n", hr);
+ HeapFree(GetProcessHeap(), 0, object);
+ }
+ TRACE("Created geometry shader %p.\n", object);
*shader = (ID3D10GeometryShader *)object;
return S_OK;
diff --git a/dlls/d3d10core/shader.c b/dlls/d3d10core/shader.c
index bf7a6ab..e8602b5 100644
--- a/dlls/d3d10core/shader.c
+++ b/dlls/d3d10core/shader.c
@@ -352,7 +352,7 @@ static HRESULT STDMETHODCALLTYPE d3d10_geometry_shader_SetPrivateDataInterface(I
return E_NOTIMPL;
}
-const struct ID3D10GeometryShaderVtbl d3d10_geometry_shader_vtbl =
+static const struct ID3D10GeometryShaderVtbl d3d10_geometry_shader_vtbl =
{
/* IUnknown methods */
d3d10_geometry_shader_QueryInterface,
@@ -365,6 +365,14 @@ const struct ID3D10GeometryShaderVtbl d3d10_geometry_shader_vtbl =
d3d10_geometry_shader_SetPrivateDataInterface,
};
+HRESULT d3d10_geometry_shader_init(struct d3d10_geometry_shader *shader)
+{
+ shader->vtbl = &d3d10_geometry_shader_vtbl;
+ shader->refcount = 1;
+
+ return S_OK;
+}
+
/* IUnknown methods */
static HRESULT STDMETHODCALLTYPE d3d10_pixel_shader_QueryInterface(ID3D10PixelShader *iface,
--
1.6.4.4
More information about the wine-patches
mailing list