-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Am 2016-05-13 um 22:21 schrieb Aaryaman Vasishta:
> static HRESULT WINAPI d3drm_texture1_InitFromFile(IDirect3DRMTexture *iface, const char *filename)
> {
> - FIXME("iface %p, filename %s stub!\n", iface, debugstr_a(filename));
> + struct d3drm_texture *texture = impl_from_IDirect3DRMTexture(iface);
> + D3DRMIMAGE *image;
> + HRESULT hr;
>
> - return E_NOTIMPL;
> + TRACE("iface %p, filename %s.\n", iface, debugstr_a(filename));
> +
> + if (texture->image)
> + {
> + /* d3drm intentionally leaks a reference IDirect3DRM if texture is already initialized. */
> + IDirect3DRM_AddRef(texture->d3drm);
> + return D3DRMERR_BADOBJECT;
> + }
> + if (FAILED(hr = d3drm_texture_load(texture, filename, FALSE, &image)))
> + return hr;
> +
> + hr = IDirect3DRMTexture3_InitFromImage(&texture->IDirect3DRMTexture3_iface, image);
I think you forgot to remove the extra check here :-) . (https://www.winehq.org/pipermail/wine-devel/2016-May/113212.html)
> - IDirect3DRM_AddRef(texture->d3drm);
> + if (texture->d3drm)
> + IDirect3DRM_AddRef(texture->d3drm);
This if check looks like it is an accidental leftover from before you reordered patch 1 too.