mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-15 09:44:46 +00:00
wined3d: Do not fail if the adapter info can't be initialized.
This commit is contained in:
parent
59efd5c7ec
commit
12788f6fc8
|
@ -716,7 +716,13 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateSurface(IWineD3DDevice *iface, U
|
||||||
/* Look at the implementation and set the correct Vtable */
|
/* Look at the implementation and set the correct Vtable */
|
||||||
switch(Impl) {
|
switch(Impl) {
|
||||||
case SURFACE_OPENGL:
|
case SURFACE_OPENGL:
|
||||||
/* Nothing to do, it's set already */
|
/* Check if a 3D adapter is available when creating gl surfaces */
|
||||||
|
if(!This->adapter) {
|
||||||
|
ERR("OpenGL surfaces are not available without opengl\n");
|
||||||
|
HeapFree(GetProcessHeap(), 0, object->resource.allocatedMemory);
|
||||||
|
HeapFree(GetProcessHeap(), 0, object);
|
||||||
|
return WINED3DERR_NOTAVAILABLE;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SURFACE_GDI:
|
case SURFACE_GDI:
|
||||||
|
|
|
@ -2418,8 +2418,10 @@ static HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter,
|
||||||
HDC hDC;
|
HDC hDC;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* Validate the adapter number */
|
/* Validate the adapter number. If no adapters are available(no GL), ignore the adapter
|
||||||
if (Adapter >= IWineD3D_GetAdapterCount(iface)) {
|
* number and create a device without a 3D adapter for 2D only operation.
|
||||||
|
*/
|
||||||
|
if (IWineD3D_GetAdapterCount(iface) && Adapter >= IWineD3D_GetAdapterCount(iface)) {
|
||||||
return WINED3DERR_INVALIDCALL;
|
return WINED3DERR_INVALIDCALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2435,7 +2437,7 @@ static HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter,
|
||||||
object->lpVtbl = &IWineD3DDevice_Vtbl;
|
object->lpVtbl = &IWineD3DDevice_Vtbl;
|
||||||
object->ref = 1;
|
object->ref = 1;
|
||||||
object->wineD3D = iface;
|
object->wineD3D = iface;
|
||||||
object->adapter = &Adapters[Adapter];
|
object->adapter = numAdapters ? &Adapters[Adapter] : NULL;
|
||||||
IWineD3D_AddRef(object->wineD3D);
|
IWineD3D_AddRef(object->wineD3D);
|
||||||
object->parent = parent;
|
object->parent = parent;
|
||||||
|
|
||||||
|
|
|
@ -62,8 +62,11 @@ IWineD3D* WINAPI WineDirect3DCreate(UINT SDKVersion, UINT dxVersion, IUnknown *p
|
||||||
IWineD3DImpl* object;
|
IWineD3DImpl* object;
|
||||||
|
|
||||||
if (!InitAdapters()) {
|
if (!InitAdapters()) {
|
||||||
ERR("Failed to initialize direct3d adapters\n");
|
WARN("Failed to initialize direct3d adapters, Direct3D will not be available\n");
|
||||||
return NULL;
|
if(dxVersion > 7) {
|
||||||
|
ERR("Direct3D%d is not available without opengl\n", dxVersion);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3DImpl));
|
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3DImpl));
|
||||||
|
|
Loading…
Reference in a new issue