Henri Verbeet : d3d8: Add a separate function for d3d8 initialization.
Alexandre Julliard
julliard at winehq.org
Fri May 4 12:01:18 CDT 2012
Module: wine
Branch: master
Commit: 5a4c15b9d96cda9e8252d1b8d06a4b1bb4ccd346
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5a4c15b9d96cda9e8252d1b8d06a4b1bb4ccd346
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Thu May 3 21:49:36 2012 +0200
d3d8: Add a separate function for d3d8 initialization.
---
dlls/d3d8/d3d8_main.c | 32 ++++++++++++++++----------------
dlls/d3d8/d3d8_private.h | 15 ++-------------
dlls/d3d8/directx.c | 16 +++++++++++++++-
3 files changed, 33 insertions(+), 30 deletions(-)
diff --git a/dlls/d3d8/d3d8_main.c b/dlls/d3d8/d3d8_main.c
index 46f6a5c..1dd7af1 100644
--- a/dlls/d3d8/d3d8_main.c
+++ b/dlls/d3d8/d3d8_main.c
@@ -35,27 +35,27 @@ void WINAPI DebugSetMute(void) {
/* nothing to do */
}
-IDirect3D8* WINAPI DECLSPEC_HOTPATCH Direct3DCreate8(UINT SDKVersion) {
- IDirect3D8Impl* object;
- TRACE("SDKVersion = %x\n", SDKVersion);
-
- wined3d_mutex_lock();
-
- object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3D8Impl));
-
- object->IDirect3D8_iface.lpVtbl = &Direct3D8_Vtbl;
- object->ref = 1;
- object->WineD3D = wined3d_create(8, WINED3D_LEGACY_DEPTH_BIAS);
+IDirect3D8 * WINAPI DECLSPEC_HOTPATCH Direct3DCreate8(UINT sdk_version)
+{
+ IDirect3D8Impl *object;
- TRACE("Created Direct3D object @ %p, WineObj @ %p\n", object, object->WineD3D);
+ TRACE("sdk_version %#x.\n", sdk_version);
- wined3d_mutex_unlock();
+ if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
+ {
+ ERR("Failed to allocate d3d8 object memory.\n");
+ return NULL;
+ }
- if (!object->WineD3D)
+ if (!d3d8_init(object))
{
- HeapFree( GetProcessHeap(), 0, object );
- object = NULL;
+ WARN("Failed to initialize d3d8.\n");
+ HeapFree(GetProcessHeap(), 0, object);
+ return NULL;
}
+
+ TRACE("Created d3d8 object %p.\n", object);
+
return &object->IDirect3D8_iface;
}
diff --git a/dlls/d3d8/d3d8_private.h b/dlls/d3d8/d3d8_private.h
index b963abe..6b18c1e 100644
--- a/dlls/d3d8/d3d8_private.h
+++ b/dlls/d3d8/d3d8_private.h
@@ -110,19 +110,6 @@ typedef struct IDirect3DSwapChain8Impl IDirect3DSwapChain8Impl;
typedef struct IDirect3DVolume8Impl IDirect3DVolume8Impl;
typedef struct IDirect3DVertexBuffer8Impl IDirect3DVertexBuffer8Impl;
-/* ===========================================================================
- The interfaces themselves
- =========================================================================== */
-
-/* ---------- */
-/* IDirect3D8 */
-/* ---------- */
-
-/*****************************************************************************
- * Predeclare the interface implementation structures
- */
-extern const IDirect3D8Vtbl Direct3D8_Vtbl DECLSPEC_HIDDEN;
-
/*****************************************************************************
* IDirect3D implementation structure
*/
@@ -133,6 +120,8 @@ struct IDirect3D8Impl
struct wined3d *WineD3D;
};
+BOOL d3d8_init(IDirect3D8Impl *d3d8) DECLSPEC_HIDDEN;
+
/*****************************************************************************
* IDirect3DDevice8 implementation structure
*/
diff --git a/dlls/d3d8/directx.c b/dlls/d3d8/directx.c
index 1debd8f..90ca96d 100644
--- a/dlls/d3d8/directx.c
+++ b/dlls/d3d8/directx.c
@@ -378,7 +378,7 @@ static HRESULT WINAPI IDirect3D8Impl_CreateDevice(IDirect3D8 *iface, UINT adapte
return D3D_OK;
}
-const IDirect3D8Vtbl Direct3D8_Vtbl =
+static const struct IDirect3D8Vtbl Direct3D8_Vtbl =
{
/* IUnknown */
IDirect3D8Impl_QueryInterface,
@@ -399,3 +399,17 @@ const IDirect3D8Vtbl Direct3D8_Vtbl =
IDirect3D8Impl_GetAdapterMonitor,
IDirect3D8Impl_CreateDevice
};
+
+BOOL d3d8_init(IDirect3D8Impl *d3d8)
+{
+ d3d8->IDirect3D8_iface.lpVtbl = &Direct3D8_Vtbl;
+ d3d8->ref = 1;
+
+ wined3d_mutex_lock();
+ d3d8->WineD3D = wined3d_create(8, WINED3D_LEGACY_DEPTH_BIAS);
+ wined3d_mutex_unlock();
+ if (!d3d8->WineD3D)
+ return FALSE;
+
+ return TRUE;
+}
More information about the wine-cvs
mailing list