[PATCH 3/5] d3d11: Allow to pass NULL as device to D3D11CreateDevice.
Józef Kucia
jkucia at codeweavers.com
Sun Aug 23 18:04:26 CDT 2015
---
dlls/d3d11/d3d11_main.c | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/dlls/d3d11/d3d11_main.c b/dlls/d3d11/d3d11_main.c
index 00634c4..e3d09a1 100644
--- a/dlls/d3d11/d3d11_main.c
+++ b/dlls/d3d11/d3d11_main.c
@@ -145,16 +145,17 @@ HRESULT WINAPI D3D11CoreCreateDevice(IDXGIFactory *factory, IDXGIAdapter *adapte
}
HRESULT WINAPI D3D11CreateDevice(IDXGIAdapter *adapter, D3D_DRIVER_TYPE driver_type, HMODULE swrast, UINT flags,
- const D3D_FEATURE_LEVEL *feature_levels, UINT levels, UINT sdk_version, ID3D11Device **device,
+ const D3D_FEATURE_LEVEL *feature_levels, UINT levels, UINT sdk_version, ID3D11Device **device_out,
D3D_FEATURE_LEVEL *obtained_feature_level, ID3D11DeviceContext **immediate_context)
{
IDXGIFactory *factory;
+ ID3D11Device *device;
HRESULT hr;
TRACE("adapter %p, driver_type %s, swrast %p, flags %#x, feature_levels %p, levels %u, sdk_version %u, "
"device %p, obtained_feature_level %p, immediate_context %p.\n",
adapter, debug_d3d_driver_type(driver_type), swrast, flags, feature_levels, levels, sdk_version,
- device, obtained_feature_level, immediate_context);
+ device_out, obtained_feature_level, immediate_context);
if (adapter)
{
@@ -237,7 +238,7 @@ HRESULT WINAPI D3D11CreateDevice(IDXGIAdapter *adapter, D3D_DRIVER_TYPE driver_t
}
}
- hr = D3D11CoreCreateDevice(factory, adapter, flags, feature_levels, levels, device);
+ hr = D3D11CoreCreateDevice(factory, adapter, flags, feature_levels, levels, &device);
IDXGIAdapter_Release(adapter);
IDXGIFactory_Release(factory);
if (FAILED(hr))
@@ -246,15 +247,20 @@ HRESULT WINAPI D3D11CreateDevice(IDXGIAdapter *adapter, D3D_DRIVER_TYPE driver_t
return hr;
}
- TRACE("Created ID3D11Device %p.\n", *device);
+ TRACE("Created ID3D11Device %p.\n", device);
if (obtained_feature_level)
- *obtained_feature_level = ID3D11Device_GetFeatureLevel(*device);
+ *obtained_feature_level = ID3D11Device_GetFeatureLevel(device);
if (immediate_context)
- ID3D11Device_GetImmediateContext(*device, immediate_context);
+ ID3D11Device_GetImmediateContext(device, immediate_context);
- return hr;
+ if (device_out)
+ *device_out = device;
+ else
+ ID3D11Device_Release(device);
+
+ return S_OK;
}
HRESULT WINAPI D3D11CreateDeviceAndSwapChain(IDXGIAdapter *adapter, D3D_DRIVER_TYPE driver_type,
--
2.4.6
More information about the wine-patches
mailing list