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