[PATCH 2/2] d2d1: Added support for ID2D1GdiInteropRenderTarget interface

Henri Verbeet hverbeet at gmail.com
Fri Feb 10 07:28:37 CST 2017


On 10 February 2017 at 13:00, Nikolay Sivov <nsivov at codeweavers.com> wrote:
> +static HRESULT STDMETHODCALLTYPE d2d_gdi_interop_render_target_GetDC(ID2D1GdiInteropRenderTarget *iface,
> +        D2D1_DC_INITIALIZE_MODE mode, HDC *dc)
> +{
> +    struct d2d_d3d_render_target *render_target = impl_from_ID2D1GdiInteropRenderTarget(iface);
> +    IDXGISurface1 *surface;
> +    HRESULT hr;
> +
> +    TRACE("iface %p, mode %d, dc %p.\n", iface, mode, dc);
> +
> +    if (FAILED(hr = d2d_d3d_render_target_get_surface(render_target, &surface)))
> +        return hr;
> +
> +    hr = IDXGISurface1_GetDC(surface, mode != D2D1_DC_INITIALIZE_MODE_COPY, dc);
> +    IDXGISurface1_Release(surface);
> +
> +    return hr;
> +}
> +
> +static HRESULT STDMETHODCALLTYPE d2d_gdi_interop_render_target_ReleaseDC(ID2D1GdiInteropRenderTarget *iface,
> +        const RECT *update)
> +{
> +    struct d2d_d3d_render_target *render_target = impl_from_ID2D1GdiInteropRenderTarget(iface);
> +    IDXGISurface1 *surface;
> +    HRESULT hr;
> +
> +    TRACE("iface %p, update rect %s.\n", iface, wine_dbgstr_rect(update));
> +
> +    if (FAILED(hr = d2d_d3d_render_target_get_surface(render_target, &surface)))
> +        return hr;
> +
> +    hr = IDXGISurface1_ReleaseDC(surface, update);
This discards "const".

> +    IDXGISurface1_Release(surface);
> +
> +    return hr;
> +}
> +
Should this sync/flush in case of e.g. a WIC bitmap render target?



More information about the wine-devel mailing list