-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Am 2016-07-10 um 23:14 schrieb Aaryaman Vasishta:
Anyways, the vtable qi tests tests written so far show that querying IDirect3DRMObject from a particular interface will return version 1 of that interface. So technically it all comes down to calling IDirect3DRM<Interface_name>::AddDestroyCallback(&object->version1_vtable, ...);. In our implementation of this method (see d3drm_main.c), we have passed version 1 of the relevant interface while calling the destroy callbacks within d3drm_object_destroy. The tests seem to agree with that implementation so far. Well, but you can call AddDestroyCallback on the version 3 interface too:
IDirect3DRMDevice *dev1; IDirect3DRMDevice3 *dev3; dev1 = create_device(); dev3 = dev1->qi(IID_IDirect3DRMDevice3); dev1->AddDestroyCallback(...); dev3->AddDestroyCallback(...); The current code will always pass dev1 to the callback. It may be correct, it may be wrong. But yeah, we won't accidentally pass an IDirect3DRMFrame interface to the callback if AddDestroyCallback was called on a device. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJXgz5NAAoJEN0/YqbEcdMw7RAP/1am78HbnuobIjjjBJYz+pCb lOPqKNZP2+dRIbJzTpd9Jgwz8Vonishwn9B+ZF6X71neWOHFG7xGFsGFq8OvuNBO c+jSOdrd/jkHLf61pllRBOk7QykoLCFIoaIbj843xeTeseabND7bwZwXVBKt34Gb hce0wquaITIntu5UPcLVnr3ak0meaADaXETRjiFamVnAPPmmyr3WyAYenVOT9P8c 1J8UneOEzBPXUtdsc8V4S0qQfpOEo9W8t1uh0M9FndAUNZyF9k7f6TzlEkA4e6C2 JzG5TfsIKg6LWgnX+WmGZ4ByZVfzdA/x0kWu7t0Gp9Wbb28rPMWs4yF2IU5uAw1q lHWIutHmmDCC7sxdyOOYp28ej1pxO3g23INynyUB3GTwAGyX2v/F+5a7Ge19IP1d 8A93T1id4ZZLzhF13oWHqFPhLLa1uoeAg0bpiXrC9SodK3x6YKrdBK/n/fyrHY3j 8fSrYBQwCt0ojV4Y7mqEZpG7M3+2asis26BdpaHGemcAlqEOThQOiIJiuvw/loWZ wkBGrzz5nkL6wTZHioPGCBkLm1vgD5H1N+wyYWDXQ2Adm+fgp7xP+VMMZ+66obCk CQgork1bnSkBsMWvafaGHim3+pbJdMXK1dbE3RjjdwC5bz2UsT2AxqH4ldJXEjxe gf+UMdoIzcyXS68E+Bpb =vqhG -----END PGP SIGNATURE-----