[PATCH 2/5] ddraw: The texture interfaces can't be queried from version 7 surfaces.

Henri Verbeet hverbeet at codeweavers.com
Sun Apr 1 06:12:02 CDT 2012


---
 dlls/ddraw/surface.c |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index 0109449..d8c43a1 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -222,21 +222,21 @@ static HRESULT WINAPI ddraw_surface7_QueryInterface(IDirectDrawSurface7 *iface,
         return E_NOINTERFACE;
     }
 
-    if (IsEqualGUID( &IID_IDirect3DTexture2, riid)
-            || IsEqualGUID(&IID_IDirect3DTexture, riid))
+    if (This->version != 7)
     {
-        if (IsEqualGUID( &IID_IDirect3DTexture, riid ))
+        if (IsEqualGUID(&IID_IDirect3DTexture2, riid))
         {
-            *obj = &This->IDirect3DTexture_iface;
-            TRACE(" returning Direct3DTexture interface at %p.\n", *obj);
+            IDirect3DTexture2_AddRef(&This->IDirect3DTexture2_iface);
+            *obj = &This->IDirect3DTexture2_iface;
+            return S_OK;
         }
-        else
+
+        if (IsEqualGUID( &IID_IDirect3DTexture, riid ))
         {
-            *obj = &This->IDirect3DTexture2_iface;
-            TRACE(" returning Direct3DTexture2 interface at %p.\n", *obj);
+            IDirect3DTexture2_AddRef(&This->IDirect3DTexture_iface);
+            *obj = &This->IDirect3DTexture_iface;
+            return S_OK;
         }
-        IUnknown_AddRef( (IUnknown *) *obj);
-        return S_OK;
     }
 
     WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
-- 
1.7.3.4




More information about the wine-patches mailing list