示例#1
0
文件: view.c 项目: austin987/wine
static void STDMETHODCALLTYPE d3d10_rendertarget_view_GetResource(ID3D10RenderTargetView *iface,
        ID3D10Resource **resource)
{
    struct d3d10_rendertarget_view *This = (struct d3d10_rendertarget_view *)iface;
    IWineD3DResource *wined3d_resource;
    IUnknown *parent;
    HRESULT hr;

    TRACE("iface %p, resource %p\n", iface, resource);

    hr = IWineD3DRendertargetView_GetResource(This->wined3d_view, &wined3d_resource);
    if (FAILED(hr))
    {
        ERR("Failed to get wined3d resource, hr %#x\n", hr);
        *resource = NULL;
        return;
    }

    parent = IWineD3DResource_GetParent(wined3d_resource);
    hr = IUnknown_QueryInterface(parent, &IID_ID3D10Resource, (void **)&resource);
    IWineD3DResource_Release(wined3d_resource);
    if (FAILED(hr))
    {
        ERR("Resource parent isn't a d3d10 resource, hr %#x\n", hr);
        *resource = NULL;
        return;
    }
}
示例#2
0
文件: resource.c 项目: devyn/wine
static ULONG WINAPI IDirect3DResource9Impl_Release(LPDIRECT3DRESOURCE9 iface) {
    IDirect3DResource9Impl *This = (IDirect3DResource9Impl *)iface;
    ULONG ref = InterlockedDecrement(&This->ref);

    TRACE("(%p) : ReleaseRef to %d\n", This, ref);

    if (ref == 0) {
        IWineD3DResource_Release(This->wineD3DResource);
        HeapFree(GetProcessHeap(), 0, This);
    }
    return ref;
}