Re: [PATCH 6/7] d3drm: Implement IDirect3DRMViewport*::Init.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Am 2016-06-24 um 22:49 schrieb Aaryaman Vasishta:
+ if (FAILED(hr = IDirect3DRMDevice_QueryInterface(device, &IID_IDirect3DRMDevice3, (void **)&device3))) + return hr; + + if (FAILED(hr = IDirect3DRMFrame_QueryInterface(camera, &IID_IDirect3DRMFrame3, (void **)&camera3))) + { + IDirect3DRMDevice3_Release(device3); + return hr; + } + IDirect3DRMDevice_Release(device); + IDirect3DRMFrame_Release(camera); + + return d3drm_viewport2_Init(&viewport->IDirect3DRMViewport2_iface, device3, camera3, x, y, width, height); This has the same problem as the first version of your frame thunks: You get "device3", but then you release "device", to which you don't hold a reference.
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJXcFfoAAoJEN0/YqbEcdMweH8P/RBg+lEvXxGES0C1Uo5aN6Ht E0TOftji/AaGrVcaoHLWMsl30/GUpmh+iRdM19ZHwL0vey3yKKdTmFlt4tMrG5aP LLHLlxRqcJt1h+MREvMYb7JJjCAMcR/2Bn63nxWZpZ+PncQo1H90ZsBHCrd4Y707 JukrA3QfPm9cyXiX/ER8cj7QgpnNsk5y8ZXgbdtDDGOzShf2OSoslU5ivQQsmZ4W 2fiJWOeWdpi3P9Fh6EUTDOwUf5Rnj7mBYb3KFASc9o0VZXHuI/f35LGG9AdNkSxs lf6RbPDcXxPQqUxlz0VnmS/31/oGb0pDczESx+alDU9n29tWPANY+yBGUmDStyJ0 /RHl2qpZJMs/lQpk9UQ/RpvuVdZfLVxgftqyZuoWT4EfW5iseOlCytmsJEG1AVpd BKAMFRbueGhPYfUcuLAH1GL4keRg7P3QUd36MlR0wWVdYGtMWrbQL+6SrHT6r75C QmXU9mTJMTleA/Yzskenm71Tz9/wbwavYjUMaEQp3+7OKrG0Zqnt4foh2GpNUT+6 M7jxfSSng4+irWvxf3ZKdpjfGNHRn1ZhRKrEpxKQptiGlFvYSMDy7tHtyybK2MbB h8CO19YAzcVjfFHj5sRSYtZIHdVm5aG5FJLfVm9UPBA7xT2l9b6EgqXEhLTVLYC6 /TSyEFgT5j+DkKf6DCm+ =0tcs -----END PGP SIGNATURE-----
On Monday, June 27, 2016, Stefan Dösinger <stefandoesinger(a)gmail.com> wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Am 2016-06-24 um 22:49 schrieb Aaryaman Vasishta:
+ if (FAILED(hr = IDirect3DRMDevice_QueryInterface(device, &IID_IDirect3DRMDevice3, (void **)&device3))) + return hr; + + if (FAILED(hr = IDirect3DRMFrame_QueryInterface(camera, &IID_IDirect3DRMFrame3, (void **)&camera3))) + { + IDirect3DRMDevice3_Release(device3); + return hr; + } + IDirect3DRMDevice_Release(device); + IDirect3DRMFrame_Release(camera); + + return d3drm_viewport2_Init(&viewport->IDirect3DRMViewport2_iface, device3, camera3, x, y, width, height); This has the same problem as the first version of your frame thunks: You get "device3", but then you release "device", to which you don't hold a reference.
Right, I should probably release device3 after calling d3drm_viewport2_init. Cheers, Aaryaman
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Am 2016-06-27 um 08:28 schrieb Aaryaman Vasishta:
Right, I should probably release device3 after calling d3drm_viewport2_init. Either that, or use &impl->IDirect3DRMFrame3_iface, like you ended up doing in the other thunks.
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJXcZtsAAoJEN0/YqbEcdMwWjsP/AgY9ZHw1ENZgSl6rI0rH/nK ShjAi/GXt+pe88eniSr9GbxwYB705mzpHkyuOsIHYJ7yei6vvT0BMO/tOE5YXeJ5 g8mcYPoyVokiOAakOF565TSRaebq/vtofkpDZ/JPu61IfsAnhS1z6XXxYsCk9FlQ z0lVJ80CbG+giW9bgEVMJUX52QXMbDiiibNRllMwbxSUr4OyWGeWH7rFqhDmAwPU 43fu4GDQJIkZB1FxlIRyCHKBAQLC7rMAL5ZJnlzhCGrtOGyLGGFCa0Fau3JKZcDj FlBUC3tsRcEYeXtoP23fakfOTCFXAZneG9SyI92mQVev2W3TvvG3Y9UHrkH2soX1 k1covDiwAqybmaf0ukhdVrLWmoJ80wa11Ap2bCO7yiQd7ZDCllDL/1bSm4wC4UM8 qeC/5p9A31XRv2PqlypdpQL0DBBE8qQqefXwpre2iz8CYtxmxAYJunp3eqHmQU8V EkZSEPOjrtVksfBsq+GsxVp9MVaX1tTQ4LyxklNEZBpB8JW2VkrA3k8CVfu/Mj7J 3kMNhxqNidkZ/X81w/Rc1N9tb8iog4l33oyH1A1AdYY8gac+pFix5RnpqieEF5eP ylxLWGdfbi2PKwmrLClXAl/35aT4RjW25A6J9Zo6J6KdkRP/2+f6NCUHNamRwI71 0xCfTkpqWVaBaJPsNmnE =vWv2 -----END PGP SIGNATURE-----
On Tue, Jun 28, 2016 at 3:02 AM, Stefan Dösinger <stefandoesinger(a)gmail.com> wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
Am 2016-06-27 um 08:28 schrieb Aaryaman Vasishta:
Right, I should probably release device3 after calling d3drm_viewport2_init. Either that, or use &impl->IDirect3DRMFrame3_iface, like you ended up doing in the other thunks.
Getting IDirect3DRMFrame3_impl would require making impl_from_IDirect3DRMFrame in order to get the struct. I'm fine with doing this as it avoids usage of QI. But for device3 you'd have to move both the struct declaration and avoid use of *_from_impl then, I think it's best left to be done in a separate patch later on.
Cheers, Aaryaman
participants (2)
-
Aaryaman Vasishta -
Stefan Dösinger