On Tue May 24 16:09:54 2022 +0000, **** wrote:
Zebediah Figura replied on the mailing list: ``` On 5/24/22 01:12, Rémi Bernon (@rbernon) wrote:
On Mon May 23 23:15:33 2022 +0000, **** wrote:
Zebediah Figura replied on the mailing list: \`\`\` On 5/23/22 07:07, Rémi Bernon wrote:
+static HRESULT asf_callback_create(struct asf_reader *filter, IWMReaderCallback **out) +{ + struct asf_callback *impl; + + if (!(impl = calloc(1, sizeof(*impl)))) + return E_OUTOFMEMORY; + + impl->IWMReaderCallback_iface.lpVtbl = &reader_callback_vtbl; + impl->filter = filter; + impl->ref = 1; + + *out = &impl->IWMReaderCallback_iface; + return S_OK; +} Can we put the IWMReaderCallback interface inside of struct asf_reader, instead of making this a separate object? \`\`\`
No, the reader will hold a ref on it and it would prevent filter destruction otherwise.
If it's the same object, the reader shouldn't be holding a reference. In fact I think they should be able to share the same refcount. ``` If it's the same object, the reader shouldn't be holding a reference. In fact I think they should be able to share the same refcount.
The reader has no way to know that and it adds a ref to the callback interface as it should. I don't think we should decref ourselves after calling IWMReader_Open, that sounds pretty ugly. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/116#note_1159