st/nine: Improve Surface GetContainer
authorAxel Davy <davyaxel0@gmail.com>
Fri, 12 Mar 2021 14:07:45 +0000 (15:07 +0100)
committerMarge Bot <eric+marge@anholt.net>
Wed, 14 Apr 2021 08:33:13 +0000 (08:33 +0000)
Prevents a crash in wine tests. Not sure
this behaviour is the correct one, but at
least it'll check the IID passed is the device
before returning it.

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Acked-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10160>

src/gallium/frontends/nine/surface9.c

index e040aed..52a3f24 100644 (file)
@@ -339,15 +339,10 @@ NineSurface9_GetContainer( struct NineSurface9 *This,
 
     if (!ppContainer) return E_POINTER;
 
-    /* Return device for OffscreenPlainSurface, DepthStencilSurface and RenderTarget */
-    if (!NineUnknown(This)->container) {
-        *ppContainer = NineUnknown(This)->device;
-        NineUnknown_AddRef(NineUnknown(*ppContainer));
-
-        return D3D_OK;
-    }
-
-    hr = NineUnknown_QueryInterface(NineUnknown(This)->container, riid, ppContainer);
+    /* Use device for OffscreenPlainSurface, DepthStencilSurface and RenderTarget */
+    hr = NineUnknown_QueryInterface(NineUnknown(This)->container ?
+                                        NineUnknown(This)->container : &NineUnknown(This)->device->base,
+                                    riid, ppContainer);
     if (FAILED(hr))
         DBG("QueryInterface FAILED!\n");
     return hr;