[PATCH 04/10] d3d8: Add a separate function for volume initialization.
Henri Verbeet
hverbeet at codeweavers.com
Wed Sep 16 01:37:18 CDT 2009
---
dlls/d3d8/d3d8_private.h | 4 +++-
dlls/d3d8/device.c | 10 +++-------
dlls/d3d8/volume.c | 21 ++++++++++++++++++++-
3 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/dlls/d3d8/d3d8_private.h b/dlls/d3d8/d3d8_private.h
index af5b77a..8674342 100644
--- a/dlls/d3d8/d3d8_private.h
+++ b/dlls/d3d8/d3d8_private.h
@@ -218,7 +218,6 @@ struct IDirect3DDevice8Impl
/*****************************************************************************
* IDirect3DVolume8 implementation structure
*/
-extern const IDirect3DVolume8Vtbl Direct3DVolume8_Vtbl;
struct IDirect3DVolume8Impl
{
/* IUnknown fields */
@@ -235,6 +234,9 @@ struct IDirect3DVolume8Impl
IUnknown *forwardReference;
};
+HRESULT volume_init(IDirect3DVolume8Impl *volume, IDirect3DDevice8Impl *device, UINT width, UINT height,
+ UINT depth, DWORD usage, WINED3DFORMAT format, WINED3DPOOL pool);
+
/* ------------------- */
/* IDirect3DSwapChain8 */
/* ------------------- */
diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
index 95425e5..7cb8563 100644
--- a/dlls/d3d8/device.c
+++ b/dlls/d3d8/device.c
@@ -2753,15 +2753,11 @@ static HRESULT STDMETHODCALLTYPE device_parent_CreateVolume(IWineD3DDeviceParent
return D3DERR_OUTOFVIDEOMEMORY;
}
- object->lpVtbl = &Direct3DVolume8_Vtbl;
- object->ref = 1;
- hr = IWineD3DDevice_CreateVolume(This->WineD3DDevice, width, height, depth, usage,
- format, pool, &object->wineD3DVolume, (IUnknown *)object);
+ hr = volume_init(object, This, width, height, depth, usage, format, pool);
if (FAILED(hr))
{
- ERR("(%p) CreateVolume failed, returning %#x\n", iface, hr);
+ WARN("Failed to initialize volume, hr %#x.\n", hr);
HeapFree(GetProcessHeap(), 0, object);
- *volume = NULL;
return hr;
}
@@ -2769,7 +2765,7 @@ static HRESULT STDMETHODCALLTYPE device_parent_CreateVolume(IWineD3DDeviceParent
object->container = superior;
object->forwardReference = superior;
- TRACE("(%p) Created volume %p\n", iface, *volume);
+ TRACE("(%p) Created volume %p\n", iface, object);
return hr;
}
diff --git a/dlls/d3d8/volume.c b/dlls/d3d8/volume.c
index 968b534..7f525d4 100644
--- a/dlls/d3d8/volume.c
+++ b/dlls/d3d8/volume.c
@@ -202,7 +202,7 @@ static HRESULT WINAPI IDirect3DVolume8Impl_UnlockBox(LPDIRECT3DVOLUME8 iface) {
return hr;
}
-const IDirect3DVolume8Vtbl Direct3DVolume8_Vtbl =
+static const IDirect3DVolume8Vtbl Direct3DVolume8_Vtbl =
{
/* IUnknown */
IDirect3DVolume8Impl_QueryInterface,
@@ -228,3 +228,22 @@ ULONG WINAPI D3D8CB_DestroyVolume(IWineD3DVolume *pVolume) {
volumeParent->forwardReference = NULL;
return IDirect3DVolume8_Release((IDirect3DVolume8*) volumeParent);
}
+
+HRESULT volume_init(IDirect3DVolume8Impl *volume, IDirect3DDevice8Impl *device, UINT width, UINT height,
+ UINT depth, DWORD usage, WINED3DFORMAT format, WINED3DPOOL pool)
+{
+ HRESULT hr;
+
+ volume->lpVtbl = &Direct3DVolume8_Vtbl;
+ volume->ref = 1;
+
+ hr = IWineD3DDevice_CreateVolume(device->WineD3DDevice, width, height, depth, usage,
+ format, pool, &volume->wineD3DVolume, (IUnknown *)volume);
+ if (FAILED(hr))
+ {
+ WARN("Failed to create wined3d volume, hr %#x.\n", hr);
+ return hr;
+ }
+
+ return D3D_OK;
+}
--
1.6.0.6
More information about the wine-patches
mailing list