Andrew Nguyen : ddraw: Return a failure code in IDirectDrawSurfaceImpl:: QueryInterface if IDirect3D7::CreateDevice fails.
Alexandre Julliard
julliard at winehq.org
Mon Jul 19 11:05:35 CDT 2010
Module: wine
Branch: master
Commit: d5c2a358b716a6a469cad3425d05c43ccf568795
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d5c2a358b716a6a469cad3425d05c43ccf568795
Author: Andrew Nguyen <anguyen at 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 ))
More information about the wine-cvs
mailing list