2016-04-25 23:10 GMT-06:00 Nikolay Sivov bunglehead@gmail.com:
On 26.04.2016 7:57, Alex Henrie wrote:
2016-04-25 22:21 GMT-06:00 Nikolay Sivov bunglehead@gmail.com:
On 26.04.2016 6:10, Alex Henrie wrote:
static HRESULT WINAPI TimelineObj_GetTimelineNoRef(IAMTimelineObj *iface, IAMTimeline **timeline) {
- /* MSDN says that this function is "not supported" */ TimelineObjImpl *This = impl_from_IAMTimelineObj(iface);
- FIXME("(%p)->(%p): not implemented!\n", This, timeline);
- return E_NOTIMPL;
- TRACE("(%p)->(%p)\n", This, timeline);
- if (!timeline) return E_POINTER;
- return E_NOINTERFACE;
}
This looks like a call to QI, according to your tests.
It looks that way, but which interface would it be querying? The tests show that an IAMTimelineObj cannot double as an IAMTimeline, nor is the function supposed to return the IAMTimeline that was used to create the IAMTimelineObj. My best guess is that Microsoft never bothered implementing this function properly and so whatever implementation they have always winds up returning E_NOINTERFACE.
Yes, return type is IAMTimeline, so I was suggesting a shortcut doing same thing in one line IAMTimelineObj_QueryInterface(iface, &IID_IAMTimeline, ...). This should cover for setting out pointer to NULL, returning E_NOINTERFACE, and probably handling NULL case too, though it's not a standard QI behavior. None of that is actually important, what you did is fine, take it as a suggestion, or don't.
OK, I see what you mean now, and I'll make that change in version 2 of this patchset.
As always, you can see my most up-to-date work at https://github.com/alexhenrie/wine/commits/master.
Andrew: Don't bother signing off any of these patches. Just tell me if you want timelineobj.c merged into timeline.c, and any other comments you have. After that I will resubmit all 5 patches with the new tests etc. that Nikolay suggested.
-Alex