Am Donnerstag, 12. Juli 2007 06:51 schrieb Vitaliy Margolen:
Fixes bug 5920.
dlls/dinput/dinput_main.c | 467 +++++++++++++++++++++++++++--------------- dlls/dinput/dinput_private.h | 6 +- 2 files changed, 311 insertions(+), 162 deletions(-)
Did you test which interfaces can be QueryInterfaced from which interface? In theory all interfaces should be queryable from all interfaces, but in practise Microsoft violates their own COM rules in ddraw, so I'd expect them to do so in other DirectX DLLs. In DDraw we do not(yet) implement the restrictions, but we have some todo_wine tests to document it.
Stefan Dösinger wrote:
Am Donnerstag, 12. Juli 2007 06:51 schrieb Vitaliy Margolen:
Fixes bug 5920.
dlls/dinput/dinput_main.c | 467 +++++++++++++++++++++++++++--------------- dlls/dinput/dinput_private.h | 6 +- 2 files changed, 311 insertions(+), 162 deletions(-)
Did you test which interfaces can be QueryInterfaced from which interface? In theory all interfaces should be queryable from all interfaces, but in practise Microsoft violates their own COM rules in ddraw, so I'd expect them to do so in other DirectX DLLs. In DDraw we do not(yet) implement the restrictions, but we have some todo_wine tests to document it.
I didn't test all the possibilities, only 2: 1. CoCreateInstance(IDirectInput7W). QueryInterface(IDirectInput7A). 1. CoCreateInstance(IDirectInput8W). QueryInterface(IDirectInput8A).
IMHO the opposite should work too (A->W). As far as DI7<->DI8, I had to add that into the mix too, because DI8 thunks all the methods into DI7 and apps had problems with creating DI8 objects.
In the future DI7 and DI8 should probably be separate, and implemented in their respective dlls.
Vitaliy.