Module: wine Branch: master Commit: d5c2a358b716a6a469cad3425d05c43ccf568795 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d5c2a358b716a6a469cad3425d...
Author: Andrew Nguyen anguyen@codeweavers.com Date: Sun Jul 18 16:26:33 2010 -0500
ddraw: Return a failure code in IDirectDrawSurfaceImpl::QueryInterface if IDirect3D7::CreateDevice fails.
---
dlls/ddraw/surface.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index ef7b381..e64ef3a 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -118,10 +118,15 @@ IDirectDrawSurfaceImpl_QueryInterface(IDirectDrawSurface7 *iface, /* Call into IDirect3D7 for creation */ IDirect3D7_CreateDevice((IDirect3D7 *)&This->ddraw->IDirect3D7_vtbl, riid, (IDirectDrawSurface7 *)This, &d3d);
- *obj = d3d ? (IDirect3DDevice *)&((IDirect3DDeviceImpl *)d3d)->IDirect3DDevice_vtbl : NULL; - TRACE("(%p) Returning IDirect3DDevice interface at %p\n", This, *obj); + if (d3d) + { + *obj = (IDirect3DDevice *)&((IDirect3DDeviceImpl *)d3d)->IDirect3DDevice_vtbl; + TRACE("(%p) Returning IDirect3DDevice interface at %p\n", This, *obj); + return S_OK; + }
- return S_OK; + WARN("Unable to create a IDirect3DDevice instance, returning E_NOINTERFACE\n"); + return E_NOINTERFACE; } else if (IsEqualGUID( &IID_IDirect3DTexture, riid ) || IsEqualGUID( &IID_IDirect3DTexture2, riid ))