On 31 August 2015 at 00:25, Stefan Dösinger stefan@codeweavers.com wrote:
wined3d_surface = wined3d_surface_from_resource(wined3d_resource); surface_impl = wined3d_surface_get_parent(wined3d_surface);
This works, but it's a bit silly. You can just use wined3d_resource_get_parent().
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c index ce09450..cfc1a09 100644 --- a/dlls/dxgi/swapchain.c +++ b/dlls/dxgi/swapchain.c @@ -152,13 +154,15 @@ static HRESULT STDMETHODCALLTYPE dxgi_swapchain_GetBuffer(IDXGISwapChain *iface,
EnterCriticalSection(&dxgi_cs);
- if (!(backbuffer = wined3d_swapchain_get_back_buffer(This->wined3d_swapchain,
if (!(texture = wined3d_swapchain_get_back_buffer(This->wined3d_swapchain, buffer_idx, WINED3D_BACKBUFFER_TYPE_MONO))) { LeaveCriticalSection(&dxgi_cs); return DXGI_ERROR_INVALID_CALL; }
resource = wined3d_texture_get_sub_resource(texture, 0);
backbuffer = wined3d_surface_from_resource(resource); parent = wined3d_surface_get_parent(backbuffer); hr = IUnknown_QueryInterface(parent, riid, surface); LeaveCriticalSection(&dxgi_cs);
And here you don't even need the sub-resource, because you want the (d3d11) texture in the first place. I.e., you can just use wined3d_texture_get_parent().