On Fri, Jun 17, 2016 at 6:44 PM, Henri Verbeet <hverbeet@gmail.com> wrote:
On 17 June 2016 at 09:38, Aaryaman Vasishta <jem456.vasishta@gmail.com> wrote:
> v4: Replaced GetVisuals, GetParent and GetTransform with thunks to version 2.
>
> v3: Added version 1->3 thunks for only those frame1 methods that have tests (see test_Frame). The rest will be stubs returning E_NOTIMPL. Also avoid the use of QI in Add/DeleteChild.
>
Doesn't that potentially break currently working applications? And
while having tests is great, I'm not sure I agree with the premise
that it's better to return E_NOTIMPL than to forward to an
implementation that may have subtle differences but probably doesn't
in most cases.
I don't disagree with you. I just want an acceptable patch for this as I'll need it for implementing viewports. Also a lot of version 2 stuff uses version 1 frames as well, which makes it more important. I've CC'd Stefan in this mail, hopefully we can agree on something which works for all.

> +static HRESULT WINAPI d3drm_frame1_QueryInterface(IDirect3DRMFrame *iface, REFIID riid, void **out)
> +{
> +    struct d3drm_frame *frame = impl_from_IDirect3DRMFrame(iface);
> +
> +    TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
> +
> +    return IDirect3DRMFrame3_QueryInterface(&frame->IDirect3DRMFrame3_iface, riid, out);
> +}
This may have come up before, but any reason you can't call
d3drm_frame3_QueryInterface() directly here?
I could probably put these stubs after version 3, but wouldn't that make the version order in the file 2->3->1? Maybe a separate patch could rearrange it to 3->2->1. Maybe we could do that after these stubs are added.

Cheers,
Aaryaman