Commit 39d6f648 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

d3d10core: Add a separate function for d3d10_geometry_shader initialization.

parent bf10dbe8
...@@ -145,13 +145,14 @@ HRESULT d3d10_vertex_shader_init(struct d3d10_vertex_shader *shader, struct d3d1 ...@@ -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; const void *byte_code, SIZE_T byte_code_length) DECLSPEC_HIDDEN;
/* ID3D10GeometryShader */ /* ID3D10GeometryShader */
extern const struct ID3D10GeometryShaderVtbl d3d10_geometry_shader_vtbl DECLSPEC_HIDDEN;
struct d3d10_geometry_shader struct d3d10_geometry_shader
{ {
const struct ID3D10GeometryShaderVtbl *vtbl; const struct ID3D10GeometryShaderVtbl *vtbl;
LONG refcount; LONG refcount;
}; };
HRESULT d3d10_geometry_shader_init(struct d3d10_geometry_shader *shader);
/* ID3D10PixelShader */ /* ID3D10PixelShader */
struct d3d10_pixel_shader struct d3d10_pixel_shader
{ {
......
...@@ -965,6 +965,7 @@ static HRESULT STDMETHODCALLTYPE d3d10_device_CreateGeometryShader(ID3D10Device ...@@ -965,6 +965,7 @@ static HRESULT STDMETHODCALLTYPE d3d10_device_CreateGeometryShader(ID3D10Device
const void *byte_code, SIZE_T byte_code_length, ID3D10GeometryShader **shader) const void *byte_code, SIZE_T byte_code_length, ID3D10GeometryShader **shader)
{ {
struct d3d10_geometry_shader *object; struct d3d10_geometry_shader *object;
HRESULT hr;
FIXME("iface %p, byte_code %p, byte_code_length %lu, shader %p stub!\n", FIXME("iface %p, byte_code %p, byte_code_length %lu, shader %p stub!\n",
iface, byte_code, byte_code_length, shader); iface, byte_code, byte_code_length, shader);
...@@ -976,9 +977,14 @@ static HRESULT STDMETHODCALLTYPE d3d10_device_CreateGeometryShader(ID3D10Device ...@@ -976,9 +977,14 @@ static HRESULT STDMETHODCALLTYPE d3d10_device_CreateGeometryShader(ID3D10Device
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
} }
object->vtbl = &d3d10_geometry_shader_vtbl; hr = d3d10_geometry_shader_init(object);
object->refcount = 1; 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; *shader = (ID3D10GeometryShader *)object;
return S_OK; return S_OK;
......
...@@ -352,7 +352,7 @@ static HRESULT STDMETHODCALLTYPE d3d10_geometry_shader_SetPrivateDataInterface(I ...@@ -352,7 +352,7 @@ static HRESULT STDMETHODCALLTYPE d3d10_geometry_shader_SetPrivateDataInterface(I
return E_NOTIMPL; return E_NOTIMPL;
} }
const struct ID3D10GeometryShaderVtbl d3d10_geometry_shader_vtbl = static const struct ID3D10GeometryShaderVtbl d3d10_geometry_shader_vtbl =
{ {
/* IUnknown methods */ /* IUnknown methods */
d3d10_geometry_shader_QueryInterface, d3d10_geometry_shader_QueryInterface,
...@@ -365,6 +365,14 @@ const struct ID3D10GeometryShaderVtbl d3d10_geometry_shader_vtbl = ...@@ -365,6 +365,14 @@ const struct ID3D10GeometryShaderVtbl d3d10_geometry_shader_vtbl =
d3d10_geometry_shader_SetPrivateDataInterface, 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 */ /* IUnknown methods */
static HRESULT STDMETHODCALLTYPE d3d10_pixel_shader_QueryInterface(ID3D10PixelShader *iface, static HRESULT STDMETHODCALLTYPE d3d10_pixel_shader_QueryInterface(ID3D10PixelShader *iface,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment